Modern Times編集部

Modern Times編集部

(写真:Macrovector / shutterstock

マイクロサービス(microservice)

ソフトウェア開発のアーキテクチャーの1つの手法です。1つのアプリケーションやシステムを、独立した小さい単位の「サービス」として開発した複数のソフトウェアで構成します。アプリケーションをすべて統合して開発する場合に比べて、小さなサービス単位で開発することによって、開発やテスト、改修などがより容易に行えるようになります。

Updated by Modern Times on March, 15, 2023, 5:00 am JST

マイクロサービスを実現するアーキテクチャーを、マイクロサービスアーキテクチャーと呼びます。これは、サービス思考アーキテクチャー(service-oriented architecture:SOA)の一種です。マイクロサービスアーキテクチャーでは、複数のサービスは疎結合で構成され、ネットワークを介してコミュニケーションを行います。

マイクロサービスのメリット

従来型のアプリケーションは、単体のサービスとして構成されて実行していました。これをモノリシック(monolithic)アーキテクチャーと呼びます。モノリシックとは「1枚岩」「頑丈な」「巨大な」といった意味を持ち、サービスの内部のプロセスが密結合して構成されています。一方のマイクロサービスでは、機能ごとに小さなサービスを作り、それらをネットワークを介して組み合わせて利用することで、ユーザーに最終的なアプリケーションとしての機能を提供します。

例えば、EC(電子商取引)のアプリケーションであれば、ユーザーはユーザーインタフェースを用いて、商品を検索して決済方法を指定して注文します。モノリシックなアプリケーションであれば、これらで用いるユーザーインタフェースや検索機能、商品管理機能、決済機能、発注処理機能などは、密結合したアプリケーションとして開発します。内部的には機能要件でプロセスが分かれていたとしても、アプリケーション内で個々のプロセスは密に結合して最適な動作をするように設計されています。マイクロサービスではアーキテクチャーが大きく異なり、ユーザーインタフェース、検索機能、商品管理機能、決済機能、発注処理機能を独立したサービスとして構成します。サービスが連携して1つのアプリケーションを作り上げているのです。

モノリシックなアーキテクチャーで作られたアプリケーションでは、一部のプロセスの機能にトラブルがあり改修することになったとしても、アプリケーション全体の改修が必要になります。新しい機能が要求されるようになったときも同様で、改修に対する影響範囲が大きく、コストや作業、時間がかかってしまいます。結果として、ビジネスの変化のスピードに追従できなくなるリスクがあります。マイクロサービスアーキテクチャーであれば、それぞれのプロセスは独立したサービスとして機能を提供しています。トラブルの対応、新機能、外部環境への対応などでも、該当するサービスだけを改修することで速やかに実現できるわけです。サービス同士が疎結合で自律的に動いているから実現できる効果です。迅速性や柔軟性、拡張性、耐障害性、開発の容易さなどの面で、数多くのメリットが考えられます。

マイクロサービスを実現する技術

マイクロサービスを実現するために、複数の技術が用いられています。その中でも、APIとコンテナが中核となる技術です。

API(Application Programming Interface)は、ソフトウェアやサービスなどの間をつなぐためのインタフェースです。マイクロサービスでは、独立したサービスが機能を提供し、それらを組み合わせて最終的なアプリケーションとしてサービスを提供します。サービス間を適切に連携する仕組みとして、APIが不可欠です。APIを適切に整備した環境がないと、サービス間の連携がスムーズにできない可能性があります。

コンテナは、独立したマイクロサービスを効率的に動作させるために有効な仮想化技術の1つです。コンテナには、アプリケーションとミドルウェア、ライブラリなどの実行環境がまとめられています。ホストOSの上に設けたコンテナエンジンの上で、コンテナが独立してアプリケーションを実行できる仕組みです。マイクロサービスアーキテクチャーで、複数の小さなサービスを独立して構成する際に、コンテナの技術が適しているのです。

半面、独立したサービスを組み合わせるマイクロサービスでは、モノリシックなアプリケーションにくらべて構成が複雑になる可能性があります。APIの整備やコンテナの利用なども含めて、全体のアプリケーションを機能で分割してマイクロサービスの集合体として実現するための構成を整理する必要もあります。マイクロサービスは自律したサービスとして個別に構築や改修ができるだけに、サービス提供基盤として適切な運用管理が求められます。こうした状況も理解した上で、マイクロサービスのメリットを得られるように導入すると良いでしょう。