Microservice-architecture-composition-patterns
構成パターン
ソフトウェア構成とは、ソフトウェア製品を構築する方法を意味します。 基本的に、ソフトウェアのさまざまなモジュールが特定のビジネス目標のために通信する高レベルのソフトウェアアーキテクチャ図を扱います。 この章では、組織で広く使用されているさまざまなソフトウェア構成パターンについて学習します。 マイクロサービスでは、各機能を1つのプロセスに分割します。 これらの各サービスは、本質的に独立したフルスタックです。
機能分解は、マイクロサービスの構築に重要な役割を果たします。 アプリケーションに俊敏性、柔軟性、およびスケーラビリティを提供します。
アグリゲーターパターン
アグリゲーターパターンは、マイクロサービスの開発中に実装できる最も単純なWebパターンです。 この構成パターンでは、単純なWebモジュールがロードバランサーとして機能します。つまり、要件に応じてさまざまなサービスを呼び出します。 以下は、アグリゲーター設計を備えたシンプルなマイクロサービスWebアプリを示す図です。 次の図に示すように、「アグリゲーター」は、さまざまなサービスを1つずつ呼び出す役割を果たします。 サービスA、B、Cの結果にビジネスロジックを適用する必要がある場合は、アグリゲーター自体にビジネスロジックを実装できます。
アグリゲーターは、別のサービスとして再び外部に公開することができ、必要に応じて他のサービスで使用できます。 アグリゲーターパターンWebサービスを開発する際には、サービスA、B、Cのそれぞれが独自のキャッシングレイヤーを持ち、本質的にフルスタックであることに留意する必要があります。
プロキシパターン
プロキシマイクロサービスパターンは、アグリゲーターモデルのバリエーションです。 このモデルでは、集約モジュールの代わりにプロキシモジュールを使用します。 プロキシサービスは、異なるサービスを個別に呼び出す場合があります。
プロキシパターンでは、ダンププロキシレイヤーを提供することにより、1レベルの追加のセキュリティを構築できます。 この層は、インターフェースと同様に機能します。
連鎖パターン
名前が示すように、このタイプの構成パターンはチェーン構造に従います。 ここでは、クライアント層とサービス層の間に何も使用しません。 代わりに、クライアントがサービスと直接通信できるようにし、1つのサービスの出力が次のサービスの入力になるように、すべてのサービスをチェーン化します。 次の画像は、典型的な連鎖パターンのマイクロサービスを示しています。
このアーキテクチャの大きな欠点の1つは、プロセス全体が完了するまでクライアントがブロックされることです。 したがって、チェーンの長さをできるだけ短くすることを強くお勧めします。
ブランチマイクロサービスパターン
ブランチマイクロサービスは、アグリゲーターパターンとチェーンパターンの拡張バージョンです。 この設計パターンでは、クライアントはサービスと直接通信できます。 また、1つのサービスが一度に複数のサービスと通信できます。 次に、Branch Microserviceの図を示します。
ブランチマイクロサービスパターンにより、開発者はサービス呼び出しを動的に構成できます。 すべてのサービス呼び出しは同時に行われます。つまり、サービスAはサービスBとCを同時に呼び出すことができます。
共有リソースパターン
共有リソースパターンは、実際には前述のすべてのタイプのパターンの集合体です。 このパターンでは、クライアントまたはロードバランサーは必要に応じて各サービスと直接通信します。 これは、ほとんどの組織で広く採用されている最も効果的な設計パターンです。 以下は、共有リソースの設計パターンを図で表したものです。