ヒント
このコンテンツは、.NET Docs で入手できる、またはオフラインで読み取ることができる無料のダウンロード可能な PDF として入手できる、コンテナー化された .NET アプリケーションの電子ブックである .NET マイクロサービス アーキテクチャからの抜粋です。
名前が示すように、マイクロサービス アーキテクチャは、小規模なサービスのセットとしてサーバー アプリケーションを構築するためのアプローチです。 つまり、マイクロサービス アーキテクチャは主にバックエンド向けですが、このアプローチはフロントエンドにも使用されています。 各サービスは独自のプロセスで実行され、HTTP/HTTPS、WebSocket、 AMQP などのプロトコルを使用して他のプロセスと通信します。 各マイクロサービスは、特定のコンテキスト境界内に特定のエンド ツー エンドのドメインまたはビジネス機能を実装し、それぞれが自律的に開発され、個別にデプロイできる必要があります。 最後に、各マイクロサービスは、関連するドメイン データ モデルとドメイン ロジック (主権と分散データ管理) を所有する必要があり、さまざまなデータ ストレージ テクノロジ (SQL、NoSQL) と異なるプログラミング言語に基づく可能性があります。
マイクロサービスはどのようなサイズにする必要がありますか? マイクロサービスを開発するときは、サイズを重要なポイントにしないでください。 代わりに、各サービスの開発、デプロイ、スケーリングの自律性を持つよう、疎結合のサービスを作成することが重要です。 もちろん、マイクロサービスを特定して設計するときは、他のマイクロサービスとの直接的な依存関係が多すぎない限り、マイクロサービスをできるだけ小さくする必要があります。 マイクロサービスのサイズよりも重要なのは、マイクロサービスに必要な内部の凝集性と、他のサービスからの独立です。
マイクロサービス アーキテクチャの理由 要するに、長期的な機敏性を提供します。 マイクロサービスを使用すると、それぞれがきめ細かく自律的なライフサイクルを持つ多数の個別にデプロイ可能なサービスに基づいてアプリケーションを作成できるため、複雑で大規模で拡張性の高いシステムでの保守性が向上します。
追加の利点として、マイクロサービスは個別にスケールアウトできます。 単一のモノリシック アプリケーションを 1 つのユニットとしてスケールアウトする必要がある代わりに、特定のマイクロサービスをスケールアウトできます。 そうすることで、スケーリングする必要のないアプリケーションの他の領域をスケールアウトするのではなく、需要をサポートするために処理能力やネットワーク帯域幅を増やす必要がある機能領域のみをスケーリングできます。 つまり、必要なハードウェア数が少ないため、コストを削減できます。
図 4-6 モノリシックデプロイとマイクロサービスアプローチ
図 4-6 に示すように、従来のモノリシック アプローチでは、アプリケーションは複数のサーバー/VM でアプリ全体を複製することによってスケーリングされます。 マイクロサービスアプローチでは、機能はより小さなサービスで分離されるため、各サービスは個別にスケーリングできます。 マイクロサービス アプローチを使用すると、複雑で大規模でスケーラブルなアプリケーションの特定の小さな領域を変更できるため、各マイクロサービスのアジャイル変更と迅速な反復が可能になります。
細かいマイクロサービスベースのアプリケーションを設計することで、継続的な統合と継続的デリバリーの方法を実現できます。 また、短期間でアプリケーションに新しい関数を配信できるようになります。 また、アプリケーションをきめ細かく構成することで、マイクロサービスを単独で実行およびテストし、それらの間の明確なコントラクトを維持しながら自律的に進化させることもできます。 インターフェイスまたはコントラクトを変更しない限り、任意のマイクロサービスの内部実装を変更することや、他のマイクロサービスを中断することなく新機能を追加することができます。
マイクロサービス ベースのシステムを使用した運用環境への移行を成功させるための重要な側面を次に示します。
サービスとインフラストラクチャの監視と正常性チェック。
サービス (つまり、クラウドとオーケストレーター) のスケーラブルなインフラストラクチャ。
認証、承認、シークレット管理、セキュリティで保護された通信など、複数のレベルでのセキュリティ設計と実装。
アプリケーションの迅速な配信。通常、異なるチームが異なるマイクロサービスに焦点を当てています。
DevOps と CI/CD のプラクティスとインフラストラクチャ。
これらのうち、このガイドでは最初の 3 つのみ説明または紹介されています。 アプリケーションのライフサイクルに関連する最後の 2 つのポイントについては、Microsoft Platform and Tools の電子書籍を使用 した追加のコンテナー化された Docker アプリケーション ライフサイクル で説明されています。
その他のリソース
Mark Russinovich. マイクロサービス: クラウドを利用したアプリケーション革命
https://azure.microsoft.com/blog/microservices-an-application-revolution-powered-by-the-cloud/Martin Fowler。 マイクロサービス
https://www.martinfowler.com/articles/microservices.htmlMartin Fowler。 マイクロサービスの前提条件
https://martinfowler.com/bliki/MicroservicePrerequisites.htmlJimmy Nilsson。 チャンク クラウド コンピューティング
https://www.infoq.com/articles/CCC-Jimmy-Nilssonセザール デ ラ トーレ Microsoft プラットフォームとツールを使用したコンテナー化された Docker アプリケーションのライフサイクル (ダウンロード可能な電子書籍)
https://aka.ms/dockerlifecycleebook
.NET