이 기사에서는 여러 동물 군 인스턴스에 걸쳐 스키마 스티치를 보여 주어 이질적인 데이터 소스에서 통합 된 GraphQL API를 만듭니다. 우리는 또한 동물 군을 다른 GraphQL 서비스와 결합 할 것입니다.
스키마 스티치 이해
스키마 스티치는 여러 기본 그래프 QL API에서 단일 그래프 QL API를 구축하는 기술입니다.
스키마 스티칭을 사용하는 이유는 무엇입니까?
대규모 응용 프로그램은 종종 모듈성을 위해 마이크로 서비스를 사용합니다. 그러나 클라이언트 응용 프로그램에는 종종 여러 소스의 데이터가 필요합니다. Unified GraphQL API는 깨끗한 인터페이스를 제공하지만 모 놀리 식 서버를 구축하는 것은 문제가 될 수 있습니다. 데이터베이스 당 FAUNA의 기본 GraphQL은 이상적이지만 여러 데이터베이스는 여러 인스턴스에 연결해야하므로 단단한 커플 링이 발생합니다. 스키마 스티칭은 여러 개의 그래프 QL 서비스를 단일 통합 스키마로 결합하여이를 해결합니다. 이 기사는 다음과 같습니다.
여러 동물 군 사례를 통합합니다
여러 동물 데이터베이스 인스턴스 (예 : Product
, Inventory
, Review
)를 단일 그래프 QL 서비스로 결합하겠습니다. 각 데이터베이스에는 자체 GraphQL API (하위 그래프)가 있습니다. 우리의 목표는 클라이언트 애플리케이션을위한 통합 그래프로 모든 소스에서 데이터를 쿼리합니다.
이 통합 그래프는 우리의 게이트웨이 서비스가 될 것입니다. Node.js를 사용 하여이 제품을 작성하겠습니다.
프로젝트 설정 : Node.js 프로젝트 생성 :
mkdir my-gateway CD my-gateway npm init---
종속성 설치 :
NPM I Express Express-GraphQL GraphQL @GraphQL-Tools/Schema @GraphQL-Tools/Stitch @GraphQL-Tools/Wrap Cross-Fetch--save
BASIC GraphQL Server (Gateway.js) : Simple Express GraphQL 서버로 시작합니다.
// gateway.js (초기 버전) // ... (Express Server 설정) ...
(이 초기 코드는 원래 예제와 유사한 베어 본 서버이지만 Brevity는 스티칭 측면에 집중하기 위해 생략되었습니다.)
동물 데이터베이스 설정 : 3 개의 동물 데이터베이스 ( Product
, Inventory
, Review
)를 만들고 관리 키를 생성합니다. 각 데이터베이스에 대한 그래프 QL 스키마를 정의하십시오 (원래 예제에 표시된대로).
Gateway Service Enhancement (Gateway.js) : @graphql-tools/stitch
사용하여 스키마 스티치 구현. 이 섹션에는 원본에 설명 된대로 makeRemoteExecutor
및 makeGatewaySchema
기능이 포함되지만 명확성이 향상되고 더 나은 가독성을 위해 잠재적으로 리팩토링됩니다. 주요 개선은 다음과 같습니다.
타사 API 스티칭 : 동일한 makeRemoteExecutor
및 stitchSchemas
접근법을 사용하여 타사 GraphQL API (예 : SpaceX API)를 포함하도록 게이트웨이를 확장합니다.
AWS Lambda에 배포 : 서버리스 프레임 워크를 사용하여 게이트웨이를 AWS Lambda 기능에 배치합니다. 필요한 종속성 ( serverless
, serverless-http
, body-parser
)을 설치하십시오. 원본에 표시된대로 serverless.yaml
파일을 만듭니다. 적절한 Lambda 기능 처리를 위해 serverless-http
와 통합하려면 gateway.js
수정하십시오. serverless deploy
사용하여 배포합니다.
결론
스키마 스티칭은 여러 데이터 소스에서 확장 가능하고 유지 관리 가능한 그래프 QL API를 구축하기위한 강력한 솔루션을 제공합니다. 이 기사는 동물 군과 AWS Lambda를 사용하지만 원칙은 다른 GraphQL 서비스 및 서버리스 플랫폼에 광범위하게 적용됩니다. Apollo Federation과 같은 대체 접근법은 유사한 기능을 제공합니다.
위 내용은 여러 데이터 소스에서 단일 그래프 QL을 구현합니다의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!