뷔페 같은 쿼리 언어, GraphQL 톺아보기

  • 관리자 신현승
  • 카테고리: 개발이슈
  • 조회수: 687
  • 작성일:

 

2024년 10월 10일, 샌프란시스코에서 열린 GraphQLConf 2024에서는 GraphQL 재단이 주최하여 전 세계의 개발자들이 모였습니다. GraphQL은 클라이언트가 필요한 데이터를 효율적으로 요청할 수 있게 돕는 API 쿼리 언어입니다.

많은 기업들이 클라이언트-서버 통신에 GraphQL을 채택하고 있으며, 여기엔 페이스북(Facebook), 깃허브(GitHub), 핀터레스트(Pinterest)가 포함됩니다. 현재 깃허브에서 "GraphQL" 관련 공개 레포지토리는 29,865개에 달합니다.

이번 글에서는 GraphQL의 특징과 그 관심의 이유를 살펴봅니다.

 

GraphQL의 등장 배경

“MATER ARTIUM NECESSITAS” 

William Horman, 1519

GraphQL은 메타(Meta, 당시 Facebook)에서 개발하였으며, 이는 2004년 출시된 페이스북이 모바일 사용자의 급증에 따라 기존 REST API의 문제를 해결하기 위한 필요에서 출발했음.

페이스북은 다음과 같은 문제를 경험했습니다:

  1. 오버패칭
  2. 언더패칭
  3. 프론트엔드 수정 필요
  4. API 명세서 수정 필요

이러한 문제 해결을 위해 2012년 GraphQL을 도입한 새로운 iOS 앱을 출시했습니다.

GraphQL vs. REST API

GraphQL은 여러 문제 해결을 위해 REST와 다릅니다. REST API는 정해진 데이터 구조로 응답하지만, GraphQL은 클라이언트가 필요한 데이터만 선택하여 요청할 수 있습니다.

<출처: 작가, 챗GPT로 생성>

 

예를 들어, GraphQL은 한 번의 쿼리로 사용자의 기본 정보, 게시글, 댓글을 모두 요청할 수 있습니다. 반면 REST는 여러 번의 쿼리 호출이 필요할 수 있습니다.

GraphQL의 문제 해결: 코드 예시

REST의 동작 방식

REST에서는 특정 소스를 받아오기 위해 URI 엔드포인트가 필요하며, OpenAPI Specification으로 응답을 명세합니다.

GraphQL의 오버패칭 문제 해결

GraphQL은 스키마 정의 언어로 API 구조를 명확히 정의하고, 클라이언트가 필요한 필드만 선택적으로 요청하게 함으로써 오버패칭 문제를 해결합니다.

언더패칭 문제 해결

GraphQL은 사용자 정보와 친구 정보를 동시에 요청 가능하여 언더패칭 문제를 해결합니다. 필요할 때만 쿼리할 수 있도록 설계되었습니다.

GraphQL 사용 시기

GraphQL은 REST를 완전히 대체하는 것이 아니라 REST의 단점을 보완합니다. 다음 경우에 GraphQL 사용이 유리합니다:

다양한 데이터 동시 필요

기존 코드 호환성 유지

병렬 개발 가능

개발자 도구 활용

사례: 깃허브의 GraphQL 전환

깃허브는 2016년에 GraphQL API 도입을 결정했으며, 주된 이유는 확장성과 API 메타 정보 관리의 용이함이었습니다.

마치며

GraphQL은 현대 API 개발의 중요한 도구입니다. 적절한 요구 사항을 파악하여 GraphQL을 선택하는 것을 고려해보는 것이 좋습니다.


부록: 참고 사이트

GraphQL 공식 홈페이지 https://graphql.org

Nest.JS GraphQL 가이드 https://docs.nestjs.com/graphql/quick-start

Amazon AppSync https://aws.amazon.com/appsync/


해당 기사는 GPT를 이용하여 요약한 내용입니다.

원문보기


코멘트 (0)