マイクロサービス アーキテクチャは、通常、各マイクロサービス インスタンスを 1 つのコンテナー内にパッケージ化してデプロイします。 マイクロサービスの多くのインスタンスは、それぞれ別個のコンテナーで実行されている可能性があります。 コンテナーは軽量で有効期間が短いため、作成と破棄は簡単ですが、調整と通信は困難です。
この記事では、コンテナー化されたマイクロサービス アーキテクチャを運用環境で実行する際の課題と、コンテナー オーケストレーションがどのように役立つかについて説明します。 この記事では、いくつかの Azure コンテナー オーケストレーション オプションについて説明します。
コンテナー化されたマイクロサービス アーキテクチャ
この単純なコンテナー化された Azure Kubernetes Service (AKS) クラスターでは、次の操作を行います。
- 1 つのマイクロサービス A インスタンスがノード 1 で実行され、別のインスタンスがノード 2 で実行され、3 番目のインスタンスがノード 3 で実行されています。
- マイクロサービス B の 1 つのインスタンスがノード 1 で実行され、もう 1 つのインスタンスがノード 3 で実行されています。
- コンテナー化された リバース プロキシ サーバー は、トラフィックを分散するためにノード 1 とノード 2 で実行されています。
クラスターを管理するには、DevOps チームは次の手順を実行する必要があります。
- 各ノードで複数のコンテナー インスタンスを実行します。
- インスタンス間のトラフィックを負荷分散します。
- 個別のノード内の依存インスタンス間の通信を管理します。
- 必要な AKS クラスターの状態を維持します。
コンテナー オーケストレーションを使用すると、DevOps チームはクラスターの望ましい状態を構成として表すことができます。 コンテナー オーケストレーション エンジンは、必要な構成を適用し、すべての管理タスクを自動化します。
単純な 3 層 Web アプリケーションをコンテナー化することを検討してください。
- コンテナーは、フロントエンド コンポーネントをホストします。
- 別のコンテナーが中間層または REST API レイヤーをホストします。
- 中間層レイヤーは、グローバル分散データベースと通信します。
これらのコンテナーを 1 台の開発マシンで実行するのは難しくない場合があります。 ただし、運用クラスターで大規模な高可用性モードでアプリケーションを実行することは、すぐに困難になります。 コンテナー オーケストレーションは、大規模で動的な運用環境にとって非常に重要です。
コンテナー オーケストレーションの利点
次の例は、コンテナー オーケストレーションがクラスターのデプロイ、ネットワーク、スケーリングの管理にどのように役立つかを示しています。
コンテナー オーケストレーター:
トラフィックまたはリソースの使用率に基づいて、マイクロサービス インスタンスの数を自動的にスケーリングします。 この例では、オーケストレーターは、トラフィックの増加に応じて、別のマイクロサービス A インスタンスを自動的に追加します。
構成済みの望ましい状態を反映するようにコンテナーを管理します。 この例では、マイクロサービス B は 2 つのインスタンスを持つよう構成されています。 1 つのインスタンスが異常になったため、オーケストレーターは別のインスタンスを作成することで目的の状態を維持します。
各マイクロサービスのコンテナーを単純なサービス レイヤーでラップします。 サービス レイヤー:
- IP アドレス、ポート、インスタンス数などの複雑さを抽象化します。
- マイクロサービス インスタンス間でトラフィックを負荷分散します。
- 依存マイクロサービス インスタンス間の簡単な通信をサポートします。
コンテナー オーケストレーターは、次の操作に対する柔軟性とトラフィック制御も提供します。
- ダウンタイムなしで、新しいバージョンをリリースするか、以前のバージョンのマイクロサービスまたはマイクロサービス のセットにロールバックします。
- さまざまなマイクロサービス バージョンのサイド バイ サイド テストを有効にします。
Azure コンテナー オーケストレーターを選択する
Azure でマイクロサービス コンテナー オーケストレーションを実装するためのオプションを次に示します。
Azure Kubernetes Service (AKS) は、コンテナー化されたアプリケーションのデプロイと管理を簡略化する、Azure での Kubernetes コンテナー オーケストレーション サービスのフル マネージドです。 AKS では、エラスティック プロビジョニング、迅速なエンド ツー エンドデプロイ、高度な ID とアクセス管理が提供されます。 azure Service Fabric
は、マシンのクラスター全体にマイクロサービスをデプロイおよび管理するためのコンテナー オーケストレーターです。 軽量 Service Fabric ランタイムは、ステートレスおよびステートフル マイクロサービスの構築をサポートします。 Service Fabric の主な差別化要因は、ステートフル サービスを構築するための堅牢なサポートです。 組み込みのステートフル サービス プログラミング モデルを使用することも、任意の言語またはコードで記述されたコンテナー化されたステートフル サービスを実行することもできます。
Azure Container Instances (ACI) は、Azure でコンテナーを実行する最も簡単で簡単な方法です。 ACI を使用すると、仮想マシンを管理したり、上位レベルのサービスを調整したりする必要はありません。
単純なオーケストレーション シナリオでは、Docker Compose を使用して、マルチコンテナー アプリケーションをローカルで定義して実行できます。 次に、Docker コンテナーを ACI コンテナー グループとして、管理されたサーバーレス Azure 環境にデプロイします。 完全なコンテナー オーケストレーション シナリオでは、ACI を AKS と統合して、AKS オーケストレーション用の仮想ノードを作成できます。
Azure Spring Apps は、Spring Boot アプリ向けのエンタープライズ対応のフル マネージド サービスです。 Spring Apps を使用すると、インフラストラクチャを管理することなく、アプリの構築と実行に集中できます。 Spring Apps には、組み込みのライフサイクルとオーケストレーション管理、監視の容易さ、Azure との完全な統合が付属しています。
Azure Red Hat OpenShift (ARO) では、Azure でのフル マネージド OpenShift クラスターのデプロイがサポートされます。 Kubernetes 実稼働コンテナーを実行するには、イメージ レジストリ、ストレージ管理、監視、DevOps などのフレームワークやツールとの統合が必要です。 ARO は、これらのコンポーネントをサービスとしての単一のコンテナー プラットフォーム (PaaS) に結合することで Kubernetes を拡張します。
貢献
この記事は Microsoft によって管理されています。 もともとは次の共同作成者によって作成されました。
プリンシパルの作成者:
- Veerash アイヤガリ |プリンシパル ソフトウェア エンジニア
非公開の LinkedIn プロファイルを表示するには、LinkedIn にサインインします。
次の手順
- Azure Kubernetes Service (AKS) でのマイクロサービス アーキテクチャの
- Advanced Azure Kubernetes Service (AKS) マイクロサービス アーキテクチャ
- Azure Pipelines を使用して AKS アプリの CI/CD を
する - マイクロサービス で API ゲートウェイを使用する
- Azure Spring Apps リファレンス アーキテクチャ
関連リソース
- Azure でマイクロサービスを構築する
- マイクロサービス アーキテクチャ を設計する
- マイクロサービス の設計パターンの
- Azure Kubernetes Service ソリューション体験 を
する