ケーススタディ10 - 4回目のコーヒー
背景
フォースコーヒーは、世界有数の影響力を持つコーヒーブランドとして認知されている、グローバルなコーヒーハウスチェーンおよびコーヒー会社です。同社は、エスプレッソベースのドリンク、紅茶、その他の飲料など、幅広い種類のスペシャルティコーヒー飲料で知られています。フォースコーヒーは世界中に数千店舗を展開しています。
現在の環境
同社はAzure上でホストされるクラウドネイティブアプリケーションを開発している。
企業ウェブサイト
同社はhttp://www.fourthcoffee.com/に公式ウェブサイトを運営しています。このウェブサイトは、注文の受付、在庫状況の確認、在庫情報の更新などに利用されます。
在庫品目
Fourth Coffeeは、定番のコーヒーに加え、最近、ランチ、スナック、グッズなどの在庫品もメニューに追加しました。本社スタッフが在庫状況を常に更新しています。ユーザーは商品をカスタマイズできます。本社スタッフがウェブサイト上で在庫品とその関連画像を設定します。
注文
店内スタッフは、お客様のご要望に合わせた飲み物や商品を提供します。注文はウェブサイトから行い、店頭で受け取ります。
アプリケーションコンポーネントは、データを以下のように処理します。
1. Azure Traffic Manager は、ユーザーからの注文リクエストを Azure App Service でホストされている企業 Web サイトにルーティングします。
2. Azure Content Delivery Network は、静的画像とコンテンツをユーザーに配信します。
3. ユーザーは、顧客テナント用のMicrosoft Entra IDを使用してアプリケーションにサインインします。
4. ユーザーはウェブサイト上で商品を検索し、注文を行います。その際、商品の画像はAzure Blob Storageから取得されます。
5. アイテムのカスタマイズは、Azure Service Bus キュー メッセージに格納されます。
6. Azure Functions はアイテムのカスタマイズを処理し、カスタマイズされたアイテムを Azure Cosmos DB に保存します。
7. ウェブサイトは注文の詳細をAzure SQLデータベースに保存します。
8. パフォーマンス向上のため、SQL Database のクエリ結果は Azure Cache for Redis にキャッシュされます。
このアプリケーションは、以下のAzureサービスで構成されています。

要件
アプリケーションコンポーネントは、以下の要件を満たす必要があります。
Azure Cosmos DB の開発では、最新の更新情報を受信し、データをドキュメント形式で保存するネイティブ API を使用する必要があります。
- すべてのAzureサービスにおいて、コストを最小限に抑える必要がある。
- 開発者は、Azure にデプロイする前に、Azure Blob Storage との統合をローカルでテストする必要があります。
テストでは、Azure Storage API の最新バージョンをサポートする必要があります。
企業ウェブサイト
ユーザー認証および認可では、ワンタイムパスコードによるサインイン方法とソーシャルIDプロバイダー(GoogleまたはFacebook)を許可する必要があります。
静的ウェブコンテンツは、ネットワーク遅延を低減するために、エンドユーザーに最も近い場所に保存する必要があります。
在庫品目
Azure Cosmos DB から読み取られるカスタマイズされたアイテムは、ウェブサイト上の現在のユーザーに対してデータが正確であることを保証しつつ、スループットを最大化する必要があります。
- 在庫品目の更新処理は自動的にスケーリングされ、Azure Cosmos DB コンテナー全体にわたって更新が有効になる必要があります。
在庫品は、キューに入れられた順に処理されなければなりません。
- 在庫品目の画像は、画像ファイルのアップロード時にブロブデータとともに保存される交換可能な画像ファイル形式(データ)を含めるために、ネイティブ形式のJPEGファイルとして保存する必要があります。
- 在庫アイテムAPIは、Azure Cosmos DBデータに安全にアクセスする必要があります。
注文
・在庫品目が更新または保存された後、注文は在庫品目の変更を自動的に反映する必要があります。
問題
- 開発者は、Azure Cosmos DB の認証情報を、インベントリアイテム API コード内で安全性の低い平文形式で保存しています。
- 本番環境におけるAzure Cache for Redisのメンテナンスにより、アプリケーションのパフォーマンスに悪影響が出ています。
ホットスポットに関する質問
在庫変動を処理し、注文を更新するためのコードを実装する必要があります。
どの設定を使用すべきですか?回答するには、回答欄で適切なオプションを選択してください。注:正解ごとに1ポイントが加算されます。
