2019. 12. 27. 00:12ㆍOS & 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 공식 홈페이지를 보시면
위 이미지와 같이 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
제가 사용해본 느낌으로썬 굳이
Schema를 정의하는것은 결국 RDBMS에서 Database Table을 설계하는 것과 별반 차이가 없었습니다.
오히려 datamodel.prisma 를 수정해서 schema를 수정할 경우
graphql-yoga에서 사용하기 위해 떼어낸 (안 떼어내고 처리하는 분도 많습니다만 가독성이 떨어집니다.)
schema.graphql을 수정해서 반영하고
apollo-server에서 이를 처리하기 위한 로직을 구현
DRF(Django Rest Framework) REST-API
- Database Table 수정
- models.py 수정
- Code수정
Prisma GraphQL Stack
- datamodel.prisma 수정
- schema.graphql 수정
- Code수정
ㅇ? 똑같네요 ㅈㅅ
하지만 문제는 여기서 끝나지 않았습니다.
저는 여태 prisma2의 존재를 알고 있었지만... prisma 1.34로 개발하고 있었는데
prisma 1.x 에서는 업데이트는 진행하되 더 이상의 추가되는 기능은 없을 것이다.라고 prisma 측에서 언급되어
저도 빠르게 손절하고 prisma 2.*로 진화해야 할 것 같네요.
prisma2는 기존 prisma의 고질적 문제점 개선이 이루어지고 프레임워크라고 칭하며
스택이 바뀌었는데 이는 다음 시간에 알아보도록 하죠!
'OS & Server > Prisma' 카테고리의 다른 글
양키와 Prisma2(프리즈마) 시작하기 #.02 NVM으로 Nodejs 설치 하기 (0) | 2020.01.05 |
---|---|
양키와 Prisma2(프리즈마) 시작하기 #.01 Database 설치 (0) | 2020.01.01 |
Prisma2? Prisma1이랑 무슨 차이인지 알아봤습니다. (0) | 2019.12.31 |