GraphQL 개념잡기 – tech.kakao.com
Source
Evernote/Inbox/GraphQL 개념잡기 – tech.kakao.com.md
Summary
GraphQL 은 페이스북에서 개발한 쿼리 언어로, 웹 클라이언트가 서버로부터 필요한 데이터만 효율적으로 가져오도록 설계되었습니다. REST API 와 달리 단일 엔드포인트를 사용하며, 클라이언트가 요청하는 데이터 구조에 맞춰 응답을 반환합니다. 주요 구성 요소는 쿼리/뮤테이션, 스키마/타입, 리졸버로, 리졸버를 통해 다양한 데이터 소스(DB, 파일, 외부 API 등)를 통합할 수 있습니다. 클라이언트와 서버 간 협업 효율성을 높이고, N+1 문제 해결 및 데이터 과부하/부족 문제를 방지하는 장점이 있습니다.
Key Points
- GraphQL 은 웹 클라이언트 중심의 데이터 조회를 위한 쿼리 언어로, SQL 과는 목적과 사용 주체가 다름
- REST API 대비 단일 엔드포인트 사용, 클라이언트 주도 데이터 선택, 한 번의 호출로 다중 데이터 조회 가능
- 쿼리(읽기)와 뮤테이션(변조)은 개념적 구분이며, 오퍼레이션 네임과 변수를 통해 동적 쿼리 구성 가능
- 스키마는 타입과 필드를 정의하며, !는 필수값, []는 배열을 의미하는 등 정적 타입 시스템과 유사
- 리졸버는 각 필드별 데이터 가져오기 로직을 구현하며, DB, 파일, 외부 API 등 다양한 소스 통합 가능
- 리졸버 호출은 DFS 방식으로 이루어져 그래프 구조의 데이터 관계를 효율적으로 처리 가능
- 클라이언트-서버 간 API 형식 의존도 감소, 스키마 기반 협업으로 개발 효율성 향상