'웹 앱 API 개발을 위한 GraphQL' 1장, GraphQL에 오신 것을 환영합니다.

Jake_Young·2020년 9월 10일
0
post-thumbnail

😂 선언형 데이터 페치 방법과 GraphQL 서비스 핵심 가이드

  • GraphQL은 REST API와 비교해 데이터를 가져오는 기능이 훨씬 우수하여 최근 주목받고 있다.
  • 깃허브, 뉴욕타임스, IBM, 트위터, 옐프 등 다양한 환경과 언어 그리고 모든 규모의 팀에서 쓰이고 있다.
  • 저자들은 그래프의 이론, 그래프의 데이터 자료 구조부터 스키마, GraphQL 서비스, Apollo 클라이언트까지 웹 서비스 아키텍처를 자체적으로 구성할 수 있는 GraphQL의 장점과 트렌드, 모범 기법 들을 알려준다.

😎 GraphQL이란

  • API를 만들 때 사용할 수 있는 쿼리 언어이다.
  • 쿼리에 대한 데이터를 받을 수 있는 런타임이기도 하다.
  • 쿼리문을 중첩하여 실행하면 연관된 객체를 응답 데이터로 같이 받을 수 있다.
  • 복수의 객체 데이터를 받기 위해 요청을 여러번 반복할 필요가 없다.
  • 원치 않는 데이터가 있다면 이를 제외할 수도 있다.
  • GraphQL 서버에서는 쿼리가 실행될 때마다 타입 시스템에 기초해 쿼리가 유효한지 검사한다.
  • GraphQL은 선언형(declarative) 데이터 페칭(fetching) 언어
  • GraphQL은 클라이언트와 서버 간의 통신 명세이다. (Like ECMAScript)

🙄 GraphQL 설계 원칙

  1. 위계적
    • 필드 안에 다른 필드가 중첩될 수 있으며, 쿼리와 그에 대한 반환 데이터는 형태가 서로 같다.
  2. 제품 중심적
    • GraphQL은 클라이언트가 요구하는 데이터와 클라이언트가 지원하는 언어 및 런타임에 맞춰 동작한다.
  3. 엄격한 타입 제한
    • 스키마의 데이터 포인트마다 특정 타입이 명시되며, 이를 기초로 유효성 검사를 받게 된다.
  4. 클라이언트 맞춤 쿼리
    • GraphQL 서버는 클라이언트 쪽에서 받아서 사용할 수 있는 데이터를 제공한다.
  5. 인트로스펙티브
    • GraphQL 언어를 사용해 GraphQL 서버가 사용하는 타입 시스템에 대한 쿼리를 작성할 수 있다.

🤩 데이터 전송의 역사

  1. RPC (Remote Procedure Call)
  2. SOAP (Simple Object Access Protocol)
  3. REST (Representational state transfer)
  4. GraphQL
  • REST의 단점
    1. 오버페칭(Overfetching)
      • A 라는 인물의 정보가 필요할 때 REST는 이름 나이 주소 성별 취미 가문 신장 등 너무 많은 불필요한 정보를 제공한다.
    2. 언더페칭(Underfetching)
      • A 라는 인물이 속한 가문의 정보가 필요할 때 REST는 A라는 인물에 대한 정보와 그 가문의 정보를 요청하는 두 가지 요청을 보내야만 한다. 한번에 원하는 정보를 모두 제공 받을 수 없다.
    3. 엔드포인트 관리
      • 클라이언트에 변경 사항이 생기면 대개 엔드포인트를 새로 하나 만들어야 한다. 이렇게 되면 엔드포인트 개수가 몇 배로 빠르게 늘어난다.
profile
자바스크립트와 파이썬 그리고 컴퓨터와 네트워크

0개의 댓글