스키마 설계의 우선 순위 프로세스
Schema-first는 코드가 스키마에 저장된 정의를 따르도록 접근하는 방식.
장점 :
종속성 반전 원리 (DIP)를 따름으로써 더 추상적이고 덜 의존적이다.
프론트엔드 및 백엔드를 동시에 허용하여 개발 시간을 단축한다.
단점 :
스키마 정의는 리졸버와 지속적으로 동기화되어야 한다.
SDL 정의는 쉽게 재사용할 수 없으므로 코드 중복이 발생할 수 있다.
분산 스키마를 단일 스키마로 결합하는데 어려움
type User {
_id: ID!
username: String
name: String
tagline: String
}
GraphQL 스키마가 프로그래밍 방식으로 생성되는 스키마보다 코드를 우선시하는 접근 방식.
장점 :
스키마 정의와 리졸버를 모두 저장한 상태로 유지하므로 단일 정보 소스로 작동할 수 있다.
방대한 도구를 사용하지 않고도 Schema-first에서 직면하는 어려움을 쉽게 극복할 수 있다.
스키마의 복잡성이나 크기가 증가할 것으로 예상되는 경우 관리가 더 용이하다.
단점 :
resolve와 definitions가 같이 있다면 가독성이 떨어질 수 있다.
이전 버전과 호환되지 않는 변경 사항은 schema-first 접근 방식에 비해 더 쉽게 들어갈 수 있다
@Entity()
@ObjectType()
export class Board {
@PrimaryGeneratedColumn('increment')
@Field(() => Int)
number: number;
@Column()
@Field(() => String)
writer: string;
@Column()
@Field(() => String)
title: string;
@Column()
@Field(() => String)
contents: string;
}
참조 :
GraphQL for Beginners: Schema-first vs Code-first
GraphQL - schema-first vs code-first