Microservice-architecture-introduction
マイクロサービスアーキテクチャ-はじめに
マイクロサービスは、サービスベースのアプリケーション開発方法論です。 この方法論では、大きなアプリケーションは最小の独立したサービスユニットに分割されます。 マイクロサービスは、アプリケーション全体を相互接続されたサービスのコレクションとして分割することにより、サービス指向アーキテクチャ(SOA)を実装するプロセスであり、各サービスは1つのビジネスニーズのみに対応します。
Going Microのコンセプト
サービス指向アーキテクチャでは、ソフトウェアパッケージ全体が小さな相互接続されたビジネスユニットに細分されます。 これらの各小規模ビジネスユニットは、異なるプロトコルを使用して互いに通信し、クライアントにビジネスを成功させます。 さて、問題は、Microservice Architecture(MSA)がSOAとどう違うのかということです。 一言で言えば、SOAは設計パターンであり、MicroserviceはSOAを実装するための実装方法論です。または、MicroserviceはSOAの一種と言えます。
以下は、マイクロサービス指向のアプリケーションを開発する際に留意する必要があるいくつかのルールです。
- 独立-各マイクロサービスは独立して展開可能でなければなりません。
- カップリング-すべてのマイクロサービスは、一方の変更が他方に影響を与えないように、互いに疎結合する必要があります。
- ビジネス目標-アプリケーション全体の各サービスユニットは、最小であり、1つの特定のビジネス目標を達成できる必要があります。
マイクロサービスを詳細に理解するためのオンラインショッピングポータルの例を考えてみましょう。 次に、このEコマースポータル全体を、ユーザー管理、注文管理、チェックイン、支払い管理、配送管理などの小規模ビジネスユニットに分割します。 1つの注文を成功させるには、特定の時間枠内でこれらすべてのモジュールを進める必要があります。 以下は、1つの電子商取引システムに関連付けられたさまざまなビジネスユニットの統合イメージです。
これらの各ビジネスモジュールには、独自のビジネスロジックと利害関係者が必要です。 特定のニーズのために、他のサードパーティベンダーソフトウェアとも通信します。 たとえば、注文管理はユーザー管理と通信してユーザー情報を取得できます。
ここで、前述のこれらすべてのビジネスユニットでオンラインショッピングポータルを実行していることを考慮すると、フロントエンド、バックエンド、データベースなどの異なるレイヤーで構成されるエンタープライズレベルのアプリケーションが必要になります。 アプリケーションが1つのwarファイルでスケーリングおよび完全に開発されていない場合、典型的なモノリシックアプリケーションとして呼び出されます。 IBMによると、典型的なモノリシックアプリケーションは、すべてのユーザーリクエストを処理するエンドポイントまたはアプリケーションが1つだけである場合、内部的に次のモジュール構造を持つ必要があります。
上の画像では、さまざまなユーザーとビジネスデータを保存するためのデータベースなど、さまざまなモジュールを見ることができます。 フロントエンドには、使用するユーザーまたはビジネスデータを通常レンダリングする別のデバイスがあります。 途中には、ユーザーエンドからのリクエストを受け入れ、リソースの助けを借りてそれを処理し、ユーザーに戻すレンダリング可能なEARまたはWARファイルである1つのパッケージがあります。 ビジネスが上記の例の変更を必要とするまで、すべてがうまくいきます。
ビジネスニーズに応じてアプリケーションを変更する必要がある次のシナリオを検討してください。
ビジネスユニットでは、「検索」モジュールにいくつかの変更が必要です。 次に、検索プロセス全体を変更し、アプリケーションを再デプロイする必要があります。 その場合、他のユニットを変更せずに再デプロイします。
ここでも、ビジネスユニットは「ウォレット」オプションを含めるために「チェックアウト」モジュールでいくつかの変更が必要です。 「チェックアウト」モジュールを変更し、サーバーに再デプロイする必要があります。 ソフトウェアパッケージのさまざまなモジュールを再デプロイしていることに注意してください。ただし、変更は加えていません。 ここに、マイクロサービスアーキテクチャにより固有のサービス指向アーキテクチャの概念があります。 ソフトウェアの各モジュールが独立したユニットとして動作し、単一のビジネスタスクを独立して処理できるように、モノリシックアプリケーションを開発できます。
次の例を考えてください。
上記のアーキテクチャでは、コンパクトなエンドツーエンドサービスでearファイルを作成していません。 代わりに、ソフトウェアのさまざまな部分をサービスとして公開することで分割しています。 ソフトウェアのどの部分でも、それぞれのサービスを消費することで簡単に相互に通信できます。 これが、最新のWebアプリケーションでマイクロサービスが大きな役割を果たす方法です。
マイクロサービスのラインでのショッピングカートの例を比較しましょう。 「検索」、「フィルター」、「チェックアウト」、「カート」、「推奨」などのさまざまなモジュールでショッピングカートを分類できます。 ショッピングカートポータルを構築する場合は、上記のモジュールを互いに接続して、24時間365日の優れたショッピングエクスペリエンスを提供できるように構築する必要があります。
長所と短所
以下は、モノリシックアプリケーションを使用する代わりにマイクロサービスを使用する利点に関するいくつかのポイントです。
利点
- サイズが小さい-マイクロサービスはSOA設計パターンの実装です。 できる限りサービスを維持することをお勧めします。 基本的に、サービスは複数のビジネスタスクを実行するべきではないため、他のモノリシックアプリケーションよりも明らかにサイズが小さく、保守が容易です。
- Focused -前述のように、各マイクロサービスは1つのビジネスタスクのみを提供するように設計されています。 マイクロサービスを設計する際、アーキテクトはサービスの焦点、つまり成果物について心配する必要があります。 定義上、1つのマイクロサービスは本質的にフルスタックであり、1つのビジネスプロパティのみを提供することに専念する必要があります。
- 自律-各マイクロサービスは、アプリケーション全体の自律的なビジネスユニットである必要があります。 したがって、アプリケーションはより疎結合になり、メンテナンスコストの削減に役立ちます。
- テクノロジーの不均一性-マイクロサービスは、1つのビジネスユニットで互いに通信するためのさまざまなテクノロジーをサポートしています。これにより、開発者は正しい場所で正しいテクノロジーを使用できます。 異種システムを実装することにより、最大のセキュリティ、速度、およびスケーラブルなシステムを取得できます。
- レジリエンス-レジリエンスは、ソフトウェアユニットを分離する特性です。 マイクロサービスは、方法論の構築において高いレベルの回復力を備えているため、1つのユニットが失敗しても、ビジネス全体に影響を与えることはありません。 復元力は、非常にスケーラブルで結合の少ないシステムを実装するもう1つのプロパティです。
- 展開の容易さ-アプリケーション全体が小さなユニットに分割されているため、すべてのコンポーネントは本質的にフルスタックである必要があります。 これらはすべて、同じ種類の他のモノリシックアプリケーションとは異なり、時間の複雑さを軽減しながら、あらゆる環境に非常に簡単に展開できます。
次に、マイクロサービスアーキテクチャの欠点に関するいくつかのポイントを示します。
デメリット
- 分散システム-技術的な異質性により、マイクロサービスのさまざまな部分を開発するためにさまざまなテクノロジーが使用されます。 この巨大な異種分散ソフトウェアをサポートするには、熟練した専門家の膨大なセットが必要です。 したがって、分散と不均一性は、マイクロサービスを使用することの最大の欠点です。
- コスト-さまざまなビジネスタスクのためにさまざまなサーバースペースを維持する必要があるため、マイクロサービスはコストがかかります。
- エンタープライズ対応-技術は日々進化しているため、マイクロサービスアーキテクチャはさまざまな技術の集合体と考えることができます。 したがって、マイクロサービスアプリケーション企業を従来のソフトウェア開発モデルと比較する準備を整えることは非常に困難です。
SOAを介したマイクロサービス
次の表に、SOAとマイクロサービスの特定の機能をリストし、SOAよりもマイクロサービスを使用することの重要性を示します。
Component | SOA | Microservice |
---|---|---|
Design pattern | SOA is a design paradigm for computer software, where software components are exposed to the outer world for usage in the form of services. | Micro Service is a part of SOA. It is a specialized implementation of SOA. |
Dependency | Business units are dependent on each other. | All business units are independent of each other. |
Size | Software size is bigger than the conventional software. | Software size is small. |
Technology | Technology stack is less than Microservice. | Microservice is heterogeneous in nature as exact technologies are used to perform a specific task. Microservices can be considered as a conglomerate of many technologies. |
Autonomous and Focus | SOA applications are built to perform multiple business tasks. | Microservice applications are built to perform a single business task. |
Nature | Monolithic in nature. | Full stack in nature. |
Deployment | Deployment is time-consuming. | Deployment is very easy. Hence, it will be less time-consuming. |
Cost-effectiveness | More cost-effective. | Less cost-effective. |
Scalability | Less compared to Microservices. | Fully scaled. |
Example |
Let us consider one online CAB booking application. If we want to build that application using SOA, then its software units will be −
a |
同じアプリケーションがマイクロサービスアーキテクチャを使用して構築されている場合、そのAPIは次のようになります-
|