マイクロサービスアーキテクチャ-はじめに

マイクロサービスは、サービスベースのアプリケーション開発方法論です。この方法では、大きなアプリケーションは最小の独立したサービスユニットに分割されます。マイクロサービスは、アプリケーション全体を相互接続されたサービスのコレクションとして分割することにより、サービス指向アーキテクチャ(SOA)を実装するプロセスであり、各サービスは1つのビジネスニーズのみに対応します。

マイクロ化のコンセプト

サービス指向アーキテクチャでは、ソフトウェアパッケージ全体が、相互接続された小さなビジネスユニットに細分化されます。これらのスモールビジネスユニットはそれぞれ、異なるプロトコルを使用して相互に通信し、クライアントにビジネスを成功させます。ここで問題となるのは、マイクロサービスアーキテクチャ(MSA)とSOAの違いは何ですか?一言で言えば、SOAは設計パターンであり、マイクロサービスはSOAを実装するための実装方法論です。つまり、マイクロサービスはSOAの一種であると言えます。

以下は、マイクロサービス指向のアプリケーションを開発する際に留意する必要のあるいくつかのルールです。

  • Independent −各マイクロサービスは個別にデプロイ可能である必要があります。

  • Coupling −すべてのマイクロサービスは、一方の変更が他方に影響を与えないように、互いに疎結合する必要があります。

  • Business Goal −アプリケーション全体の各サービスユニットは最小であり、1つの特定のビジネス目標を達成できる必要があります。

マイクロサービスを深く理解するためのオンラインショッピングポータルの例を考えてみましょう。ここで、このEコマースポータル全体を、ユーザー管理、注文管理、チェックイン、支払い管理、配送管理などの小規模なビジネスユニットに分割しましょう。1つの成功した注文は、特定の時間内にこれらすべてのモジュールを通過する必要があります。フレーム。以下は、1つの電子商取引システムに関連するさまざまなビジネスユニットの統合イメージです。

これらの各ビジネスモジュールには、独自のビジネスロジックと利害関係者が必要です。それらは、特定のニーズのために他のサードパーティベンダーソフトウェアと通信し、また相互に通信します。たとえば、注文管理はユーザー管理と通信してユーザー情報を取得する場合があります。

ここで、前述のこれらすべてのビジネスユニットでオンラインショッピングポータルを実行していることを考えると、フロントエンド、バックエンド、データベースなどのさまざまなレイヤーで構成されるエンタープライズレベルのアプリケーションが必要です。アプリケーションがスケーリングされていない場合単一のwarファイルで完全に開発された場合、それは典型的なモノリシックアプリケーションと呼ばれます。IBMによると、一般的なモノリシックアプリケーションは、内部で次のモジュール構造を備えている必要があり、1つのエンドポイントまたはアプリケーションのみがすべてのユーザー要求を処理します。

上の画像では、さまざまなユーザーやビジネスデータを保存するためのデータベースなどのさまざまなモジュールを見ることができます。フロントエンドには、通常使用するユーザーデータまたはビジネスデータをレンダリングするさまざまなデバイスがあります。真ん中には、ユーザー側からのリクエストを受け入れ、リソースを利用して処理し、ユーザーにレンダリングする、デプロイ可能なEARまたはWARファイルにすることができる1つのパッケージがあります。上記の例でビジネスが変更を必要とするまでは、すべて問題ありません。

ビジネスニーズに応じてアプリケーションを変更する必要がある次のシナリオを検討してください。

ビジネスユニットは、「検索」モジュールでいくつかの変更が必要です。次に、検索プロセス全体を変更して、アプリケーションを再デプロイする必要があります。その場合、何も変更せずに他のユニットを再デプロイします。

ここでも、ビジネスユニットで「チェックアウト」モジュールを変更して「ウォレット」オプションを含める必要があります。ここで、「チェックアウト」モジュールを変更して、同じものをサーバーに再デプロイする必要があります。ソフトウェアパッケージのさまざまなモジュールを再デプロイしていることに注意してください。ただし、変更は加えていません。ここに、マイクロサービスアーキテクチャに固有のサービス指向アーキテクチャの概念があります。ソフトウェアのすべてのモジュールが独立したユニットとして動作し、単一のビジネスタスクを独立して処理できるように、モノリシックアプリケーションを開発できます。

次の例を考えてみましょう。

上記のアーキテクチャでは、コンパクトなエンドツーエンドサービスでearファイルを作成していません。代わりに、ソフトウェアのさまざまな部分をサービスとして公開することで分割しています。ソフトウェアのどの部分も、それぞれのサービスを利用することで、互いに簡単に通信できます。これが、マイクロサービスが最新のWebアプリケーションで大きな役割を果たしている方法です。

マイクロサービスのラインでのショッピングカートの例を比較してみましょう。ショッピングカートは、「検索」、「フィルター」、「チェックアウト」、「カート」、「推奨」などのさまざまなモジュールに分類できます。ショッピングカートポータルを構築する場合は、上記のモジュールを相互に接続して、24時間年中無休で優れたショッピング体験を提供できるようにします。

長所と短所

以下は、モノリシックアプリケーションを使用する代わりにマイクロサービスを使用する利点に関するいくつかのポイントです。

利点

  • Small in size−マイクロサービスはSOAデザインパターンの実装です。できる限りサービスを維持することをお勧めします。基本的に、サービスは複数のビジネスタスクを実行するべきではないため、他のモノリシックアプリケーションよりも明らかにサイズが小さく、保守が容易です。

  • Focused−前述のように、各マイクロサービスは1つのビジネスタスクのみを提供するように設計されています。マイクロサービスを設計する際、アーキテクトはサービスの焦点である成果物について心配する必要があります。定義上、1つのマイクロサービスは本質的にフルスタックであり、1つのビジネスプロパティのみを提供することを約束する必要があります。

  • Autonomous−各マイクロサービスは、アプリケーション全体の自律的なビジネスユニットである必要があります。したがって、アプリケーションはより疎結合になり、メンテナンスコストの削減に役立ちます。

  • Technology heterogeneity−マイクロサービスは、1つのビジネスユニットで相互に通信するためのさまざまなテクノロジーをサポートします。これにより、開発者は正しいテクノロジーを正しい場所で使用できます。異種システムを実装することにより、最大のセキュリティ、速度、およびスケーラブルなシステムを実現できます。

  • Resilience−レジリエンスは、ソフトウェアユニットを分離する特性です。マイクロサービスは、構築方法論において高レベルの回復力に従うため、1つのユニットに障害が発生しても、ビジネス全体に影響を与えることはありません。レジリエンスは、拡張性が高く、結合の少ないシステムを実装するもう1つのプロパティです。

  • Ease of deployment−アプリケーション全体が小さなユニットに分割されているため、すべてのコンポーネントは本質的にフルスタックである必要があります。それらはすべて、同じ種類の他のモノリシックアプリケーションとは異なり、時間の複雑さが少なく、非常に簡単に任意の環境に展開できます。

以下は、マイクロサービスアーキテクチャの欠点に関するいくつかのポイントです。

短所

  • Distributed system−技術的な異質性のため、マイクロサービスのさまざまな部分を開発するためにさまざまなテクノロジーが使用されます。この大きな異種分散ソフトウェアをサポートするには、熟練した専門家の膨大なセットが必要です。したがって、分散型および異質性は、マイクロサービスを使用することの最大の欠点です。

  • Cost −マイクロサービスは、ビジネスタスクごとに異なるサーバースペースを維持する必要があるため、コストがかかります。

  • Enterprise readiness−テクノロジーは日々進化しているため、マイクロサービスアーキテクチャはさまざまなテクノロジーの集合体と見なすことができます。したがって、マイクロサービスアプリケーションエンタープライズを従来のソフトウェア開発モデルと比較できるようにすることは非常に困難です。

SOAを介したマイクロサービス

次の表に、SOAとマイクロサービスの特定の機能を示します。SOAよりもマイクロサービスを使用することの重要性を示しています。

成分 SOA マイクロサービス
デザインパターン SOAは、コンピューターソフトウェアの設計パラダイムであり、ソフトウェアコンポーネントは、サービスの形で使用するために外界に公開されます。 マイクロサービスはSOAの一部です。これはSOAの特殊な実装です。
依存 ビジネスユニットは相互に依存しています。 すべてのビジネスユニットは互いに独立しています。
サイズ ソフトウェアのサイズは、従来のソフトウェアよりも大きくなっています。 ソフトウェアのサイズが小さい。
技術 テクノロジースタックはマイクロサービスよりも少ないです。 正確なテクノロジーを使用して特定のタスクを実行するため、マイクロサービスは本質的に異種混合です。マイクロサービスは、多くのテクノロジーの集合体と見なすことができます。
自律性と集中性 SOAアプリケーションは、複数のビジネスタスクを実行するように構築されています。 マイクロサービスアプリケーションは、単一のビジネスタスクを実行するように構築されています。
自然 本質的にモノリシック。 自然界のフルスタック。
展開 展開には時間がかかります。 展開は非常に簡単です。したがって、時間がかからなくなります。
費用対効果 より費用効果が高い。 費用効果が低い。
スケーラビリティ マイクロサービスに比べて少ないです。 フルスケール。
1つのオンラインCAB予約アプリケーションについて考えてみましょう。SOAを使用してそのアプリケーションを構築する場合、そのソフトウェアユニットは次のようになります。
  • GetPaymentsとDriverInformationとMappingDataAPI
  • AuthenticateUsersAnd DriversAPI
同じアプリケーションがマイクロサービスアーキテクチャを使用して構築されている場合、そのAPIは次のようになります。
  • SubmitPaymentsService
  • GetDriverInfoService
  • GetMappingDataService
  • AuthenticateUserService
  • AuthenticateDriverService