GraphQL

고장난 고양이·2022년 7월 11일
0

개발지식

목록 보기
14/25

GraphQL 이란?

GraphQL은 API를 위한 쿼리 언어이며 이미 존재하는 데이터로 쿼리를 수행하기 위한 런타임 입니다.

Facebook에서 만든 애플리케이션 레이어 쿼리 언어입니다.

api를 위한 쿼리 언어이며, 타입시스템을 사용하여 쿼리를 실해하는 서버사이드 런타임이며, 특정한 데이터베이스나 스토리지에 귀속되어 있지 않으며, 기존 코드와 데이터에 의해 대체된다.

탄생이유 - REST API의 한계

REST API의 개념을 간단하게 말하자면 모든 Resource들을 하나의 Endpoint에 연결하고 연결된 Endpoint는 Resource와 관련된 내용만 관리하게 하는 것이다.

이는 단순한 서비스에서는 아주 좋지만 복잡한 서비스나 클라이언트의 요청사항에 따라 Over-Fetching과 Under-Fetching이 발생한다.

또한 REST API로 여러 환경에서 필요한 정보들을 Resource 별로 Endpoint를 갖도록 구현하는 것은 어렵다. 한마디로 비슷하지만 Endpoint가 다른 API가 많이 파생된다.

-> GraphQL에서 Endpoint는 통상 1개만 생성하고 클라이언트에게 필요한 데이터는 클라이언트가 직접 쿼리를 작성, 호출하여 반환 받는다.

장단점

(장점)

  • 클라이언트가 필요한 데이터만 반환할 수 있다.
  • 1번의 호출로 원하는 데이터를 한번에 가져올 수 있다.
  • REST API의 N+1 Problem을 해결 할 수 있다.
  • 확장이 용이

(단점)

  • 백엔드, 클라이언트 개발자 양쪽 다 러닝커브가 있다.
  • 단순한 서비스에서는 사용하기가 복잡하다.
  • 대부분의 언어에서 라이브러리로 제공한다.
  • 캐싱 기능의 구현이 복잡하다.
  • 요청이 text로 날아가기 때문에 File 전송 등을 구현하기가 어렵다.

참고
https://hanamon.kr/graphql%EC%9D%B4%EB%9E%80-api%EB%A5%BC-%EC%9C%84%ED%95%9C-%EC%BF%BC%EB%A6%AC-%EC%96%B8%EC%96%B4/

profile
개발새발X발일지

0개의 댓글