マイクロサービスとSOAの主な違いは、マイクロサービスがアプリケーションを個別のサービス群に分割するSOAの一種であるのに対し、SOAはアプリケーションのコンポーネントがネットワーク経由で他のコンポーネントにサービスを提供するソフトウェア設計スタイルであることである。
通常、モノリシック・アプリケーションは、複数のソフトウェア・コンポーネントをホストする1つのユニットです。
コンポーネントを一緒にホストして提供することが可能です。
モノリシック・アプリケーションには、いくつかの欠点があります。
さらに、プログラマーはさまざまな技術を使ってそれらを実装することができます。
そのため、これらのアプリケーションは柔軟性に欠け、1つのコンポーネントに障害が発生するとシステム全体に影響を及ぼしかねません。
そのため、アプリケーションの信頼性が低くなります。
また、拡張性に乏しく、大規模なアプリケーションを開発することが困難です。
マイクロサービスとSOAは、モノリシックなアプリケーションの限界を克服するための2つのアーキテクチャです。
マイクロサービスとは
マイクロサービスとは、アプリケーションを独立したサービスの集合に分割し、各サービスを個別に動作させるアーキテクチャスタイルです。
そのため、分散型アーキテクチャ、あるいは細粒度アーキテクチャと呼ばれる。
マイクロサービスには、機能系サービスと基盤系サービスの2種類があります。
機能サービスは、特定の機能のビジネスロジックを含むサービスであり、インフラサービスは、非ビジネスおよび非機能の操作を実行するサービスです。
マイクロサービスでは、コンポーネント間の通信はAPIレイヤーを使って行われる。
言い換えれば、ミドルウェアは存在しない。
一般に、REST APIはコンポーネント間の通信を確立するのに役立つ。
例えば、ショッピング・アプリケーションを想定してみよう。
ユーザーアカウント、商品カタログ、ショッピングカートはそれぞれ別の機能です。
各機能は別々のタスクに分かれ、それぞれのタスクは別々のサービスを扱います。
例えば、ショッピングカート機能には、商品表示や商品更新などのタスクがあります。
さらに、商品表示サービスは表示商品を処理し、商品更新サービスは更新商品サービスを処理する。
つまり、各サービスは特定のタスクを実行する。
SOAとは
SOAとは、アプリケーションコンポーネントを用いて、他のコンポーネントにサービスを提供するソフトウェア設計のスタイルです。
これらのアプリケーションコンポーネントは、通信プロトコルを使って互いに接続される。
サービスとは、機能の個別単位です。
さらに、リモートでアクセスでき、独立して更新することができる。
SOAにおけるサービスの種類は次の通りです。
ビジネスサービス(Business Service)とは、ビジネスの中核となる業務を行うサービスです。
エンタープライズサービスは、ビジネスサービスで定義された機能を実装するもので、アプリケーションサービスとインフラストラクチャサービスを使用する。
アプリケーションサービスは、機能の中核となる機能を表し、それらを直接またはユーザーインターフェースによって呼び出すことが可能である。
インフラストラクチャサービスは、非ビジネスおよび非技術的な操作を処理するサービスタイプです。
さらに、さまざまな言語とコンポーネントが、コンポーネントの開発に役立っている。
SOAでは、アプリケーションのさまざまなコンポーネント間の通信を可能にするために、Enterprise Service Bus(ESB)などのメッセージングミドルウェアが存在する。
例えば、ショッピング・アプリケーションを想定してみよう。
このアプリケーションには、ユーザーアカウントアプリケーション、ショッピングカートアプリケーション、商品カタログアプリケーションのような別々のアプリケーションがあります。
各アプリケーションは、複数の小さなタスクで構成されています。
さらに、それらすべてが接続され、1つのアプリケーションサービスが作成されます。
マイクロサービスとSOAの違い
定義
マイクロサービスとは、アプリケーションを疎結合のサービスの集合体として構成するサービス指向アーキテクチャ(SOA)の変形であるソフトウェア開発スタイルのことである。
SOAは、アプリケーションの構成要素からネットワーク上の通信プロトコルを介して他の構成要素にサービスを提供するソフトウェア設計のスタイルであるのに対し、マイクロサービスは、アプリケーションの構成要素から他の構成要素にサービスを提供するソフトウェア設計のスタイルです。
したがって、これはマイクロサービスとSOAの違いを説明している。
アーキテクチャの種類
さらに、マイクロサービスは粗粒アーキテクチャ、つまり分散型アーキテクチャであり、SOAは細粒アーキテクチャ、つまり集中型アーキテクチャです。
サービスの種類
マイクロサービスには機能サービスとインフラサービスがあるのに対し、SOAにはビジネスサービス、エンタープライズサービス、アプリケーションサービス、インフラサービスがあります。
したがって、この点もマイクロサービスとSOAの違いです。
通信
また、MicroservicesとSOAのもう一つの違いは、Microservicesが通信にAPIレイヤーを使用するのに対し、SOAは通信にミドルウェアを使用する点です。
スレッド
さらに、SOAがマルチスレッドであるのに対し、マイクロサービスはシングルスレッドです。
したがって、この点もマイクロサービスとSOAの違いです。
アプリケーション
SOAは、異機種混在の環境で異なるプロトコルを使用する複数のシステムを統合するのに役立ちますが、マイクロサービスのすべてのサービスは、同じリモートアクセスプロトコルで公開およびアクセスすることが可能です。
結論
マイクロサービスとSOAの主な違いは、マイクロサービスはSOAの一種で、アプリケーションを個別のサービス群に分割したものであることである。
SOAとは、アプリケーションの構成要素がネットワークを通じて他の構成要素にサービスを提供するソフトウェア設計スタイルです。
簡単に言えば、マイクロサービスはSOAの一種である。