피드로 돌아가기
Dev.toBackend
원문 읽기
Over-fetching 및 Under-fetching 해결을 위한 GraphQL 기반 API 설계
Descomplicando GraphQL
AI 요약
Context
REST API 구조에서 발생하는 불필요한 데이터 수신(Over-fetching)과 다중 요청으로 인한 네트워크 오버헤드(Under-fetching) 해결 필요. 클라이언트별로 요구하는 데이터 형식이 상이함에 따라 백엔드 엔드포인트의 잦은 변경이 발생하는 한계 존재.
Technical Solution
- Schema 정의를 통한 데이터 타입 및 연관 관계의 명세화로 API 계약(Contract) 관리
- Query 기반의 정밀한 데이터 요청 구조를 통한 네트워크 페이로드 최적화
- Mutation 도입을 통한 데이터 생성, 수정, 삭제 작업의 단일 엔드포인트 통합
- Subscription 및 WebSocket 활용을 통한 실시간 이벤트 스트리밍 구조 구현
- Graph 기반의 데이터 모델링을 통한 복잡한 관계형 데이터의 단일 요청 회수 처리
- Client-driven 데이터 요청 방식을 통한 프론트엔드 개발 자율성 확보
실천 포인트
- 다수의 클라이언트(Web, Mobile)가 동일 데이터를 서로 다른 형태로 소비하는지 검토 - 데이터 간의 관계가 복잡한 Graph 구조인지 분석하여 도입 여부 결정 - HTTP Caching 효율성이 중요한 단순 API 환경인지 확인하여 REST와 비교 선택 - 팀 내 GraphQL 생태계 숙련도 및 러닝 커브 고려