Web Basic · GraphQL

GraphQL 스키마와 쿼리 비용

GraphQL은 REST보다 새롭다는 이유로 쓰는 API가 아니라, 클라이언트가 필요한 필드를 선언하고 서버가 스키마를 통해 타입과 접근 경계를 제공하는 방식이다.

01

스키마 모델링

클라이언트 화면이 필요한 타입과 관계를 명시적으로 정의한다.

02

쿼리 작성

클라이언트는 한 요청에서 필요한 필드만 선택해 가져온다.

03

리졸버 실행

서버는 필드별 resolver를 호출해 데이터 소스를 조합한다.

04

비용 통제

depth limit, complexity, batching, caching으로 과한 쿼리를 막는다.

REST
리소스 endpoint URL과 method로 리소스 작업을 표현
단순 CRUD와 캐시에 강함
GraphQL
타입 중심 API 필드 선택과 관계 탐색을 클라이언트가 선언
쿼리 비용 통제가 필수
Resolver
필드 데이터 공급 DB, API, cache에서 값을 가져와 반환
N+1 방지 필요
Mutation
상태 변경 입력 타입과 반환 타입으로 변경 결과를 계약화
권한과 validation은 서버에서

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

스키마 타입 이름과 필드 의미가 화면이 아니라 도메인 기준으로 정리돼 있다.
N+1 관계 필드 조회가 요청 수 폭증으로 이어지지 않는다.
보안 introspection, depth, rate limit 정책을 환경별로 정했다.
캐시 클라이언트 normalized cache와 서버 캐시 전략을 구분한다.