graphQL

  • GraphQL 은 페이스북에서 만든 어플리케이션 레이어 쿼리 언어입니다.

GraphQL을 활용 할 수 있게 도와주는 다양한 라이브러리들

릴레이(Relay) [https://relay.dev/] 아폴로(Apollo GraphQL) [https://www.apollographql.com/]

예제

쿼리
query {
    account(id: "1") {
        username
        email
        firstName
        lastName
        friends {
            firstName
            username
        }
    }
}

결과
{
  "data": {
    "account": {
      "username": "velopert",
      "email": "public.velopert@gmail.com",
      "firstName": "Minjun",
      "lastName": "Kim",
      "friends": [
        {
          "firstName": "Jayna",
          "username": "jn4kim"
        },
        {
          "firstName": "Abet",
          "username": "abet"
        }
      ]
    }
  }
}

기업 환경에서 GraphQL의 이점과 단점

비즈니스나 엔터프라이즈 환경에서 GraphQL를 활용해 보려고 하시나요? 장점과 단점이 모두 존재합니다.

이점

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

단점

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

GraphQL과 오픈소스

  • Apollo: 프론트엔드 클라이언트 라이브러리(Apollo Client)와 백엔드 서버 프레임워크(Apollo Server)를 포함하는 GraphQL 플랫폼
  • Offix: 애플리케이션에 도달할 수 없는 경우에도 GraphQL 변형 및 쿼리를 실행할 수 있도록 허용하는 오프라인 클라이언트
  • Graphback: GraphQL 지원 Node.js 서버를 생성하기 위한 커맨드라인 클라이언트
  • OpenAPI-GraphQL: OpenAPI 사양 또는 Swagger로 설명된 API를 GraphQL로 번역하기 위한 커맨드라인 인터페이스 및 라이브러리