マイクロサービス
マイクロサービス(英語:microservices)とは、ソフトウェア開発の技法の1つであり、1つのアプリケーションを、ビジネス機能に沿った複数の小さいサービスの疎に結合された集合体として構成するサービス指向アーキテクチャ(service-oriented architecture; SOA)の1種である。マイクロサービスアーキテクチャでは、各サービスはきめ細かい粒度(英語版)を持ち、軽量なプロトコルを用いて通信を行う。
アプリケーションを異なる小さなサービスに分割することの利点は、モジュラリティ(英語版)が高くなることである。これによって、アプリケーションの理解、開発、テストがより簡単に行えるようになり、アーキテクチャの腐敗に対する弾力性が向上する。マイクロサービスによる開発を行うことで、開発が並列化され、少人数の自律的なチームにより、各チームが所有するサービスを独立に、開発、デプロイ、スケールさせることが可能になる。また、継続的リファクタリングを通して、個々のサービスのアーキテクチャ全体を置き換えることも可能になる。マイクロサービスベースのアーキテクチャでは、継続的デリバリーと継続的デプロイが可能になる。
従来のソフトウェアアーキテクチャは単一のアプリケーションとして構築されたモノリシックアーキテクチャが主流であった。しかし、ビジネスや環境の変化とともにアプリケーションへの変更サイクルが短くなり、特にモノリシックアーキテクチャの場合はアプリケーション全体を再構築して展開する必要がある。時間の経過とともに、適切なモジュール構造を維持することは難しいため、そのモジュール内の1つのモジュールにしか影響を与えない変更を維持するのが難しくなってしまう。
技術の発展とサービスの多様化に伴い、モジュールが独立して展開可能でなおかつスケーラブルであるようになる。 また、堅固なモジュール境界を提供し、それぞれの機能が異なるプログラミング言語で書かれることを可能にした。さらに、異なるチームによって開発・運用管理することもできるようになることで、一部の変更が全体へ影響を及ぼすことへのリスクがサービスの独立によって解消できるアプローチスタイルが出来上がった。