次の方法で共有


eShopOnContainers 参照アプリの概要

ヒント

このコンテンツは eBook の「Azure 向けクラウド ネイティブ .NET アプリケーションの設計」からの抜粋です。.NET Docs で閲覧できるほか、PDF として無料ダウンロードすると、オンラインで閲覧できます。

Cloud Native .NET apps for Azure eBook cover thumbnail.

Microsoft は、主要なコミュニティ エキスパートと協力し、完全な機能を備えたクラウドネイティブ マイクロサービス参照アプリケーションである eShopOnContainers を生み出しました。 このアプリケーションは、.NET と Docker、および必要に応じて Azure、Kubernetes、および Visual Studio を使用してオンライン ネットショップを構築する方法を示すためにビルドされたものです。

eShopOnContainers Sample App Screenshot.

(図 2-1) 。 eShopOnContainers サンプル アプリのスクリーンショット。

この章を読み始める前に、eShopOnContainers 参照アプリケーションをダウンロードすることをお勧めします。 そうすれば、表示される情報に従いやすくなるはずです。

機能と要件

まず、アプリケーションの機能と要件について確認します。 eShopOnContainers アプリケーションは、T シャツやコーヒー マグカップなどのさまざまな物理製品を販売するオンライン ストアを表します。 これまでにオンラインで何か購入したことがある場合は、ストアを比較的使い慣れているはずです。 ストアで実装される基本的な機能の一部を以下に示します。

  • カタログ項目のリスト
  • 種類別にアイテムをフィルター処理する
  • ブランド別にアイテムをフィルター処理する
  • 買い物かごにアイテムを追加する
  • かごのアイテムを編集または削除する
  • チェックアウト
  • アカウントを登録する
  • サインイン
  • サインアウト
  • 注文を確認する

このアプリケーションには、次の非機能的な要件もあります。

  • 高可用性である必要があり、トラフィックの増加に対応するために自動的にスケーリングする (およびトラフィックが正常な状態に戻ったらスケール ダウンする) 必要がある。
  • 発生するすべての問題のトラブルシューティングに役立つように、正常性および診断ログの使いやすい監視機能を提供する必要がある。
  • 継続的インテグレーションとデプロイ (CI/CD) のサポートなど、アジャイル開発プロセスをサポートする必要がある。
  • アプリケーションでは、2 つの Web フロント エンド (従来のものとシングル ページ アプリケーション) に加えて、さまざまな種類のオペレーティング システムを実行するモバイル クライアント アプリもサポートする必要がある。
  • クロスプラットフォームのホスティングおよびクロスプラットフォームの開発をサポートする必要がある。

eShopOnContainers reference application development architecture.

図 2-2 eShopOnContainers 参照アプリケーション開発のアーキテクチャ。

eShopOnContainers アプリケーションには、ASP.NET Core MVC サーバー アプリケーションまたは適切な API ゲートウェイをターゲットとする HTTPS 経由でアプリケーションにアクセスする Web またはモバイル クライアントからアクセスできます。 API ゲートウェイには、個々のフロントエンド クライアントからバックエンド サービスを切り離し、より優れたセキュリティを提供するなど、いくつかの利点があります。 また、アプリケーションでは、フロントエンド クライアントごとに個別の API ゲートウェイを作成することを推奨する BFF (Backends-for-Frontends) と呼ばれる関連パターンを利用します。 参照アーキテクチャは、要求元が Web とモバイル クライアントのどちらであるかに基づいて API ゲートウェイを分割する方法を示しています。

アプリケーションの機能は、多くの異なるマイクロサービスに分割されます。 認証と ID、製品カタログからのアイテムの一覧表示、ユーザーの買い物かごの管理、注文について責任があるサービスがあります。 これらの個々のサービスには、独自の永続ストレージがあります。 すべてのサービスがやり取りする単一のプライマリ データ ストアは存在しません。 代わりに、サービス間の調整と通信は、必要に応じてメッセージ バスを使用して行われます。

さまざまなマイクロサービスはそれぞれ個々の要件に基づいて異なる方法で設計されています。 この側面は、テクノロジ スタックが異なる可能性はあるものの、これらはすべて .NET を使用して構築され、クラウド向けに設計されていることを意味します。 よりシンプルなサービスでは、基になるデータ ストアへの基本的な作成、読み取り、更新、削除 (CRUD) アクセスが提供されます。一方、より高度なサービスではドメイン駆動設計手法とパターンを使用して、ビジネスの複雑さに対処します。

Different kinds of microservices

図 2-3 さまざまな種類のマイクロサービス。

コードの概要

マイクロサービスが使用されるため、eShopOnContainers アプリでは、その GitHub リポジトリに個別のプロジェクトとソリューションがかなり多く含まれています。 ソリューションと実行可能ファイルを分離するだけでなく、さまざまなサービスは、ローカル開発中と運用環境での実行時の両方で、独自のコンテナー内で実行するように設計されています。 図 2-4 には、さまざまなプロジェクトが編成されている Visual Studio の完全なソリューションが示されています。

Projects in Visual Studio solution.

図 2-4 Visual Studio ソリューションのプロジェクト。

コードはさまざまなマイクロサービスをサポートするように編成されており、各マイクロサービス内では、コードがドメイン ロジック、インフラストラクチャの問題、およびユーザー インターフェイスまたはサービス エンドポイントに分割されます。 多くの場合、各サービスの依存関係は、運用環境の Azure サービスと、ローカル開発の別のオプションによって満たすことができます。 アプリケーションの要件が Azure サービスにどのように対応しているかを確認しましょう。

マイクロサービスについて

本書では、Azure テクノロジを使用してビルドされたクラウドネイティブ アプリケーションに焦点を当てています。 マイクロサービスのベスト プラクティスと、マイクロサービスベースのアプリケーションを設計する方法の詳細については、.NET マイクロサービス: コンテナー化された .NET アプリケーションのアーキテクチャに関するコンパニオン ブックを参照してください。