GraphQL 알아보기

728x90

GraphQL은 무엇일까?

GraphQL은 페이스북에서 개발된 API를 위한 쿼리 언어이자 런타임이다.

클라이언트가 필요한 데이터를 정확하게 요청하고 서버는 그에 맞는 데이터만 응답하는 방식으로 작동하며 REST API의 단점을 보완하기 위해 등장했다.

GraphQL의 핵심 개념

쿼리 (Query)

클라이언트가 서버에게 원하는 데이터를 요청하기 위해 사용하는 질의문이다. 쿼리에는 필요한 데이터의 종류와 구조를 명시한다.

 

스키마 (Schema)

 GraphQL API에서 사용 가능한 데이터 타입과 필드, 그리고 이들 간의 관계를 정의하는 청사진이다. 스키마는 API의 구조를 명확하게 보여주고 클라이언트가 어떤 데이터를 요청할 수 있는지 알려준다.

 

리졸버 (Resolver)

쿼리의 각 필드에 대한 데이터를 가져오는 로직을 담당하는 함수다. 데이터베이스 조회, 외부 API 호출 등 필요한 작업을 수행하여 클라이언트에 전달할 데이터를 반환한다.

GraphQL의 작동 방식

  1. 클라이언트 요청: 클라이언트는 GraphQL 쿼리를 통해 필요한 데이터를 서버에 요청한다.
  2. 서버 처리: 서버는 GraphQL 쿼리를 분석하고 스키마를 기반으로 쿼리의 유효성을 검증한다. 유효한 쿼리인 경우 해당 필드에 대한 리졸버를 실행하여 데이터를 가져온다.
  3. 응답: 서버는 클라이언트가 요청한 데이터만 포함하는 JSON 형식의 응답을 반환한다.

GraphQL의 장점

  • 오버페칭/언더페칭 방지: 필요한 데이터만 정확히 요청하고 받을 수 있어 네트워크 효율성을 높이고 불필요한 데이터 처리를 줄인다.
  • 단일 요청으로 데이터 가져오기: 여러 엔드포인트에 대한 요청을 하나의 GraphQL 쿼리로 통합하여 효율적인 데이터 fetching을 가능하게 한다.
  • 명확한 데이터 구조: GraphQL 스키마를 통해 API의 데이터 구조를 명확하게 파악할 수 있어 개발 및 유지보수가 용이하다.
  • 강력한 타입 시스템: GraphQL은 정적 타입 시스템을 가지고 있어, 쿼리의 유효성을 컴파일 타임에 검증하고 개발 도구에서 자동 완성 및 타입 체킹 등의 기능을 제공한다.
  • 실시간 업데이트 (Subscriptions): GraphQL은 Subscriptions 기능을 통해 실시간 데이터 업데이트를 지원한다. 클라이언트는 특정 이벤트 발생 시 서버로부터 자동으로 업데이트된 데이터를 받아볼 수 있다.

GraphQL vs REST API

  • REST API: 여러 엔드포인트를 통해 데이터를 제공하며 각 엔드포인트는 특정 리소스를 나타낸다. 클라이언트는 필요한 데이터를 얻기 위해 여러 엔드포인트에 요청해야 할 수 있다.
  • GraphQL: 단일 엔드포인트를 통해 모든 데이터를 제공하며 클라이언트는 필요한 데이터를 정확하게 명시하여 요청할 수 있다.

GraphQL의 활용

GraphQL은 아래와 같은 상황에서 특히 유용하다.

  • 복잡한 데이터 관계를 처리해야 하는 경우
  • 다양한 클라이언트 플랫폼 (웹, 모바일 등)을 지원해야 하는 경우
  • 실시간 업데이트가 필요한 경우

이 글은 graphQL의 간단한 개념만 정리한 글 입니다.

graphQL의 사용 경험이 생긴다면 글에 대한 내용도 보충할 예정입니다.

728x90

'Backend' 카테고리의 다른 글

REST API란?  (0) 2024.08.21