GraphQL의 장단점과 REST API 대비 적합한 사용 사례를 설명해주세요.
답변 포인트
클라이언트가 필요한 필드를 선택할 수 있다는 점과 서버 복잡도 증가를 함께 보세요.
정답 및 해설
빠른 요약
GraphQL은 클라이언트가 필요한 데이터 구조를 query로 명시하고, 서버는 schema에 따라 응답하는 API 방식입니다. REST가 endpoint 중심이라면 GraphQL은 schema와 type 중심에 가깝습니다.
GraphQL은 클라이언트가 필요한 데이터 구조를 query로 명시하고, 서버는 schema에 따라 응답하는 API 방식입니다. REST가 endpoint 중심이라면 GraphQL은 schema와 type 중심에 가깝습니다.
장점은 over-fetching과 under-fetching을 줄일 수 있다는 점입니다. 모바일 화면에서 사용자 이름만 필요한데 REST 응답이 큰 사용자 객체 전체를 내려주는 문제를 피할 수 있습니다. 여러 리소스를 한 번의 query로 가져올 수 있어 클라이언트 개발 경험도 좋아집니다.
query {
user(id: "1") {
name
posts(limit: 3) {
title
}
}
}하지만 서버 복잡도는 올라갑니다. resolver 최적화, N+1 문제, query depth 제한, 권한 체크, 캐싱 전략을 별도로 고민해야 합니다. REST처럼 HTTP 캐시를 단순하게 적용하기도 어렵습니다.
GraphQL은 다양한 클라이언트가 서로 다른 데이터 조합을 요구하거나, 화면 변화가 빠르고 프론트엔드 주도성이 큰 제품에 잘 맞습니다. 반대로 CRUD가 단순하고 endpoint 단위 캐싱이 중요한 서비스라면 REST가 더 단순하고 운영하기 쉽습니다.