gRPC と REST を使用したマイクロサービス アーキテクチャの統合の課題

gRPC と REST を使用したマイクロサービス アーキテクチャの統合の課題

この記事では、マイクロサービスの実装における現在の明らかな問題をまとめ、主に以下の解決策を提案します。

  • 一般的に RPC 通信を使用するサービス間の内部通信。
  • 外部のサードパーティ システムは、Http Rest を介してサービスにアクセスする必要があり、これらのサービスは RPC インターフェイスのみを提供する場合があります。

導入

マイクロサービス アーキテクチャの採用率は上昇しており、保守性やスケーラビリティなど、それがもたらす柔軟性が広く受け入れられています。コンテナ化により、マイクロサービス アーキテクチャはさらに強力になり、ユーザーは依存関係の解決ではなく機能に重点を置いたアプリケーションを作成できるようになります。クラウドネイティブ アプリケーション開発は、コンテナを使用したマイクロサービス アーキテクチャによって実現されます。

分散システムの設計は複雑であり、ビジネス要件の性質が異なるとさらに複雑になります。エンドツーエンドのビジネス機能を実現するには、複数のマイクロサービスを相互接続するか呼び出す必要があります。統合テクノロジの選択が重要になります。現在採用されている一般的なアプローチは、サービス間通信には gRPC (Google Remote Procedure Call) を活用し、クライアント向けサービスには REST (Representational State Transfer) API を活用することです。

  • gRPC – RPC API 実装に従い、メッセージ交換に HTTP 2.0 プロトコルとプロトコル バッファーを利用します。
  • REST – アーキテクチャは HTTP プロトコルに準拠し、メッセージングに使用されるデータ形式は JSON または XML です。

他のサービスによって内部的に使用され、サードパーティのシステムやユーザーに公開される必要がある機能を設計および開発する際の課題

Order Manager マイクロサービスと Product Inventory マイクロサービスで構成される注文管理システムのサンプル シナリオを考えてみましょう。

製品在庫サービスには、さまざまなカテゴリを含むすべての製品の詳細とそれらの関係が含まれています。製品の詳細とその関係を外部システムやユーザー インターフェイスに公開するには、REST API が必要です。

Order Manager サービスは、顧客の注文のためのフロントエンド システムとして機能する別のデジタル チャネルとインターフェイスします。これは、製品在庫の詳細を検証するために、内部的に製品在庫サービスを呼び出します。

現在のシナリオでは、このような要件に対処する方法は複数あり、そのオプションのいくつかを以下に詳しく説明します。

オプション1:

サービス間通信には gRPC を活用し、クライアント向けサービスには REST を活用するアプローチに従ってください。

  • サービス間通信のために gRPC 経由で製品在庫サービスを公開する

契約には Protobuf 定義を使用し、サーバー側の実装を生成するために Java を使用しました。

  • サードパーティのシステムで使用できるように REST API と同じコンテンツを公開するには、REST コントローラーと応答本文を作成するなどの追加のコーディングが必要です。

このアプローチでは、gRPC と REST の追加のコーディングの複雑さと依存関係の管理に対処する必要があります。

オプション2:

マイクロサービスアグリゲータパターンに従って、

  • さまざまなサービスからの応答を集約して REST API 機能を公開するアグリゲーター サービスを作成するか、ラッパー REST API サービスを実装します。これには、他の内部サービスと通信して応答を集約するために必要な gRPC クライアント実装も含まれます。これには、プロトコル バッファーから API 応答エンティティを作成するためのコードが含まれます。

gRPC とプロトコル バッファーは、開発者に契約を厳密に遵守させ、通信間でメッセージが失われないようにします。 RPC を定義するコントラクトファーストの性質と、関連するサービス間の共同開発アプローチは優れていますが、アグリゲーター サービスによって追加のオーバーヘッドが発生します。

要約する

建築家は分散システムの設計に多くの考慮を注ぎます。効果的な統合パターンを定義することは、ソリューションの成功に不可欠です。

さまざまな統合オプションと課題の概要は次のとおりです。

  • データを REST (JSON ベース) として内部および外部に公開する: このアプローチは最も一般的ですが、残念ながらすべての要件を満たしているわけではありません。 JSON ペイロードと HTTP プロトコルの制限により、これはデータ集約型のサービス間通信には適していません。
  • gRPC を内部および外部に公開します。データ交換はバイナリ形式で行われ、人間が判読することはできません。 gRPC は HTTP2.0 に依存していますが、最新のブラウザではサポートが制限されています。
  • REST と gRPC の作成: 前のオプションで説明したように、追加のコーディングと統合のオーバーヘッドが発生します。広く採用されているオープンソース フレームワークでは、さまざまなテクノロジー (Java、Python、Node など) にわたる成熟した gRPC 実装が不足しています。

次回のマイクロサービス ベースのソリューションの設計を検討する際には、これらのさまざまな統合パターンを考慮して設計することが重要です。

<<:  エッジネットワークがデータセンターのエコシステムを再構築

>>:  使いやすくて感動するKubernetesツールとフレームワーク4つ

推薦する

AWSはアマゾンから分離される可能性、CEOは合意に従うと語る

最近、海外メディアCNBCによると、アマゾンのクラウドコンピューティング事業のCEO、アンディ・ジャ...

百度のスナップショットを同じ日に更新できると文句を言うのは自分を欺いている

A5 で、「Web サイトのスナップショットをその日のバージョンにするのはとても簡単であることが判明...

胡先東氏が検索最適化の実用化について語る

5月25日、厦門でグローバル検索エンジン戦略会議が開催されました。Yousou Technology...

キーワードの意味的関連性を見る

前回の百度アップデートでは、恵州SEOブログランキングからこのような小さな発見がありましたので、皆さ...

建材企業のウェブサイトで製品を宣伝するための最も効果的で最良な3つの方法の簡単な分析

インターネットの継続的な発展に伴い、ますます多くのユーザーがインターネットに依存するようになり、イン...

開始: Hostgator 50% オフ、com 登録 $2.95

Hostgator から、22 日の深夜から中部標準時の午後 11 時 59 分までプロモーションが...

moonvm: 台湾の VPS、HENET データセンター、600Mbps の直接接続帯域幅、月間 20T のトラフィック、月額 99 ドル

moonvm は、henet と APOL データ センターから選択できる台湾の VPS、主に台湾の...

ソフト記事執筆共有:「美」と「知恵」が共存する

最近、私はseowhyフォーラムでソフト記事の執筆経験をシェアしている著者を見ました。その文章は非常...

フォーラムに関するいくつかの考え

ウェブマスターはフォーラム プログラムに精通している必要があると思います。現在、最も広く使用されてい...

AIがクラウドコンピューティング管理の改善に役立ついくつかの方法

企業がクラウド管理について考えるとき、主にパフォーマンスの監視、セキュリティの維持、コンプライアンス...

ネットワーク編集者の重要な資質についての簡単な議論

私はウェブ編集者として2年以上働いています。この職業は退屈すぎるという印象を持つ人が多いようです。ウ...

360 社に対する「ロボット契約違反」を理由とした百度の巨額請求の解釈: データ争奪戦

トラブルメーカー360が直面している巨額の訴訟が、まもなく裁判にかけられる。百度は奇虎360に対し、...

Baidu リソースを使用して Web サイトを最適化する方法

今日、Huowang SEO は、Baidu の関連リソースを使用して Web サイトを最適化する方...

上:Raysync Mac版の機能プレビュー

Raysync はビッグデータ転送ソフトウェア (プラットフォーム) として、常に前進し、より包括的...

マルチクラウド: 新しい監視キャッシュ

概要:企業はクラウド プラットフォームを採用しており、多くの場合、特定のアプリケーションを実行するた...