Schema-first vs Code-first

효딩딩·2022년 10월 25일
0

Schema First 란?

  • Nest는 GraphQL 애플리케이션을 빌드 하는데 코드 우선 및 스키마 우선 등 두가지 방법을 제공함
  • 스키마 우선에서는 스키마를 작성하기 위해서 데이터 모델을 만들어여야 하는데 이를 나타내기 위해 SDL을 사용한다 (SDL은 Schema Definition Language의 약자이며 graphQL의 스키마 정의를 위해 지원하는 언어)

Schema First 의 장단점

장점

  • 비동기식 개발 가능
  • 확실한 의사소통의 수단
  • SDL을 제외한 문서가 필요 없음

단점

  • SDL과 resolver간의 일치성이 보장되지 않음
  • run time에서만 알 수 있는 단점
  • 스키마가 늘어날 수록 예기치 못한 실수가 발생할 수 있음

Code First 란?

  • 코드 우선(Code First) 방식은 resolver를 먼저 작업함으로서 시작하게됨
  • 그리고 그 코드로 부터 스키마를 생성하게 됨
  • 그렇기 때문에 스키마를 갖게 되지만 수동적으로 생성하지 않고 스크립트를 통해 생성하게 됨

Code First 의 장단점

장점

  • 스키마와 resolver간의 일치성이 보장됨
  • 자신이 편한 언어로 개발 가능
  • 코드 중복이 최소화 됨

단점

  • 스키마를 이해하기 쉽지 않을 수 있음

출처:
https://velog.io/@zoeyul/Graphql-code-first-vs-schema-first
https://velog.io/@ko1586/Schema-first-vs-Code-first
https://veritasgarage.tistory.com/177
https://velog.io/@uiop5487/Schema-first-vs-Code-first


(영문 해석)

When creating a GraphQL server there are two artifacts required by the GraphQL engine: a schema, which defines all the types and fields, and the resolvers, which are the collection of functions that are called to return the data for those types.

Schema-First

  • Schema-first, or SDL-first, is one of the more common approaches to creating a GraphQL server.
  • It requires that you define the schema in the Schema Definition Language (SDL) and also write the resolvers that execute and return data at runtime.

This pattern is popular in languages that do not have a type system, like JavaScript, because the GraphQL engine is providing this API type-safety for us. It is also the pattern used by many popular GraphQL servers, like apollo-server, which adds to the exposure of the pattern, as new GraphQL developers will likely see this pattern first when learning GraphQL for the first time.

Code-First

  • Code-only, or code-first, is an approach where you only need to write the resolvers for the GraphQL server and a build tool can compile the schema and SDL based on the types or annotations included in the code.

This is more common in type-safe languages, such as graphql-kotlin, where you can run reflections against source code, however, it can be used by any GraphQL server language.

Source:
https://blog.graphqleditor.com/graphql-schemafirst-codefirst
https://blog.logrocket.com/code-first-vs-schema-first-development-graphql/
https://www.apollographql.com/blog/backend/architecture/schema-first-vs-code-only-graphql/

profile
어제보다 나은 나의 코딩지식

0개의 댓글