여러 데이터 소스에서 단일 그래프 QL을 구현합니다
이 기사에서는 여러 동물 군 인스턴스에 걸쳐 스키마 스티치를 보여 주어 이질적인 데이터 소스에서 통합 된 GraphQL API를 만듭니다. 우리는 또한 동물 군을 다른 GraphQL 서비스와 결합 할 것입니다.
스키마 스티치 이해
스키마 스티치는 여러 기본 그래프 QL API에서 단일 그래프 QL API를 구축하는 기술입니다.
스키마 스티칭을 사용하는 이유는 무엇입니까?
대규모 응용 프로그램은 종종 모듈성을 위해 마이크로 서비스를 사용합니다. 그러나 클라이언트 응용 프로그램에는 종종 여러 소스의 데이터가 필요합니다. Unified GraphQL API는 깨끗한 인터페이스를 제공하지만 모 놀리 식 서버를 구축하는 것은 문제가 될 수 있습니다. 데이터베이스 당 FAUNA의 기본 GraphQL은 이상적이지만 여러 데이터베이스는 여러 인스턴스에 연결해야하므로 단단한 커플 링이 발생합니다. 스키마 스티칭은 여러 개의 그래프 QL 서비스를 단일 통합 스키마로 결합하여이를 해결합니다. 이 기사는 다음과 같습니다.
- 여러 동물 인스턴스를 단일 그래프 QL 서비스에 통합합니다.
- 동물 군과 다른 GraphQL API 및 데이터 소스를 결합합니다.
- AWS Lambda를 사용하여 서버리스 그래프 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 호출에 대한 오류 처리.
- 하드 코딩 대신 환경 변수를 통한 API 키 구성.
타사 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

다른 날, 나는 Corey Ginnivan의 웹 사이트에서 스크롤 할 때 카드 모음이 서로 쌓이는 것을 발견했습니다.

Google Fonts가 새로운 디자인 (트윗)을 출시 한 것을 볼 수 있습니다. 마지막 큰 재 설계와 비교할 때 이것은 훨씬 더 반복적 인 느낌이 듭니다. 차이를 간신히 말할 수 있습니다

프로젝트에 카운트 다운 타이머가 필요한 적이 있습니까? 그런 것은 플러그인에 도달하는 것이 당연하지만 실제로는 훨씬 더 많습니다.

플렉스 레이아웃의 보라색 슬래시 영역에 대한 질문 플렉스 레이아웃을 사용할 때 개발자 도구 (d ...)와 같은 혼란스러운 현상이 발생할 수 있습니다.

요소 수가 고정되지 않은 경우 CSS를 통해 지정된 클래스 이름의 첫 번째 자식 요소를 선택하는 방법. HTML 구조를 처리 할 때 종종 다른 요소를 만듭니다 ...

새로운 프로젝트가 시작될 때, Sass 컴파일은 눈을 깜박이게합니다. 특히 BrowserSync와 짝을 이루는 경우 기분이 좋습니다.

프론트 엔드 개발에서 Windows와 같은 구현 방법 ...
