マイクロサービス アーキテクチャ(多くの場合、マイクロサービスと略される)は、アプリケーション開発におけるアーキテクチャ スタイルの一つです。マイクロサービスによって、大きなアプリケーションを、それぞれが独自の責任範囲を持つ独立した小さな部分に分割できます。単一のユーザー リクエストを処理するために、マイクロサービス ベースのアプリケーションが多数の内部マイクロサービスを呼び出して、レスポンスを作成します。
コンテナは、依存関係に気を取られることなくサービスの開発に集中できるため、マイクロサービス アーキテクチャの例として非常に適しています。サーバーレス コンピューティングも一般的なアプローチの一つです。サーバーレス コンピューティングを使用すると、サーバーやインフラストラクチャを管理することなくマイクロサービスを実行し、需要に応じて機能を自動的にスケーリングできます。
マイクロサービス アーキテクチャは、サービスのコレクションとしてアプリケーションを開発するアプリケーション アーキテクチャの一種です。マイクロサービス アーキテクチャ ダイアグラムとサービスを個別に開発、デプロイ、管理するためのフレームワークを提供します。
マイクロサービス アーキテクチャ内の、各マイクロサービスは、アプリケーションの機能に対応し、独立したタスクを処理するように構築された単一のサービスです。各マイクロサービスは、シンプルなインターフェースを介して他のサービスと通信し、ビジネス上の問題を解決します。
従来のモノリシック アプリケーションは、単一の統合されたユニットとして構築されます。すべてのコンポーネントは密結合され、リソースとデータを共有しています。特にアプリケーションの複雑さが増すにつれて、スケーリング、デプロイ、メンテナンスに問題が生じる可能性があります。一方、マイクロサービス アーキテクチャでは、アプリケーションが小規模な独立したサービス スイートに分割されます。各マイクロサービスは、独自のコード、データ、依存関係を持つ自己完結型です。この方法には以下のような潜在的メリットがあります。
マイクロサービスは一般的に、アプリケーション開発をスピードアップするために使用されます。一般的なマイクロサービス アーキテクチャの例を以下に示します。
モノリシックなプラットフォームでホストされている複雑なウェブサイトは、クラウドベースとコンテナベースのマイクロサービス プラットフォームに移行できます。
組織がエージェント クラウド環境に移行するのに伴い、マイクロサービスはエージェント ワークフローのバックボーンとして機能するようになっています。AI を活用したタスクを独立したサービスに分割することで、デベロッパーは、安全でスケーラブルなアーキテクチャ内で、データ取得、推論、実行などの特定の機能を実行するモジュール型エージェントを作成できます。
分散システムの複雑さを管理し、パフォーマンスを最適化するために、現在ではアーキテクトはさまざまなコア設計パターンを利用しています。
数十もの独立したサービスにわたって単一のリクエストを追跡するのは複雑になるため、オブザーバビリティはマイクロサービスにとって不可欠です。最新のチームは、指標、ログ、トレースを組み合わせて使用し、システムの健全性を把握しています。Gemini Cloud Assist などの AI を活用したツールを活用して、分散アプリケーションの異常を自動的に特定し、コンテキストに応じたトラブルシューティングを提供することで、オブザーバビリティをさらに強化できます。
分散マイクロサービス環境では、ネットワーク障害によってリクエストが再試行されることがあります。べき等性は、設計の基本原則です。べき等性により、オペレーションを複数回実行しても、初回実行時と同じ結果が得られることが保証されます。これは、決済処理、注文管理、イベント ドリブン システムにおいてデータの整合性を維持するために不可欠です。
最新のアーキテクチャでは、イベントを使用した非同期通信がますます好まれるようになっています。EDA では、サービスがイベント(状態の変化)をメッセージ ブローカーにパブリッシュし、他のサービスがこれらのイベントをサブスクライブします。これにより、疎結合が促進され、障害の分離が改善されます。