マイクロサービス アーキテクチャとは

マイクロサービス アーキテクチャ(多くの場合、マイクロサービスと略される)は、アプリケーション開発におけるアーキテクチャ スタイルの一つです。マイクロサービスによって、大きなアプリケーションを、それぞれが独自の責任範囲を持つ独立した小さな部分に分割できます。単一のユーザー リクエストを処理するために、マイクロサービス ベースのアプリケーションが多数の内部マイクロサービスを呼び出して、レスポンスを作成します。

コンテナは、依存関係に気を取られることなくサービスの開発に集中できるため、マイクロサービス アーキテクチャの例として非常に適しています。サーバーレス コンピューティングも一般的なアプローチです。チームはサーバーやインフラストラクチャを管理せずにマイクロサービスを実行でき、需要に応じて関数が自動的にスケーリングされます。

Google Kubernetes Engine(GKE)Cloud Run がコンテナを使用してマイクロサービス ベースのアプリケーションを作成する方法については、こちらをご覧ください。

準備ができたら新規のお客様には、Google Cloud で使用できる無料クレジット $300 分を差し上げます。

マイクロサービス アーキテクチャの詳細
マイクロサービス アーキテクチャの詳細

マイクロサービス アーキテクチャの定義

マイクロサービス アーキテクチャは、サービスのコレクションとしてアプリケーションを開発するアプリケーション アーキテクチャの一種です。マイクロサービス アーキテクチャ ダイアグラムとサービスを個別に開発、デプロイ、管理するためのフレームワークを提供します。

マイクロサービス アーキテクチャ内の、各マイクロサービスは、アプリケーションの機能に対応し、独立したタスクを処理するように構築された単一のサービスです。各マイクロサービスは、シンプルなインターフェースを介して他のサービスと通信し、ビジネス上の問題を解決します。

モノリシック アーキテクチャとマイクロサービス アーキテクチャ

従来のモノリシック アプリケーションは、単一の統合されたユニットとして構築されます。すべてのコンポーネントは密結合され、リソースとデータを共有しています。特にアプリケーションの複雑さが増すにつれて、スケーリング、デプロイ、メンテナンスに問題が生じる可能性があります。一方、マイクロサービス アーキテクチャでは、アプリケーションが小規模な独立したサービス スイートに分割されます。各マイクロサービスは、独自のコード、データ、依存関係を持つ自己完結型です。この方法には以下のような潜在的メリットがあります。

  • スケーラビリティの向上: 個々のマイクロサービスは、固有のニーズに応じて個別にスケールできます
  • アジリティの向上: マイクロサービスは独立して開発、デプロイ、更新できるため、リリース サイクルを短縮できます
  • 復元力の向上: 1 つのマイクロサービスに障害が発生しても、必ずしもアプリケーション全体に影響が及ぶわけではありません
  • テクノロジーの多様性: マイクロサービスの柔軟性により、チームは各サービスに最も適したテクノロジーを使用できます

完全に分散されたマイクロサービス アーキテクチャを正当化するほど大規模または複雑ではないアプリケーションの場合、「モジュール型モノリス」は強力な選択肢となります。このアプローチでは、単一のアプリケーション デプロイ ユニット(モノリス)を維持しながら、アプリケーションのコードベースをビジネス ドメインに基づいて、凝集度が高く疎結合の内部モジュールに厳密に分離します。これにより、分散システムの管理に伴うオーバーヘッドを完全に排除しながら、マイクロサービスの組織的なメリット(明確な境界、独立した開発)が得られます。

業界の例

さまざまな業界の多くの組織が、特定のビジネス課題に対処し、イノベーションを推進するために、マイクロサービス アーキテクチャを採用しています。いくつか例を挙げましょう。

  • e コマース: 多くの e コマース プラットフォームでは、商品カタログ、ショッピング カート、注文処理、顧客アカウントなど、さまざまなオペレーションをマイクロサービスを使用して管理しています。これにより、需要に応じて個々のサービスをスケーリングし、カスタマー エクスペリエンスをパーソナライズして、新機能を迅速にデプロイできます。
  • ストリーミング サービス: ストリーミング サービスでは、動画エンコード、コンテンツ配信、ユーザー認証、レコメンデーション エンジンなどのタスクを処理するためにマイクロサービスがよく使用されます。これにより、数百万のユーザーに同時に高品質のストリーミング エクスペリエンスを提供できます。
  • 金融サービス: 金融機関は、不正行為の検出、支払い処理、リスク管理など、さまざまな業務を管理するためにマイクロサービスを使用しています。これにより、市場環境の変化に迅速に対応し、セキュリティを強化して、規制要件を遵守することが可能になります。

マイクロサービス アーキテクチャの用途

マイクロサービスは一般的に、アプリケーション開発をスピードアップするために使用されます。Java を使用して構築されたマイクロサービス アーキテクチャは一般化しており、特に Spring Boot アーキテクチャで多用されています。マイクロサービスとサービス指向アーキテクチャはよく比較されます。どちらも同じ目的を持ち、モノリシック アプリケーションを小さなコンポーネントに分割しますが、それぞれアプローチが異なります。 マイクロサービス アーキテクチャの例を次に示します。

ウェブサイトの移行

モノリシックなプラットフォームでホストされている複雑なウェブサイトは、クラウドベースとコンテナベースのマイクロサービス プラットフォームに移行できます。

メディア コンテンツ

マイクロサービス アーキテクチャを使用すると、画像アセットと動画アセットをスケーラブルなオブジェクト ストレージ システムに保存し、ウェブやモバイルに直接提供できます。

トランザクションと請求書

支払い処理と注文は個別のサービス ユニットとして分離できるため、請求書発行が機能しない場合でも支払いの受け入れが継続されます。

データ処理

マイクロサービス プラットフォームは、既存のモジュール化されたデータ処理サービスのクラウド サポートを拡張できます。

Google Cloud でビジネスの課題を解決する

新規のお客様には、Google Cloud で使用できる無料クレジット $300 分を差し上げます。
お客様独自の課題を詳細に検討するには、Google Cloud のセールス スペシャリストまでご相談ください。

マイクロサービスの設計パターン

分散システムの複雑さを管理し、パフォーマンスを最適化するために、現在ではアーキテクトがいくつかのコア設計パターンを利用しています。

サービス メッシュ

  • サービス メッシュは、サービス間の通信を処理するための専用のインフラストラクチャ レイヤです
  • 通常、各マイクロサービス コンテナとともにデプロイされたサイドカー プロキシ(Istio や Envoy など)を使用してトラフィックを管理します
  • このパターンは、サービスコード自体を変更することなく、復元力(再試行、サーキット ブレーキングなど)、セキュリティ(mTLS 認証)、オブザーバビリティ(詳細なトレースと指標)などの重要な機能を提供します

イベント ドリブン アーキテクチャ(EDA)

  • 従来のマイクロサービスは多くの場合、REST API を介して同期的に通信しますが、最新のアーキテクチャでは、イベントを使用した非同期通信がますます好まれています。
  • EDA では、サービスがイベント(状態の変化)をメッセージ ブローカー(Google Cloud Pub/Sub など)にパブリッシュし、他のサービスがこれらのイベントをサブスクライブします
  • サービスが互いを直接認識する必要がないため、疎結合が促進され、リアルタイムの応答性が向上し、障害分離が改善されます。

次のステップ

$300 分の無料クレジットと 20 以上の無料枠プロダクトを活用して、Google Cloud で構築を開始しましょう。

Google Cloud