GraphQL API 흐름

GraphQL 실행 구조

GraphQL은 REST 대체 문법이 아니라 스키마 계약, Resolver 경계, 데이터 조회 최적화, 필드 권한 검사를 함께 설계하는 API 실행 모델입니다.

01

Schema 정의

Query, Mutation, Type, Input으로 클라이언트가 요청 가능한 계약을 제한합니다.

schema
02

요청 검증

필드 존재, 변수 타입, depth, complexity를 확인해 과도한 쿼리를 막습니다.

validate
03

Resolver 호출

각 필드는 parent, args, context를 받아 도메인 서비스나 DB 조회로 연결됩니다.

resolver
04

DataLoader 묶기

같은 요청 안의 반복 관계 조회를 batch와 cache로 묶어 N+1을 줄입니다.

batch
05

응답 조립

data와 errors를 GraphQL 형식으로 반환하되 내부 오류와 민감 정보를 숨깁니다.

response
Auth
필드 단위 권한 타입 접근이 가능해도 특정 필드나 리소스 소유권은 Resolver에서 다시 확인해야 합니다.
context 활용
Pagination
큰 목록 제한 Connection, cursor, limit을 둬 한 요청이 전체 테이블을 읽지 않게 합니다.
정렬 기준 고정
N+1
관계 조회 폭증 사용자 목록과 각 사용자 주문처럼 중첩 필드가 반복 쿼리를 만들기 쉽습니다.
DataLoader

API 품질 기준

쿼리 제한 depth와 complexity 제한 없이 공개하면 작은 요청이 큰 부하가 될 수 있습니다.
오류 형식 사용자 오류와 서버 오류를 구분하고 스택트레이스를 노출하지 않습니다.
스키마 변경 필드 삭제와 타입 변경은 클라이언트 호환성을 고려해 단계적으로 진행합니다.