web-dev-qa-db-ja.com

マイクロサービスアプリケーションの設計

これがインフラストラクチャアーキテクチャに関して質問するのに適切なフォーラムであるかどうかはわかりません。しかし、そう願って質問を投稿する:

私の顧客の1人は、マイクロサービスの最新テクノロジーで開発されたWebアプリケーションを持っています。 Kubernetesは基盤となるレイヤーです。さらに、CDN、APIホスティングなどを使用しています。パブリッククラウド(AzureまたはAWS)の観点から、ここでインフラストラクチャを設計するにはどうすればよいですか?彼らが利用しているサービスに関して、いくつか質問があります。簡単にするために、AzurePOVから説明します。 Azureの次のコンポーネントを使用することにしました。

Azure CDN、Azureアプリケーションゲートウェイ、AzureFrontDoor。

これらのサービスとの通話の流れに混乱しています。クライアント(Webブラウザーなど)から、アプリケーションの要求があった場合、理想的には、静的コンテンツは、コンテナーまたはサーバーをチェックすることにより、AzureCDNおよびその他の動的コンテンツによって応答される必要があります。だから、これは私がコールフローで想定していることです:

ブラウザー-> Azureフロントドア->アプリケーションゲートウェイ-> API管理マイクロサービス->その他のマイクロサービス-> AzureCDN->ブラウザー

これは正しいです?そうでない場合は、より良いアーキテクチャを理解するために私を導いてくれませんか。どんな助けでも本当にありがたいです。

1
serverstackqns

さて、最初に、同じことを行ういくつかの異なるサービスがあるので、それらすべてが必要かどうかを評価したいと思います。

  • AzureCDNとFrontDoorはどちらも同じローカルポイントオブプレゼンスとキャッシュを提供するため、実際にはどちらか一方だけが必要です。
  • Azure FrontDoorとAppGatewayはどちらもレイヤー7負荷分散とWebアプリケーションファイアウォールを提供するため、両方が必要ない場合があります。 App GWには、vNetアタッチメントやK8s Ingressなどの追加機能があるため、両方について議論がある可能性があります

フロントドアまたはCDNのどちらを選択しても、スタックの最前線にいることを望んでいます。理想的には、トラフィックがFD/CDNにヒットし、キャッシュされた応答を取得し、それがリクエストの終わりになるようにします。

キャッシュからサービスを提供できない場合は、トラフィックをKubernetesに取り込む必要があるため、フロントオブスタックリソース(CDNまたはフロントドア)は転送されますが、Kubernetesクラスターを外部に公開します。これは、必要に応じてApp Gateway、外部ロードバランサー、またはそれを使用してAPIを公開する場合はAzure APIManagerになります。

フロントドアは、vNetが接続されていないグローバルサービスです。 KubernetesクラスターはvNetに接続されているため、Kubernetesリソースをフロントドアに公開する方法が必要です。これはAppGWで実行できますが、追加の費用がかかります。パブリックIPを備えたAzureロードバランサーを使用してKubernetes入力をセットアップし、フロントドアでそれと通信することもできます。

App GWを削除する場合は、NGinx、Traefikなどのクラスターで実行されている別の入力コントローラーが必要になります。またはApp GWを維持することもできますが、フロントドアではなくCDNを使用します。

フロントドアとCDNは同じエンドポイントを使用するため、同じキャッシュを提供します。

2
Sam Cogan