Skip to content

Latest commit

 

History

History
49 lines (33 loc) · 3.13 KB

GraphQL.md

File metadata and controls

49 lines (33 loc) · 3.13 KB

GraphQL

QraphQL 개념 및 역할

GraphQL은 쿼리 언어이자 애플리케이션 프로그래밍 인터페이스(API)를 위한 서버측 런타임으로, 클라이언트에게 요청한 만큼의 데이터를 제공하는데 우선 순위를 둡니다.


GraphQL은 API를 더욱 빠르고 유연하며 개발자 친화적으로 만들기 위해 설계됐다.
또한 REST를 대체할 수 있는 GraphQL은 개발자가 단일 API 호출로 다양한 데이터 소스에서 데이터를 끌어오는 요청을 구성할 수 있도록 지원합니다.


또한 GraphQL은 API 유지 관리자에게 기존 쿼리에 영향을 미치지 않고 필드를 추가하거나 폐기할 수 있는 유연성을 부여합니다.
개발자는 자신이 선호하는 방식으로 API를 빌드할 수 있으며, GraphQL 사양은 이러한 API가 예측 가능한 방식으로 작동하도록 보장합니다.

GraphQL 쿼리 언어: 스키마 및 리졸버 개념

API 개발자는 GraphQL을 사용해 클라이언트가 서비스를 통해 쿼리할 가능성이 있는 모든 데이터를 설명하는 스키마를 생성합니다.


GraphQL 스키마는 개체 유형으로 구성되어 어떤 종류의 개체를 요청 할 수 있으며 어떠한 필드가 있는지 정의합니다.


쿼리가 수신되면 GraphQL은 스키마에 대해 쿼리를 검증한 후 검증된 쿼리를 실행합니다.


API 개발자는 스키마의 각 필드를 리졸버라고 불리는 기능에 첨부합니다.

GraphQL 장점과 단점 비교

GraphQL 장점

  • GraphQL 스키마는 GraphQL 애플리케이션에 신뢰할 수 있는 단일 소스를 하나 설정합니다. 조직은 이를 통해 전체 API에 페더레이션할 수 있게 됩니다.
  • GraphQL 호출은 단일 왕복으로 처리되며 클라이언트는 오버페칭 없이 요청한 결과만 얻습니다.
  • 엄격하게 정의된 데이터 유형은 클라이언트와 서버 간 통신 오류를 줄여줍니다.
  • GraphQL은 세부 검사를 수행합니다. 클라이언트는 사용 가능한 데이터 유형 목록을 요청할 수 있습니다. 자동 생성 문서의 경우 이상적인 방식이죠.
  • GraphQL은 애플리케이션 API가 기존 쿼리를 중단하지 않고도 진화할 수 있도록 허용합니다.
  • REST API로 사용할 수 없는 기능을 제공하기 위해 대부분의 오픈소스 GraphQL 확장 기능을 사용할 수 있습니다.
  • GraphQL은 특정 애플리케이션 아키텍처를 지정하지 않으므로 기존 REST API에 추가하여 기존 API 관리 툴과 연동할 수 있습니다.

GraphQL 단점

  • REST API에 친숙한 개발자의 경우 GraphQL를 학습하는 데 시간이 필요합니다.
  • GraphQL은 데이터 쿼리의 상당 작업을 서버측으로 옮겨 서버 개발자 작업의 복잡성이 커집니다.
  • 구현 방식에 따라 GraphQL은 REST API이 아닌 다른 API관리 적략을 필요로 할 수 있습니다.
  • 캐싱이 REST보다 훨씬 복잡합니다.
  • API 유지관리자의 경우 유지 관리 가능한 GraphQL 스키마를 작성하기 위한 추가 태스크를 수행해야한다.