Schema-first vs Code-first

훈이·2022년 10월 25일
0

Schema-First(스키마 우선)

Schema-First는 graphql의 스키마를 먼저 정의하고 스키마의 정의에 맞게 코드를 작성하는 방법이다. 스키마를 작성하기 위해서는 graphql의 데이터 모델을 나타내기 위해 만들어진 SDL을 사용하기 때문에 Schema-First라고 불린다.

참고) 스키마란? 데이터 타입의 집합이라고 할 수 있다.

참고) SDL이란? Schema Definision Language의 약자로 스키마를 정의하는 언어라고 할 수 있다.

type Dog {
	name: String!
    age: Int!
}

위의 코드를 보면 Dog 타입을 표현하는 SDL이며, name 필드는 String 타입을 가지고 age 필드는 Int 타입을 가진다. 그리고 !는 필수를 의미한다.

Schema-First의 장점

  • 프론트와 백엔드의 확실한 의사소통의 수단이된다.
  • SDL을 제외한 Document가 필요없다.
  • 빠른 mocking으로 인해 개발 속도가 빨라진다.

Schema-First의 단점

  • 리졸버와 지속적으로 동기화되어야 한다.
  • 분산 스키마를 단일 스키마로 결합하는데 어렵다.

Code-First(코드 우선)

데코레이터와 타입스크립트 클래스를 사용하여 먼저 작성한 Resolver를 기반으로 해당 graphql의 스키마를 자동 생성한다.

코드 우선의 예시

@Entity()
@ObjectType()
export class User {
  @PrimaryGeneratedColumn('uuid')
  id: string;
  
  @Column()
  @Field(()=> String)
  email: string;
  
  @Column()
  @Field(()=> String)
  password: string;
 }

Code-First의 장점

  • 스키마와 resolver간의 type safety를 보장한다.
  • 코드 중복이 최소화된다.

Code-First의 단점

  • 가독성이 떨어질 수 있다.
  • 이전 버전과 호환되지 않는 변경 사항이 있으면 Schema-First 방식보다 쉽게 들어갈 수 있다.

참고한 사이트:
https://velog.io/@zoeyul/Graphql-code-first-vs-schema-first
https://timewizhan.tistory.com/entry/GraphQL-SDL-Schema-Definition-Language
https://blog.graphqleditor.com/graphql-schemafirst-codefirst
https://velog.io/@kim_truee/Schema-first-vs-Code-first

profile
백엔드 개발자가 되자!

0개의 댓글