X

그래프QL (GraphQL)

1. 그래프QL (GraphQL)의 개념 및 특징

개념 특징
데이터 접근성 보장을 위해 서버에서 정확히 지정된 구조로 데이터를 반환하도록 필요 데이터 구조를 지정하는 데이터 질의어 – 오버페칭과 언더페칭 해결
– 하나의 엔드포인트에 여러 API 요청
– 오브젝트의 필요한 필드만 요청
– 클라이언트 로직 간결화
  • 그래프QL은 그래프(Graph)가 현실 세계의 데이터를 표현하는 적합한 방법이라는 사실에 착안하여 메타(구 페이스북)에서 만든 질의 언어이며, 소프트웨어 요소 간 커뮤니케이션 품질을 향상시켜 개발, 유지관리, 확장에 용이
  • 클라이언트-서버 구조에서 클라이언트는 종종 서버에 여러 리소스를 요청하는데, 그래프QL은 다중 요청의 복잡성을 해결해주고 필요 데이터만 응답받아 질의 효율화

 

2. 그래프QL의 동작 과정과 구성요소

(1) 그래프QL의 동작 과정

  • 그래프QL 런타임 계층에서 클라이언트의 쿼리 요청을 받아 처리하고 백엔드에서 DB 등 다른 서비스와 통신하여 결과를 응답

(2) 그래프QL의 구성요소

구분 구성요소 역할
데이터 질의 쿼리 (Query) – 데이터 읽기에 사용(R)
뮤테이션 (Mutation) – 데이터 생성/변조/삭제에 사용(CUD)
데이터 구조 스키마 (Schema) / 타입 (Type) – API를 통해 제공되는 데이터 구조 관리
스칼라 타입 (Scalar Type) – Object field값의 Scalar Type을 정의
데이터 접근 / 공유 리졸버 (Resolver) – 위치와 접근 방법 기반 외부 데이터 접근
인트로스펙션 (Introspection) – 서버에 정의된 스키마 실시간 공유
  • 그래프QL은 백엔드 서버에 부하를 주며, 리졸버를 직접 구현해야하는 단점이 있으나 프론트-백엔드 간 커뮤니케이션 품질 향상을 통해 전체적인 소프트웨어 품질 확보 가능

 

3. 그래프QL과 유사 기술 비교

(1) 그래프QL과 기존 SQL 비교

비교 항목 그래프QL 기존 SQL
목적 – 웹클라이언트가 서버의 데이터에 효율적 접근 – 데이터베이스에 효율적 접근
쿼리 생성 / 호출 – 클라이언트에서 생성 및 호출 – 백엔드에서 생성 및 호출
로직 제공 – 개발자가 로직을 구현하여 사용 – DBMS에서 제공된 로직 사용

(2) 그래프QL과 REST 장단점 비교

비교 항목 그래프QL REST
장점 – 효율적 데이터 요청, 유연한 쿼리
– 단일 엔드포인트와 스키마/타입
– 간단하고 직관적인 설계
– 표준화와 캐싱/브라우징 지원
단점 – 백엔드의 복잡성으로 성능저하
– REST에 비해 파일 업로드 어려움
– 불필요 데이터 및 불일치 발생 가능
– 다양한 데이터 요청 시 다수 요청
  • 그래프QL은 REST의 한계로 인해 개발되었지만, HTTP 캐싱 활용이 어려우며 에러 발생 시 핸들링이 어렵고 백엔드 부하와 설계 복잡성 증가로 인해 REST 완전 대체는 불가능하므로 그래프QL과 REST의 장단점 기반 적절한 방식 선택 필요
  • 그래프QL 도입 시 서비스 복잡성, 요청 데이터 형태 및 요청 횟수와 서버 아키텍처를 고려하여 도입 여부 결정

 
[참고]

  • 한빛미디어, GraphQL in Action
  • KakaoTech, GraphQL 개념잡기
Categories: 데이터베이스
도리: