マイクロサービス

Microservices

マイクロサービスとは

マイクロサービス(Microservices)とは、アプリケーションを独立した小さなサービスの集合として構築するソフトウェアアーキテクチャのスタイルです。各サービスは特定のビジネス機能を担当し、API を通じて他のサービスと通信します。モノリシック(一枚岩)アーキテクチャの対義語として位置づけられます。

表:マイクロサービスの要点まとめ
ひとことで言うとアプリを小さな独立部品に分けて、それぞれ別に開発・運用する設計。
何がうれしいか一部だけ更新でき、必要な部分だけ増強できる。障害の影響も限定的。
注意点分けすぎると管理が複雑になる。小規模なら一体型のほうが単純で速い。

マイクロサービスの特徴

各マイクロサービスは独立してデプロイ・スケーリング・更新が可能です。異なるプログラミング言語やデータベースを使用でき、チームごとに独立して開発を進められます。障害の影響範囲が限定されるため、システム全体の可用性が向上します。

図:マイクロサービスの構成例
1認証サービスログイン処理
▶
2推論サービスAI処理だけ担当
▶
3データサービス保存と検索
▶
4APIでつなぐそれぞれ独立に更新可
▶
5個別にスケール重い部分だけ増強

AIシステムでのマイクロサービス

AIシステムでは、前処理サービス、特徴量生成サービス、推論サービス、後処理サービスをマイクロサービスとして分離する設計が一般的です。これにより、推論モデルのみを更新したり、特定のサービスだけをスケールアウトすることが可能になります。例えば、画像認識と自然言語処理を別々のサービスとして運用し、負荷に応じて個別にスケーリングできます。

マイクロサービスの課題

サービス間通信のオーバーヘッド、分散システム特有の複雑性(障害の伝播、データの整合性)、運用監視の難しさが課題です。サービスメッシュ(Istio、Linkerdなど)や分散トレーシング(Jaeger、Zipkinなど)を導入して対処することが推奨されます。