GraphQL 필드 계약
GraphQL의 강점은 필요한 필드 선택이고, 약점은 필드마다 숨은 비용과 권한 조건이 생긴다는 점이다.
| 계약 항목 | 확인할 내용 | 좋은 상태 | 위험 신호 |
|---|---|---|---|
| Field | 클라이언트에 공개할 이름과 의미 | 필드 목적이 schema에 드러남 | 내부 DB 컬럼을 그대로 노출 |
| Resolver cost | 필드 하나가 실행하는 조회 비용 | batch와 cache 기준 있음 | 목록 안에서 반복 DB 호출 |
| Permission | 필드와 자원별 접근 조건 | context 사용자 기준으로 검사 | 로그인만 확인하고 소유권 누락 |
| Cache | 쿼리 결과와 하위 필드 갱신 방식 | mutation 뒤 무효화 계획 | 언제 오래된 값인지 알 수 없음 |
| Mutation | 입력 타입과 실패 응답 | 검증 오류가 예측 가능 | 쓰기 작업이 query처럼 섞임 |
GraphQL 필드는 화면 편의를 위한 이름이면서 서버 비용과 권한 정책이 붙는 계약 단위다.