Web Basic · GraphQL

GraphQL을 스키마와 쿼리 비용으로 평가하기

GraphQL은 REST보다 새로워서 쓰는 API가 아니라, 클라이언트가 필요한 필드를 선언하고 서버가 타입 스키마와 비용 통제를 제공하는 방식이다.

01

스키마 모델링

화면별 응답이 아니라 도메인 타입과 관계를 기준으로 필드를 정의한다.

02

쿼리 작성

클라이언트는 필요한 필드만 선택해 한 요청에 담는다.

03

리졸버 실행

서버는 필드별 resolver로 DB와 외부 API에서 값을 가져온다.

04

비용 제한

depth limit, complexity, batching, caching으로 과한 요청을 막는다.

REST
리소스 endpoint URL과 method로 작업 의미를 표현
HTTP 캐시에 강함
GraphQL
타입 중심 필드 선택과 관계 탐색을 클라이언트가 선언
비용 통제 필수
Resolver
데이터 공급 필드별로 값을 계산하거나 조회
N+1 위험
Mutation
상태 변경 입력 타입과 반환 타입으로 변경 결과 계약화
권한과 검증 필요

스키마 · N+1 · 보안 점검

스키마 필드 의미가 화면 임시 요구에만 묶이지 않는다.
N+1 관계 조회가 요청 수 폭증을 만들지 않는다.
보안 depth, introspection, rate limit 정책이 있다.
캐시 클라이언트 cache와 서버 cache 전략을 구분한다.