GraphQL은 JavaScript 애플리케이션이 단일 요청으로 필요한 데이터를 정확하게 검색할 수 있도록 도와줍니다. 이 문서에서는 GraphQL이 무엇인지, 왜 사용할 수 있는지, Azure 서비스를 통해 최소한의 노력으로 GraphQL 애플리케이션을 빌드하는 방법을 설명합니다. 기존 GraphQL 애플리케이션을 마이그레이션하든 새 애플리케이션을 빌드하든 관계없이 Azure는 프로세스를 간소화하는 도구와 서비스를 제공합니다.
GraphQL이란 무엇인가요?
GraphQL은 웹 애플리케이션이 서버 및 데이터베이스와 통신하는 현대적인 방법입니다. 필요한 정보를 정확히 요청하는 더 스마트한 방법이라고 생각하면 됩니다.
- 그것은 마치 고정된 메뉴를 받아들이는 대신 맞춤 식사를 주문하는 것과 같습니다 - 당신은 당신이 원하는 것을 정확히 요구합니다
- React, Vue 또는 Angular와 같은 JavaScript 애플리케이션과 잘 작동합니다
- 웹 앱을 더 빠르고 쉽게 구축할 수 있습니다
GraphQL을 사용하면 대부분의 웹 서비스가 통신하는 표준 방식인 기존 REST API와 같이 서로 다른 서버 엔드포인트에 여러 요청을 하는 대신 필요한 모든 데이터를 가져오기 위해 하나의 정확한 요청을 할 수 있습니다.
내 웹 앱에서 GraphQL을 사용해야 하는 이유는 무엇인가요?
GraphQL은 다음과 같은 세 가지 주요 방법으로 JavaScript 애플리케이션을 개선합니다.
필요한 것을 정확히 얻기: 앱은 그 이상도 그 이하도 아닌 지금 당장 필요한 데이터만 요청할 수 있습니다. 이것은 마치 뷔페에 가서 대부분이 낭비되는 거대한 고정 식사를 제공하는 대신 먹을 것만 가져가는 것과 같습니다. 이렇게 하면 더 적은 데이터를 다운로드하기 때문에 앱이 더 빨라집니다.
많은 요청이 아닌 하나의 요청: 여러 곳에서 정보가 필요하십니까? GraphQL을 사용하면 5개의 서로 다른 엔드포인트에 5개의 서로 다른 요청을 하는 대신 한 번의 요청으로 모든 것을 얻을 수 있습니다. 이것은 마치 5개의 다른 상점을 방문하는 대신 한 사람이 모든 쇼핑을 모으는 것과 같습니다.
더 나은 도구로 실수 감소: GraphQL에는 앱이 실행 중일 때가 아니라 코딩하는 동안 오류를 포착하는 데 도움이 되는 도구가 함께 제공됩니다. 문서를 게시한 후 오타를 발견하는 것이 아니라 입력하는 동안 작동하는 맞춤법 검사를 사용하는 것과 같습니다.
GraphQL을 위한 인기 있는 JavaScript 도구
GraphQL 및 JavaScript를 사용하여 빌드할 때 다음과 같은 인기 있는 도구 중 하나를 사용할 수 있습니다.
- Apollo Client: React, Vue, Angular 및 일반 JavaScript와 함께 작동하는 가장 널리 사용되는 GraphQL 클라이언트입니다.
- URQL: 성능이 좋은 경량 대안입니다.
- Relay: Facebook(GraphQL도 만든 사람)에서 만든 것으로 대규모 React 애플리케이션에 가장 적합합니다.
GraphQL 애플리케이션용 Azure 서비스
특정 시나리오에 따라 접근 방식을 선택합니다.
하고 싶다면... | 그렇다면 당신은... | 이러한 Azure 서비스 사용 |
---|---|---|
기존 GraphQL 앱을 Azure로 가져오기 | 코드 변경 없이 응용 프로그램 배포Deploy your application without change your code | Azure App Service 또는 Azure Container Apps |
기존 데이터에 GraphQL 추가 | 최소한의 코딩으로 데이터에 대한 GraphQL 엔드포인트 생성 | 데이터 API 작성기 |
GraphQL API 계층 구축 | 기존 API를 통해 통합 GraphQL 인터페이스 생성 | GraphQL 변환을 사용한 Azure API Management |
Azure에서 GraphQL 애플리케이션 호스트
빌드하는 응용 프로그램의 유형에 따라 몇 가지 좋은 옵션이 있습니다.
앱 서비스: 기존 웹 호스팅 서비스와 비슷하지만 추가 기능이 있습니다. 서버가 필요한 대부분의 JavaScript 응용 프로그램에 적합합니다.
컨테이너 앱: 애플리케이션이 컨테이너(예: Docker)에 패키지된 경우 이 서비스를 사용하면 쉽게 실행하고 확장할 수 있습니다.
GraphQL 애플리케이션용 데이터 스토리지
GraphQL은 데이터에 연결해야 합니다. Azure는 이 작업을 수행하는 몇 가지 방법을 제공합니다.
데이터베이스를 GraphQL API로 전환: "Data API builder" 도구는 코딩이 필요 없이 기존 데이터베이스에서 GraphQL 엔드포인트(앱이 GraphQL 요청을 보낼 수 있는 URL)를 자동으로 생성할 수 있습니다!
데이터 저장: Azure는 다양한 요구 사항에 맞는 데이터베이스를 제공합니다.
- SQL Database: 기존 테이블 기반 데이터용
- Cosmos DB: 경직된 스키마가 없는 유연하고 확장 가능한 데이터 스토리지
GraphQL 애플리케이션 보안
- 사용자 로그인 및 보안: Azure의 ID 플랫폼을 사용하면 적합한 사용자만 GraphQL 데이터에 액세스할 수 있도록 애플리케이션에 로그인 기능을 추가할 수 있습니다.
- 역할 기반 액세스: GraphQL 엔드포인트를 통해 어떤 사용자가 어떤 데이터를 쿼리하거나 수정할 수 있는지 정확하게 제어합니다.
- API 보호: GraphQL API의 남용을 방지하기 위해 속도 제한 및 모니터링을 추가합니다.
기존 데이터에 대한 GraphQL API 만들기
Azure에 이미 데이터가 있고 GraphQL을 사용하여 액세스하고 싶으신가요? 이 작업을 수행하는 간단한 방법이 있습니다.
API Management: 이 서비스는 기존 API 또는 데이터 원본 앞에 GraphQL 계층을 만들 수 있습니다. GraphQL을 기본적으로 사용하지 않는 시스템에 GraphQL 변환기를 추가하는 것과 같습니다.
Data API Builder: 이 도구는 데이터베이스에서 GraphQL 엔드포인트를 자동으로 생성합니다. 기존 데이터에 GraphQL을 추가하는 가장 빠른 방법이며, 데이터베이스를 가리키기만 하면 자동으로 작동합니다.
간단한 예제: 제품 데이터베이스에 대한 GraphQL API 작성
이 과정이 어떻게 진행되는지는 다음과 같습니다.
- 제품 정보(이름, 가격, 설명)가 포함된 데이터베이스가 있습니다.
- 데이터베이스에 연결하도록 Data API Builder를 설정합니다.
- Data API Builder는 GraphQL 엔드포인트를 자동으로 생성합니다.
- 이제 JavaScript 애플리케이션에서 GraphQL 쿼리를 다음과 같이 만들 수 있습니다.
{
products(where: { price_lt: 50 }) {
name
price
description
}
}
이 쿼리는 $50 미만의 모든 제품을 가져와 이름, 가격 및 설명만 표시합니다.
시작하는 데 도움이 되는 리소스
Azure에서 GraphQL을 사용하여 자세히 알아보거나 빌드를 시작하려는 경우 다음과 같은 몇 가지 유용한 리소스가 있습니다.
다음 단계
- Data API Builder 설치
- Azure Container Apps
- Azure API Management - API 만들기 및 관리
- Azure 앱 서비스
- Azure SQL Database - 구조화된 데이터 저장
- Azure Cosmos DB - 유연한 비정형 데이터 저장