マイクロサービスの API ゲートウェイ コード例_Servo_Industry Insights_Kpower
家 > 業界の洞察 >サーボ
テクニカルサポート

製品サポート

マイクロサービスの API ゲートウェイのコード例

発行済み 2026-01-19

マイクロサービスが「失われない」ようにする: API ゲートウェイの実際のコード スニペットとアプリケーション ストーリー

このような状況に遭遇したことがありますか。社内にはマイクロサービスがますます増えており、各サービスには独自のインターフェイスとアドレスがあり、それを呼び出すのは迷路の出口を見つけるようなものです。しばらくの間、サービス A は B のデータを呼び出す必要があり、しばらくの間、C はアクセス許可を確認するために D を見つける必要があります。こうした呼び出し関係を維持するだけでも頭の痛い問題です。セキュリティ管理は言うまでもありません。各サービスに独自の本人確認セットを持たせることはできないのでしょうか?

だからこそ、API ゲートウェイについて話さなければなりません。

マイクロサービス アーキテクチャが活発なパーティーである場合、API ゲートウェイは玄関の受付係であると想像してください。招待者リストの確認 (本人確認)、ゲストを正しい部屋に誘導 (ルーティング要求)、入場リズムの制御 (電流制限)、誰が来て誰が退出したかを記録 (ログ監視) する役割を果たします。それがなければ、パーティーは簡単に混乱に陥る可能性があります。

コードではどのように見えるでしょうか?

簡単なゲートウェイルーティング設定例

Spring Cloud Gateway (Java エコシステムでは非常に一般的) を使用していると仮定すると、基本的なルーティング構成は次のようになります。

@Bean public RouteLocatorcustomRouteLocator(RouteLocatorBuilder builder) { return builder.routes() .route("product_service", r -> r .path("/api/products/**") .filters(f -> f .addRequestHeader("X-Request-Source", "gateway") .circuitBreaker(config -> config) .setName("productCB") .setFallbackUri("forward:/fallback/product"))) .uri("lb://PRODUCT-SERVICE")) .route("order_service", r -> r .path("/api/orders/**") .uri("lb://ORDER-SERVICE")) .build(); }

このコードは何をするのでしょうか?これはゲートウェイに、/api/products/ で始まるすべてのリクエストが PRODUCT-SERVICE という名前のサービスに転送されることを伝えます。ちなみに、リクエスト ヘッダーが追加され、サーキット ブレーカーとダウングレードが構成されます。製品サービスが一時的に応答できない場合は、バックアップ プランに転送されます。注文サービスのルーティングはよりシンプルで、直接転送されます。

ご覧のとおり、わずか数行で、外部呼び出し元は、マイクロサービスがいくつあるか、マイクロサービスがどの IP アドレスに存在するかを知る必要がなく、ゲートウェイに面するだけで済みます。

メリットは本物です

「追加のレイヤーを追加するとシステムの速度が遅くなるのですか?」と尋ねる人もいるかもしれません。実際、リンクが 1 つ増えると、常にある程度のオーバーヘッドが発生します。しかし、それがもたらすメリットと比較すると、多くの場合、コストに見合った価値があります。

たとえば、安全性。各サービスで JWT 検証を繰り返し実装するのではなく、ゲートウェイで統一的に処理させます。

# ゲートウェイフィルターの設定例 filters: - name: JwtAuthFilter args: secretKey: "your-secret-key-here" excludePaths: - "/api/public/login" - "/health"

現在、ログインとヘルスチェックの 2 つのパブリック インターフェイスを除き、他のすべてのリクエストは最初にトークン検証に合格する必要があります。検証ルールを変更したい場合はここを変更するだけです。

別の例はモニタリングです。すべてのトラフィックがゲートウェイを通過すると、突然理想的な観測ポイントが得られます。最も頻繁に呼び出されるインターフェイスはどれですか?平均応答時間はどれくらいですか?エラー率に異常はありませんか?これらのデータはゲートウェイ レベルで収集されるため、各サービスにアクセスしてログを取得するよりもはるかに便利です。

バージョン管理もあります。特定のサービスの API をアップグレードしたいが、すべての呼び出し元にすぐに変更させることができない場合は、ゲートウェイで大騒ぎして、リクエスト ヘッダーのバージョン番号に基づいて、トラフィックをさまざまなバージョンのサービス インスタンスに転送することができます。古いユーザーは古いインターフェースを使い続けますが、新しいユーザーは新しい機能を利用できるため、移行はスムーズです。

選ぶときに何に注意すればいいですか?

市場には API ゲートウェイの選択肢が多数あります。選び方は?機能の完成度を追求する必要はないと思います。重要なのは、次のことが便利かどうかです。

まず、パフォーマンスの損失が許容範囲内である必要があります。優れたゲートウェイは、追加された機能と遅延の発生との間のバランスを見つける必要があります。次に、構成が十分に柔軟である必要があります。上記のコード例と同様に、構成またはコードを使用してルーティング ルールを定義し、さまざまなチームの習慣に適応させることができます。第三に、監視情報は詳細でなければなりません。何か問題が発生した場合、それがゲートウェイに問題があるのか​​、それともその背後にあるサービスのいずれかに問題があるのか​​をすぐに判断できる必要があります。

既存のテクノロジースタックとの互換性も重要です。マイクロサービスが主に Go で書かれている場合は、Go に対応しており、コミュニティのサポートが充実しているゲートウェイを選択する方が現実的かもしれません。

実際の展開時の考慮事項

紙の上で話すのは結局底が浅い。実際に使用するには、事前にいくつかの詳細を検討する必要があります。

たとえば、ゲートウェイ自体が単一障害点になった場合はどうすればよいでしょうか?シンプルに、さらにいくつかのインスタンスをデプロイし、前面に負荷分散を追加します。別の例として、サービスを再起動せずに構成を更新するにはどうすればよいでしょうか?一部のゲートウェイはホット アップデート構成をサポートしています。ルーティング ルールを変更する場合、プロセスを再起動する必要がないため、オンライン サービスにとって非常に使いやすいです。

ロギングも慎重に設計する必要があります。ゲートウェイはどのようなログを保持する必要がありますか?多すぎるとパフォーマンスに影響し、少なすぎるとトラブルシューティングに悪影響を及ぼします。通常、リクエストとレスポンスのメタデータ (時間、パス、ステータス コード、クライアント IP) が必要ですが、リクエスト本文のような潜在的に大規模なコンテンツの場合は、慎重に選択する必要があり、特定のパスのリクエスト本文のみを記録するか、レコードのサンプリングのみを行う必要があります。

キャッシングもあります。一部のクエリ リクエストの結果は短期間では変化せず、ゲートウェイ層でキャッシュして直接返すことができるため、バックエンド サービスへの負担を軽減できます。ただし、どのインターフェイスがキャッシュに適しているか、またどれくらいの期間キャッシュする必要があるかは、ビジネスの特性によって異なります。

正直に言う

マイクロサービス アーキテクチャは両刃の剣のようなものです。小さなサービスに分割すると、開発と展開がより柔軟になりますが、管理も複雑になります。 API ゲートウェイは、この複雑なシステムの「フロント デスク」のようなものです。これは中核的なビジネスを処理しませんが、これなしではシステム全体がスムーズに動作することが困難になります。

数行のルーティング設定から始めて、セキュリティ、監視、電流制限機能を徐々に追加すると、この「受付係」の役割がますます重要になっていることがわかります。これにより、バックエンド サービスは、横断的な問題に対処することなく、最善の作業を行うことができます。

優れたツールとは、使いやすく、煩雑ではなく、重要な瞬間に役立つものであるべきです。一日中サービスに電話する際の煩雑な詳細を心配する必要がなくなった場合、おそらくこの機能の価値を理解できるでしょう。

2005年に設立され、キロパワーは、中国広東省東莞に本社を置く、コンパクトモーションユニットの専門メーカーです。モジュラードライブテクノロジーのイノベーションを活用し、キロパワー高性能モーター、精密減速機、マルチプロトコル制御システムを統合し、効率的でカスタマイズされたスマート ドライブ システム ソリューションを提供します。キロパワーは、スマート ホーム システム、自動エレクトロニクス、ロボティクス、精密農業、ドローン、産業オートメーションなどのさまざまな分野をカバーする製品で、世界中の 500 を超える企業クライアントにプロフェッショナルなドライブ システム ソリューションを提供してきました。

更新時間:2026-01-19

未来に力を与える

お客様の製品に適したモーターまたはギアボックスを推奨するには、Kpower の製品スペシャリストにお問い合わせください。

Kpowerにメールする
お問い合わせを送信
WhatsApp メッセージ
+86 0769 8399 3238