マイクロサービス
2014年、ThoughtWorks社のマーチン・ファウラーとジェームス・ルイスが提唱したソフトウェアアーキテクチャである。
何がマイクロサービスであるか、という公式な定義は存在しないが、業界では徐々にコンセンサスが形成されつつある。マイクロサービスを特徴づける定義としてよく引き合いに出されるものとしては、以下のような点が挙げられる。
マーティン・ファウラーや他の専門家たちによれば、マイクロサービス・アーキテクチャ(microservice architecture; MSA)は、特定の技術にとらわれないHTTPなどのプロトコルを使用して、目的を達成するためにネットワーク越しのコミュニケーションのプロセスを実行する。ただし、サービスは共有メモリなどの他の種類のプロセス間通信のメカニズムを使用することもある。また、たとえばOSGIバンドルなどのように、同一のプロセス内で実行される場合もある。
マイクロサービス・アーキテクチャにおけるサービスは、独立にデプロイが可能である。
サービスは、きめ細かい粒度のビジネス機能を中心に組織される。マイクロサービスにおいて粒度は重要である。なぜなら、粒度こそ、このアプローチをSOAと異なるものにしているからである。
各サービスに最も適した異なるプログラミング言語、データベース、ハードウェアおよびソフトウェア環境で開発することができる。これは、1つのマイクロサービスがさまざまなプログラミング言語のパッチワークのように書かれるという意味ではない。
サービスはサイズが小さく、メッセージングを行い、コンテキストによって境界づけられ、自律的に開発される。また、中央集権的ではなく、独立してデプロイが可能である。