Schema-First
스키마 우선 방식은 스키마를 먼저 정의하고, 그에 따라 데이터 모델을 작성하는 방식입니다. 스키마를 작성하기 위해서는 graphql의 data model을 나타내기 위해 만들어진 SDL(Schema Definition Language)를 사용합니다.
- 스키마를 먼저 정의하면 API가 반환해야 할 데이터 구조를 미리 알 수 있으므로 클라이언트와 서버 간의 협업이 쉬워집니다.
- 스키마가 변경될 경우 이를 바탕으로 자동으로 코드를 생성할 수 있기 때문에 개발 시간을 단축할 수 있습니다.
- 스키마에 대한 명세가 작성되어 있기 때문에, 다른 개발자들과 협업할 때 명확한 규약을 제시할 수 있습니다.
- 스키마가 변경되면 이에 맞게 코드를 수정해야 하므로, 유연성이 상대적으로 떨어집니다.
- 스키마를 먼저 정의해야 하므로 개발 초기 단계에는 더 많은 시간과 노력이 필요합니다.
Code-First
코드 우선 방식은 코드를 먼저 작성하고, 이를 기반으로 스키마를 생성하는 방식입니다.
- 빠른 프로토타이핑 및 실험적인 기능 구현에 적합합니다.
- 코드를 먼저 작성하므로 개발자가 더 많은 제어력을 가집니다.
- 유연성이 높기 때문에, 변경에 대한 대처가 빠릅니다.
- 스키마를 생성하기 위해서는 코드에서 사용된 데이터를 이해하고 해석해야 하므로, 불필요한 코드나 중복 코드가 발생할 수 있습니다.
- 스키마 변경이 필요할 경우, 이를 기반으로 코드를 수정해야 하므로 개발 시간이 증가할 수 있습니다.
결론
대규모 프로젝트에서는 스키마 우선 방식이 유리할 수 있지만, 실험적인 기능을 빠르게 구현해야 하는 작은 프로젝트에서는 코드 우선 방식이 유리할 수 있습니다.