GraphQL을 3분만에 이해하는 가이드
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
웹 개발 초보자, API 설계에 관심 있는 개발자
핵심 요약
- GraphQL의 핵심 장점:
- no over-fetching
및 no under-fetching
으로 필요한 데이터만 정확히 전달 (예: query { user(id: 123) { name posts { title } } }
)
- 자체 문서화 기능 (Schema
로 API 구조 명시)
- GraphQL의 한계:
- 캐싱 복잡화 (Apollo Client
등 도구 필요)
- N+1 queries
문제 (예: 1개 쿼리로 100개 DB 호출 가능성)
- 적용 시기:
- 복잡한 데이터 관계, 실시간 기능, 다중 클라이언트 지원이 필요한 경우
섹션별 세부 요약
1. REST의 문제점
- 다중 요청 문제:
- 사용자 정보, 게시글, 팔로워 정보를 얻기 위해 /users/123
, /users/123/posts
, /users/123/followers
3번의 API 호출 필요
- 성능 저하 (모바일 앱에서 특히 심각)
2. GraphQL의 개념
- 단일 엔드포인트:
- query { user(id: 123) { name posts { title } } }
하나의 요청으로 데이터 확보
- 사용자 정의 응답 가능 (필요한 필드만 선택)
- 스키마 기반 설계:
- type User { id: ID! name: String! posts: [Post!]! }
- 필수 필드(!
), 배열([]
) 등 타입 정의 명시
3. GraphQL의 장단점
- 장점:
- 자체 문서화: 스키마를 통해 API 구조 자동 제공
- 다중 클라이언트 지원: 웹/모바일에서 동일 API 활용 가능
- 단점:
- 캐싱 복잡성: Apollo Client 등 도구 필요
- N+1 쿼리 문제: 잘못된 쿼리로 인해 성능 저하 가능성
결론
- GraphQL 적용 시 고려사항:
- 복잡한 데이터 관계, 실시간 기능 필요 시 유리
- Apollo Client 등 캐싱 도구 사용 필수
- 스키마 설계에 신중하게 접근해야 함 (예: type User { ... }
명확히 정의)