안녕하세요, 이번에 GraphQL로 백엔드 이전작업을 하게 되었는데요! 기존에 NestJS...
# 질문
e
안녕하세요, 이번에 GraphQL로 백엔드 이전작업을 하게 되었는데요! 기존에 NestJS를 사용하던 스택이지만, 다른 라이브러리도 같이 고려해보고 싶은 마음에 GraphQL 백엔드 라이브러리 추천을 좀 부탁드려봅니다!
h
어떤 종류의 라이브러리를 찾으시는지 잘 모르겠습니다.
e
Nexus, TypeGraphQL 등 framework를 알아보고 있었어요
t
TypeORM 등의 ORM 정의와 GraphQL 스키마 선언은 따로 분리하시길 강력히 권해드립니다 ㅎㅎ 아무래도 ORM 정의랑 스키마 선언이 붙어있다보면 스키마 선언과 실제 구현이 붙어다니게 되는데요 ㅠ 구현 이전에 스키마 리뷰를 통한 팀내 개발자 (특히 프론트엔드) 와의 원활한 생각 Sync를 위해서 분리를 추천드립니다.
u
@Tony Won 아 최근에 고민하던 내용인데, 보통 분리 하는군요…감사합니다.
t
"보통" (많은 개발자분들이) 분리하는건 아닌거같아요 ㅎㅎ 근데 저는 분리하고, 스키마 논의를 활성화하는걸 권장드리는 편이에요.
필드명이나 이런것들에 대해서 개발전에 건강하게 논의할 수 있다고 판단해서요. 예를 들면... 프론트엔드 개발자로써 API 응답에서 필드명이 이상한 경우라던지 이럴때 피드백을 드리기가 참 애매하고, 자칫잘못하면 건강하지 못한 토론이 될 경우가 생기는데, 이런걸 미리미리 설계/논의 단계에서 캐치할수있어요. ex: • FE: 이거 필드명이 좀 이상한거같아요. 이게 더 낫지 않아요? • BE: ;;; (이미 DB 마이그레이션 까지 다 돌려놓고 올려놨는데...) 음... 바꾸기가 좀 힘들어서... 그냥 가시죠 • FE: 그래도 이건 아닌거 같아요. • BE: ...음....
😅 4
👍 2
u
저같은 경우에는 graphql 스키마와 prisma model 스키마를 동기화하는 것이 더 맞다고 생각했는데, 이렇게 되었을 때 graphql 스키마 맞추느라 불필요한 데이터가 클라이언트까지 가게 되더라구요..
👀 1
t
GraphQL을 사용하시면서 얻을 수 있는 커뮤니케이션 적인 장점이에요
불필요한 데이터가 클라이언트까지 가게 되더라구요..
이것도 맞구요
그리고 유비쿼터스 랭귀지 관점에서도 DB단과 맞닿아있는 CRUD보다는 비즈니스 랭귀지로 표현하는게 더 좋아요.
Copy code
type Mutation {
  # Don't
  updateUser(...): ...

  # Do
  registerNewEmail(...): ...
}