GraphQL 이란?

신은지·2022년 8월 9일
0

GraphQL 쌈싸먹기

목록 보기
1/3

GraphQL

웹 클라이언트가 서버로부터 데이터를 효율적으로 가져오는 것을 목적으로 설계된 쿼리 언어.

  • 데이터베이스나 플랫폼에 종속적이지 않음
  • 네트워크 통신 방식에 종속적이지 않음
    • HTTP POST 메소드와 웹 소켓 프로토콜을 활용

REST API와 비교

REST APIGraphQL API
MethodGET, POST, PUT, PATCH, DELETE 등POST
Endpoint필요에 따라 여러 개 존재단 하나만 존재
데이터 형태서버단에서 ORM, 쿼리 등을 이용해 결정클라이언트단에서 쿼리 조합하여 결정
쿼리 조합endpoint마다 달라짐스키마 타입에 따라 달라짐
네트워크 호출endpoint마다 호출딱 한번의 호출로 여러 데이터 요청 처리 가능
요청 처리endpoint에 정의된 핸들링 함수 호출하여 처리요청받은 필드에 대한 resolver 호출하여 처리

장점

  • OverFetching
    • 필요한 정보들만 들고 올 수 있음
    • 따라서 통신 리소스 감소
  • UnderFetching
    • 필요한 여러 계층의 정보들을 한 번에 가져올 수 있음
    • 요청 횟수 감소
    • 필요 데이터가 쪼꼼 달라졌다고 새로운 REST API 만들지 않아도 됨..!
  • 하나의 POST End-point에서 모든 요청 처리 가능
    • 힘들게 API 문서를 관리하지 않아도 됨!
  • 프론트엔드 개발자와 백엔드 개발자의 결합도가 떨어짐
    • 백엔드가 모델 만들어서 GraphQL로 노출하면, 프론트엔드 개발자가 니즈에 따라 바로 활용 가능

단점

  • 맵 / 테이블 / 딕셔너리 지원 X
  • API 버전 관리에 대한 명확한 방법이 없음
  • 디도스 공격을 방어하기 위해 직접 코드를 짜야 함
    • 리턴되는 데이터 양에 레이트 리밋 걸기, 페이지네이션 직접 구현 등


레퍼런스

profile
호그와트 장학생

0개의 댓글