Gatewayのセットアップと管理
Apollo Gatewayを構成・デプロイし、Federated Subgraphを単一の統合グラフとして構成して公開します。
「Gatewayのセットアップと管理」はCoddyKit上の無料GraphQL APIs with Spring Bootレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはGraphQL APIs with Spring Boot学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 GraphQL APIs with Spring Bootコースには全4レッスンが含まれています。
このレッスンの一部はまだ翻訳されておらず、英語で表示されています。
Gateway: The Unified API
In GraphQL Federation, the Apollo Gateway acts as the central entry point for all client applications. Think of it as the brain that understands your entire supergraph.
It takes multiple independent GraphQL services (called subgraphs) and combines their schemas into one unified, client-facing schema.
Why a Gateway is Essential
With a microservices architecture, you might have many backend services, each with its own GraphQL API. Without a gateway, clients would need to know about and query each service individually.
- Unified Endpoint: Clients interact with a single GraphQL API.
- Schema Composition: The gateway automatically stitches together the schemas from all subgraphs.
- Simplified Client Logic: Clients don't need to know which service owns which data.
How the Gateway Works
When a client sends a query to the gateway, here's what happens:
- The gateway receives the query.
- It analyzes the query against the composed supergraph schema.
- It breaks down the query into smaller parts, determining which subgraph owns which piece of data.
- It sends sub-queries to the relevant subgraphs.
- It then combines the results from these subgraphs into a single response for the client.
Gateway Implementations
While your subgraphs can be built with Spring Boot (or any other framework), the gateway itself is often implemented using Apollo's own tools.
The most common and robust implementation is the Apollo Server Gateway, which is a Node.js-based server designed specifically for federation. This lesson will focus on setting up this standard gateway.
Basic Gateway Setup (Node.js)
Let's set up a minimal Apollo Gateway. First, create a new Node.js project and install the necessary packages:
npm init -y
npm install @apollo/gateway apollo-serverThen, create an index.js file:
const { ApolloGateway, RemoteGraphQLDataSource } = require("@apollo/gateway");
const { ApolloServer } = require("apollo-server");
const gateway = new ApolloGateway({
serviceList: [
{ name: "products", url: "http://localhost:4001/graphql" },
],
buildService({ name, url }) {
return new RemoteGraphQLDataSource({ url });
},
});
const server = new ApolloServer({ gateway });
server.listen({
port: process.env.PORT || 4000
}).then(({ url }) => {
console.log(`🚀 Gateway ready at ${url}`);
});Configuring Subgraphs
In the previous code, the serviceList array is crucial. It tells the gateway which subgraphs exist and where to find them. Each object in the array needs two properties:
name: A unique identifier for the subgraph (e.g.,"products").url: The endpoint where the subgraph's GraphQL API is running (e.g.,"http://localhost:4001/graphql").
Adding More Subgraphs
As you develop more microservices with GraphQL APIs, you simply add them to the serviceList. The gateway will automatically compose their schemas into the unified graph.
Here's how you'd add a reviews subgraph running on port 4002:
const { ApolloGateway, RemoteGraphQLDataSource } = require("@apollo/gateway");
const { ApolloServer } = require("apollo-server");
const gateway = new ApolloGateway({
serviceList: [
{ name: "products", url: "http://localhost:4001/graphql" },
{ name: "reviews", url: "http://localhost:4002/graphql" },
],
buildService({ name, url }) {
return new RemoteGraphQLDataSource({ url });
},
});
const server = new ApolloServer({ gateway });
server.listen({
port: process.env.PORT || 4000
}).then(({ url }) => {
console.log(`🚀 Gateway ready at ${url}`);
});Running and Accessing the Gateway
Once your index.js is set up, you can start the gateway:
node index.jsThe console will output the URL where your gateway is running, typically http://localhost:4000/. Open this URL in your browser to access the GraphQL Playground or GraphiQL interface provided by Apollo Server.
Querying the Unified Graph
Clients will send their GraphQL queries directly to the gateway's URL. The gateway handles all the internal routing and data fetching from the subgraphs.
For example, a query combining data from both a products and reviews subgraph might look like this:
query GetProductDetails {
product(id: "prod-1") {
name
price
reviews {
id
rating
comment
}
}
}Gateway Management Tips
Beyond initial setup, managing your gateway involves several best practices:
- Deployment: Deploy the gateway as a standalone service, often alongside your subgraphs.
- Monitoring: Use tools to monitor its performance, error rates, and latency.
- Scaling: The gateway can be scaled horizontally to handle increased client traffic.
- Schema Changes: Ensure your gateway is configured to pick up schema updates from subgraphs reliably (e.g., via Apollo Studio or a local schema registry).
Quick Check: Gateway Role
You've learned about the Apollo Gateway and its role in federation.
Recap: Gateway Essentials
Congratulations! You've learned about the Apollo Gateway, a crucial component in GraphQL Federation. It provides a unified API endpoint for clients, seamlessly composing schemas from various subgraphs and routing queries effectively.
By configuring the serviceList, your gateway becomes the single source of truth for your entire supergraph, simplifying client interactions and enabling a robust microservices architecture.
よくある質問
「Gatewayのセットアップと管理」レッスンは無料ですか?
はい。「Gatewayのセットアップと管理」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、GraphQL APIs with Spring Bootコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 GraphQL APIs with Spring Bootコースには全4レッスンが含まれています。
「Gatewayのセットアップと管理」で何を学びますか?
Apollo Gatewayを構成・デプロイし、Federated Subgraphを単一の統合グラフとして構成して公開します。 ブラウザで直接実行するハンズオンコードでGraphQL APIs with Spring Bootを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
GraphQL APIs with Spring Bootを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのGraphQL APIs with Spring Bootは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「Gatewayのセットアップと管理」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このGraphQL APIs with Spring Bootレッスンでコードを書いて実行できますか?
はい。すべてのGraphQL APIs with Spring Bootレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Apollo Federation入門
- Federated Subgraphの構築
- Gatewayのセットアップと管理
- エンティティ参照と@keyディレクティブ