GraphQL 관련 자주 묻는 질문 (GraphQL FAQ)

이번 글에서는 GraphQL을 이용하시는 분들이 자주 궁금해하시는 부분들에 대해 정리해두었습니다. GraphQL 사용 이유, Apollo GraphOS 플랫폼 관련해서는 앞선 글들에서 소개를 드린 바 있으니 이를 먼저 참고하시길 바랍니다.

Apollo GraphOS 플랫폼이란?

GraphQL 사용 이유 (Feat. GraphQL 장점)

GraphQL이 뭔가요?

GraphQL은 데이터 쿼리를 위한 언어입니다. 대부분의 쿼리 언어(예: SQL)와 달리 특정 유형의 데이터 저장소(예: MySQL 데이터베이스)를 쿼리하는 데 GraphQL을 사용하지 않습니다. 대신 GraphQL을 사용하여 다양한 소스에서 데이터를 쿼리합니다.

GraphQL을 사용하면 클라이언트(예: 웹 앱)는 필요한 정보가 포함된 데이터 저장소를 알 필요가 없습니다. 대신 클라이언트는 GraphQL 서버(일반적으로 HTTP를 통해)에 쿼리를 보낸 다음 적절한 데이터 저장소에서 데이터를 가져옵니다. 다음은 예제 쿼리입니다.

# Fetches a list of Book objects, each with a title and author
query GetBooks {
  books {
    title
    author
  }
}

GraphQL 서버는 클라이언트가 쿼리할 수 있는 데이터를 설명하는 강력한 형식의 스키마를 정의합니다. 클라이언트는 이 스키마의 구조를 준수하는 쿼리를 실행합니다. 다음은 위의 예제 쿼리를 지원하는 GraphQL 스키마 예제입니다.

type Book {
  title: String
  author: String
  isbn: String
}

# The root fields of a query are always fields of the special
# Query type. These root fields are also called "entry points"
# into your schema.
type Query {
  # Returns a list of Book objects
  books: [Book]
}

위의 예제 쿼리는 여기에 정의된 isbn 필드를 가져오지 않습니다. 그럴 필요가 없기 때문이죠. GraphQL을 사용하면 클라이언트가 오버헤드 없이 필요한 필드를 정확하게 쿼리할 수 있습니다.

GraphQL 서버는 각기 다른 데이터 소스(데이터베이스, REST API 등)와 통신하여 특정 스키마 필드에 대한 데이터를 채우는 방법을 알고 있는 리졸버라는 특수 함수 모음을 사용합니다. 쿼리가 완전히 해결되면 서버는 쿼리 구조와 일치하는 결과로 클라이언트에 응답합니다.

{
  "data": {
    "books": [
      {
        "title": "The Awakening",
        "author": "Kate Chopin"
      },
      {
        "title": "City of Glass",
        "author": "Paul Auster"
      }
    ]
  }
}

GraphQL을 왜 쓰나요?

GraphQL은 품질 도구로 개발자 경험을 개선하는 것부터 번들 크기를 줄여 클라이언트 성능을 개선하는 것까지 거의 모든 개발 영역을 개선할 수 있습니다. GraphQL의 이점에 대해 자세히 알아보세요.

GraphQL은 어디서 배울 수 있나요?

Apollo의 학습 플랫폼인 Odyssey는 Apollo 기술로 GraphQL을 학습하는 데 도움이 되는 실용적인 실습 과정을 제공합니다. 이 설명서에는 각 플랫폼 구성 요소에 대한 시작하기 콘텐츠도 포함되어 있습니다.

핵심 GraphQL 개념에 대한 소개는 graphql.org를 확인하세요. Apollo 개발자 지지자와 더 큰 GraphQL 커뮤니티의 기술 GraphQL 콘텐츠는 Apollo 블로그를 확인하세요.

GraphQL 온라인 서버는 어떻게 호스팅하나요?

Apollo Server로 생성된 GraphQL 서버는 Node.js 프로젝트를 지원하는 모든 환경에 배포할 수 있습니다. Apollo Server는 AWS Lambda와 같은 서버리스 배포 환경과도 통합할 수 있습니다.

제작된 Schema에 어떻게 하면 클라이언트 애플리케이션을 연결할 수 있나요?

Apollo 플랫폼에는 거의 모든 종류의 클라이언트를 스키마에 연결할 수 있는 도구가 있습니다. Apollo 클라이언트 프로젝트의 경우 React, Vue 및 Angular에서 GraphQL 스키마를 더 쉽게 쿼리할 수 있는 많은 보기 계층 통합도 있습니다.

error: Content is protected !!