ソリューションのアイデア
このアーティクルはソリューションのアイデアです。 このコンテンツにさらに多くの情報 (想定されるユース ケース、代替サービス、実装に関する考慮事項、価格ガイダンスなど) の掲載をご希望の方は、GitHub のフィードバックでお知らせください。
このモバイル クライアント アプリでは、コンパニオン Web アプリとのソーシャル画像共有機能を提供します。 このアプリのバックエンド サービスは、Azure 関数を使ってバックグラウンドで画像処理を実行します。また、通知ハブを介して進行状況をユーザーに通知できます。 画像以外のデータは、Azure Cosmos DB に格納されます。 Web アプリは、Azure Traffic Manager を介してバックエンド サービスのデータと画像にアクセスします。
このソリューションのアーキテクチャで使用されている次のサービスを参照してください。
- Visual Studio Team Services
- Visual Studio
- Visual Studio Tools for Xamarin
- Application Insights
- Visual Studio App Center
- App Service Mobile Apps
考えられるユース ケース
モバイル クライアント アプリはオフライン モードで動作するため、ネットワークに接続していなくても、画像の表示とアップロードを行うことができます。
アーキテクチャ
このアーキテクチャの SVG をダウンロードします。
データフロー
- Visual Studio と Xamarin を使用してアプリを作成します。
- Azure App Service Mobile Apps バックエンド サービスをアプリ ソリューションに追加します。
- ソーシャル ID プロバイダーを使用した認証を実装します。
- 画像以外のデータを Azure Cosmos DB に格納し、Azure Cache for Redis にキャッシュします。
- アップロードされた画像を Azure Blob Storage に保存します。
- 新しくアップロードされた画像に関するメッセージをキューに登録します。
- Azure Functions を使用してメッセージをデキューし、Blob Storage から取得した画像を処理します。
- 通知ハブを介して、ユーザーにプッシュ通知を送信します。
- Visual Studio App Center を使用してアプリのビルドとテストを行い、アプリを発行します。
- さまざまなデータセンターのサービス エンドポイントへのユーザー トラフィックの分散を制御します。
- Application Insights を使用してアプリ サービスを監視します。
Components
- Visual Studio 2017 または Visual Studio for Mac で C# を使用して、Web フロントエンド、モバイル アプリ、およびバックエンド サービスを作成します。
- Xamarin:C# と Azure SDK を使用して、iOS と Android 用のモバイル アプリを作成します。
- Visual Studio App Center:App Center は、BitBucket、GitHub、Visual Studio Team Services からコードをプルすることで、継続的インテグレーションとデプロイ ワークフローを実現します。
- App Service Web アプリは、顧客向けの Web アプリと、Web クライアントとモバイル クライアントの両方が使用するサービスをホストできます。
- Azure Functions を使用して、サーバーレスのバックグラウンド処理を実行します。 たとえば、ある Azure 関数では、新しい BLOB がコンテナーに追加されたときにそのサイズを自動的に変更し、別の関数では、バックグラウンドの複数の画像を削除するためにキューのメッセージをリッスンします。
- Application Insights:Application Insights を使用して、Web アプリの問題の検出、クラッシュの診断、使用状況の追跡を行います。 開発ライフサイクル全体で、情報に基づいた意思決定を行います。
- Azure Cosmos DB は、フル マネージドの NoSQL ドキュメント データベース サービスです。 スキーマフリーのデータに対するクエリとトランザクション処理、予測可能で信頼性の高いパフォーマンス、迅速な開発を実現します。
- Azure Queue Storage は、App Service バックエンドと Azure Functions の間の永続的なメッセージングに使用されます。
- Blob Storage: 低コストで優れたスケーラビリティを活用するために、Azure Storage によってイメージ ファイルがホストされています。 多くの場合、Web アプリと Azure 関数間の通信は、BLOB トリガーと Azure Queue Storage を使用して実行されます。
- Azure Notification Hubs は、スケーラブルなクロスプラットフォームのプッシュ通知に使用されます。
- Azure Traffic Manager では、応答性と可用性の高いアプリケーションを提供するために、さまざまなデータセンターのサービス エンドポイントへのユーザー トラフィックの分散を制御します。