Prisma 사용해본 썰 ... 추천 ㅆ가능?

2019. 12. 27. 00:12OS & Server/Prisma

Prisma는 Heroku 창업자와 GraphQL의 개발자가 합작하여 만든

Database를 GraphQL을 사용하여 쉽게 구성할 수 있고 ORM을 대체하기 위해 만들어진 Database Proxy Service입니다.

 

 

Prisma를 사용하면

  • GraphQL Schema를 기반으로 한 Database 자동생성
  • GraphQL Schema를 기반으로 ORM Client 자동생성
  • data model 또한 graphql을 사용하여 관리
  • Admin(관리자) 페이지를 통해 손쉽게 데이터 제어 가능 (근데 버그가...)
  • 러닝 커브가 생각보다 높음
  • Prisma라는 프레임워크를 통한 너무 많은 서비스들의 도입...

 

Prisma 공식 홈페이지를 보시면

https://www.prisma.io/

위 이미지와 같이 Prisma의 간단한 Architecture(아키텍처)를 보여주고 있는데,

저는 저부분 때문에 한 3일 동안 삽질했습니다...

아폴로 그림이 너무 작은 것도 문제였죠...

 

 

제가 파악한 것을 정리해서 그림으로 그려보자면

개노답 스택

이런 느낌이었죠

 

 

Prisma에서는 저 요가하는 언늬 아이콘을 graphql-yoga라고 하는데

graphql-yoga에서 갑자기 뜬금포 Apollo-Server가 튀어나오고...

Apollo-Server에서는 Database ORM을 Prisma client를 사용해서 데이터를 CRUD 하고...

정말이지 가관이었습니다.

 

여기서 Prisma Server는 관리자 페이지 같은 녀석입니다.

Apollo 서버처럼 Playground도 내장하고 있습니다!

그래서 테스트를 할 때는 Prisma Server등에 테스트를 해보고 데이터를 관리해라!

뭐 이런 느낌인 것 같은데 스스로 yoga 서버에서 정의한 거랑 결과가 다르니 어차피

prisma-server에서 playground는 조회 말곤 딱히 해볼 게 없습니다.

네 관리자 페이지 말고 쓸모가 없어요

 

 

이게 공식 홈페이지에서 보여준 아키텍처와 뭔가 많이 다른 것 같아 github에 issue를 띄웠었지만

삽질하면서 깨달았고 나중에 달린 답변을 이미 해결된 상태라 close를 시켜버렸죠...

 

 

말로 표현해보자면

 

1. Graphql-Yoga안에 Apollo-Server가 포함됨

2. Apllo-server에서는 Prisma에서 생성한 Prisma Client(ORM 대체 사실 그냥 문법도 ORM 같음..)를 사용하여 Action을 취함

 

 

 

이걸 깨달았을 때쯤 들었던 생각은

"배보다 배꼽이 더 큰데 굳이 이 많은걸 도입해가면서 써야 하나..?"
"도대체 뭐가 좋은 거지?"

 

https://gmyankee.tistory.com/251

 

GraphQL을 다들 쓰길래 제가 한번 알아봤습니다...

이 글은 제가 GraphQL을 사용해보고자 며칠 간의 삽질 결과 내린 결론을 정리해보고자 하는 글입니다. GraphQL을 시작할 때 많이들 사용되는 Back-End 단 프레임워크로 Apollo와 Yoga 그리고 Prisma가 많이 언급됩..

gmyankee.tistory.com

 

제가 사용해본 느낌으로썬 굳이

Schema를 정의하는것은 결국 RDBMS에서 Database Table을 설계하는 것과 별반 차이가 없었습니다.

 

오히려 datamodel.prisma 를 수정해서 schema를 수정할 경우

graphql-yoga에서 사용하기 위해 떼어낸 (안 떼어내고 처리하는 분도 많습니다만 가독성이 떨어집니다.)

schema.graphql을 수정해서 반영하고

apollo-server에서 이를 처리하기 위한 로직을 구현

 

DRF(Django Rest Framework) REST-API

  1. Database Table 수정
  2. models.py 수정
  3. Code수정

 

Prisma GraphQL Stack

  1. datamodel.prisma 수정
  2. schema.graphql 수정
  3. Code수정

ㅇ? 똑같네요 ㅈㅅ

 

 

 

 

하지만 문제는 여기서 끝나지 않았습니다.

저는 여태 prisma2의 존재를 알고 있었지만... prisma 1.34로 개발하고 있었는데

prisma 1.x 에서는 업데이트는 진행하되 더 이상의 추가되는 기능은 없을 것이다.라고 prisma 측에서 언급되어

저도 빠르게 손절하고 prisma 2.*로 진화해야 할 것 같네요.

 

prisma2는 기존 prisma의 고질적 문제점 개선이 이루어지고 프레임워크라고 칭하며

스택이 바뀌었는데 이는 다음 시간에 알아보도록 하죠!