콘텐츠로 바로가기

GraphQL vs REST

두 API 패러다임의 설계 철학 차이. 선택은 팀 규모·클라이언트 다양성·쿼리 복잡도에 달려 있다. GraphQL의 리졸버 구조상 관계 데이터 조회 시 N+1 쿼리 발생 위험.

sys.entry
M

Me

hyunyoun's Blog

software-engineering-devops1 min read

GraphQL vs REST

두 API 패러다임의 설계 철학 차이. 선택은 팀 규모·클라이언트 다양성·쿼리 복잡도에 달려 있다.

핵심 차이

항목 REST GraphQL
엔드포인트 리소스별 N개 단일 (/graphql)
데이터 형태 서버가 결정 클라이언트가 결정
Over-fetching 발생 가능 없음
Under-fetching N+1 요청 필요 단일 쿼리로 해결
캐싱 HTTP 캐싱 자연 지원 복잡 (Persisted Query 필요)
타입 시스템 OpenAPI로 선택적 스키마가 필수

REST가 유리한 경우

  • 단순 CRUD, 리소스 관계가 단순
  • HTTP 캐싱을 최대한 활용
  • 팀이 GraphQL 학습 비용을 감당하기 어려울 때
  • Public API (캐싱·버저닝 용이)

GraphQL이 유리한 경우

  • 클라이언트(웹/앱/파트너)마다 필요한 데이터 형태가 다를 때
  • 복잡한 연관 데이터를 한 번에 조회
  • 빠른 프론트엔드 이터레이션 (BFF 없이 자체 쿼리)

N+1 문제

GraphQL의 리졸버 구조상 관계 데이터 조회 시 N+1 쿼리 발생 위험. DataLoader 패턴으로 배치 처리하여 해결.

연결 노트