ケーススタディ回答例【Helicopter Racing League】【GCP Professional Cloud Architect認定試験】

# ケーススタディ回答例【Helicopter Racing League】
[GCP試験のケーススタディ](https://cloud.google.com/certification/guides/professional-cloud-architect?hl=ja)に新しく事例企業が加わっていたので
@yota-p さんのまとめにならった分析記事となります。
従来からの[Mountkirk Games](https://qiita.com/yota-p/items/3d2c7889f26d4b951176),[TerramEarth](https://qiita.com/yota-p/items/f384fe21f0702135a202) の分析に関しては @yota-p さんの記事を参照ください。(Dress4Winはスタメン落ちしたようです)

[EHR Healthcareについてはこちら](https://qiita.com/hokutoh/items/4c180477215eb6da83f0)です

## はじめに
- この記事はあくまでも回答例です。実際に試験を受ける時点では機能追加・変更があったり、試験問題中で要件が追加・変更され、最適解が変わる可能性があります。
- 各種サービスの最新情報は[GCP公式ドキュメント](https://cloud.google.com/docs?hl=ja)から手に入れましょう:grinning:

## 会社概要
> Helicopter Racing League（HRL）は、ヘリコプター レースを主催しているグローバルなスポーツ リーグです。HRL は毎年世界選手権を開催しています。複数の地域リーグの大会があり、 各チームは世界選手権への出場権を競います。HRL では、レースを世界中にストリーミングする有料サービスを提供しています。 その際、各レースにおけるライブでのテレメトリーと予測を行っています。

## ソリューションのコンセプト
> HRL では、既存サービスを新しいプラットフォームに移行して AI および ML のマネージド サービスの使用を拡大し、レースの予測に役立てたいと考えています。また、 特に新興国でこのスポーツに関心を持つ新しいファンが増えており、 リアルタイムと録画の両方のコンテンツについて、ユーザーの居住地により近い場所でサービ スを提供したいと考えています。

- 課題
  - 予想 AI/ML
  - 新興国・居住地に近い場所
  - リアルタイム動画配信
  - ファイル動画配信

## 既存の技術的環境
> HRL はクラウド ファーストを掲げる上場企業で、中心となるミッション クリティカルなアプリケーションは、 同社が現在利用しているパブリック クラウド プロバイダで実行されています。 動画の録画と編集はレース場で行われ、必要に応じてクラウドでコンテンツのエンコードやコー ド変換が行われます。また、トラックに積まれたモバイル データセンターにより、エンタープライズ クラスの接続とローカル コンピューティングが提供されています。レースの予測サービスは、 既存のパブリック クラウド プロバイダのみでホストされています。現在の技術的環境は次のとおりです。
> 
> - 既存のコンテンツは、既存のパブリック クラウド プロバイダ上のオブジェクト ストレージ サービスに保存されている。
> - 動画のエンコードとコード変換は、各ジョブ用に作成された VM で実行されている。
> - レースの予測は、既存のパブリック クラウド プロバイダ内の VM で実行される TensorFlow を使用して処理されている。

- GCP技術へのマッピング
  - オブジェクトストレージ
⇒当日のリアルタイム配信と後日の録画視聴ででCloudStorageのライフサイクルを検討。
CloudStorageは[ストリーミング転送](https://cloud.google.com/storage/docs/streaming)で。
またCloudCDNでレイテンシ低減を検討。
  - エンコードVM
⇒そのままGCE？移行にはMigrate for Compute Engine
　もしくはTranscoder API
  - TensorFlow VM
⇒CloudML, （CloudMLは[GCPのサービスリスト](https://cloud.google.com/docs?hl=ja)からもなくなっている。VertexAIの一部として統合された？）
データのインプットにはDataFlow/DataFusion/DataPrepおよびBigquery

※普通つまづかないと思うが個人的につまづいたので注釈
「トラックに積まれたモバイル データセンター」の意味が分からず誤訳かと思ったが、track(レースのトラック)ではなくtruck(車のトラック)だったので、単純にトラック(車)の荷台に移動式のデータセンターがあるということでした。

## ビジネス要件
> HRL の株主は、予測機能の強化と、新興市場の視聴者のレイテンシ低減を求めています。 株主からの要件は次のとおりです。
> 
> - パートナー向けに予測モデルを公開できるようサポートする。
- Apigee, API Gateway
> - 以下に関して、レース中およびレース前の予測機能を向上させる。
それぞれ何をインプットにすべきか不明確だが、想定をもって回答
また、AIのモデル出力の結果を評価するにあたってはAI PlatformのAI Explanationsもキーワードに入ってきそう
>   - レース結果
- 「追い抜きなどのレース中のイベントの予測」とあるので映像からの状況分析か？
Vertex AIでのObjectDetectionを組むか、
[AutoML Vision Object Detection](https://cloud.google.com/vision/automl/object-detection/docs)というSaaSもある模様
>   - 機械の故障
- 各種機器からのセンサーデータ等の収集？とすればIoTCore→Pub/Sub→(DataFlow)→BigQuery
>   - 聴衆の感情
- SNSの書き込みから感情分析ならばNatural Language API
放送に映っている聴衆の感情分析ならばVideo Intelligent API
> - テレメトリーを増やし、追加の分析情報を作成する。
- これは「機械の故障」とつながっている？IoTCore？
> - 新しい予測でファンのエンゲージメントを測定する。
- このファンエンゲージメントの意味がよくわからなかったのですが
[この記事](https://cloud.google.com/customers/mlb)等が参考になると思います。
この場合、この企業が行っている各種SNSやレースの反応等のあらゆる顧客反応をBigquery等に入れて分析する・・・等でしょうか
> - 放送のグローバルな可用性と品質を向上させる。
> - 同時視聴が可能なユーザー数を増やす。
- CDNと[グローバルロードバランサ](https://cloud.google.com/load-balancing/docs/https?hl=ja)?
> - 運用の複雑さを最小化する。
- CI/CDによるデプロイ：CloudBuild
> - 確実に規制を遵守する。
- GDPR等の個人情報観点とするとCloud DLP？
一個上のCI/CDの話と絡めるとBinary Authorization？
一個下の収益の話とからめて、クレカ情報のトークナイゼーション？
> - マーチャンダイジングの収益源を作る。
- ？

## 技術的要件
> - 予測のスループットと精度を維持、強化する。
> - 視聴者のレイテンシを低減する。
- CloudCDN
> - コード変換のパフォーマンスを向上させる。
- GCEのスケーリングについてか、もしくは[Transcoder API](https://cloud.google.com/transcoder/docs?hl=ja)?
> - 視聴者の消費パターンとエンゲージメントをリアルタイムで分析する。
- 前述のとおりだが、Pub/Sub等で拾ってきた各種情報をBigQueryでストリーミングで流し込む
> - データマートを作成して大規模なレースデータを処理できるようにする。
- BigQuery

## 経営陣のメッセージ
> 当社の CEO である S. Hawke は、 世界中のファンの皆様に気持ちが高ぶるようなレースを届けたいと考えています。 ファンの皆様のお声を反映して、追い抜きなどのレース中のイベントの予測を取り入れ、 動画ストリーミングを強化したいと考えています。 現在のプラットフォームでもレース結果を予測することはできますが、 レース中のリアルタイム予測に対応できる施設と、シーズン全体の結果を処理するキャパシティが不足し ています。


# まとめ(Case Study Analysis Template)

Google公式の[Preparing for the Professional Cloud Architect Exam](https://www.cloudskillsboost.google/course_templates/78)では「Case Study Analysis Templateにまとめるといいよ」と記載されています。
また講座にて一例を書いてくれていますのでそちらも記載しつつ、上記メモとともに記載します。


|既存環境|技術的着眼点|提案するソリューション|メモ|
|----|----|----|----|
|ミッションクリティカルなアプリケーションが、パブリッククラウド上で動作している。映像の収録や編集はレース場で行い、エンコードやトランスコードは必要に応じてクラウド上で行う。|コンピューティング<br>- ビデオのエンコードとトランスコードは、ジョブごとに作成されたVMで実行。<br>- レース予測は、VM上で動作するTensorFlowで実行。|GCE(transcoding) |公式の例そのまま訳しただけだが…ソリューションがやや寂しいので補足すると、VMは常時動作させる類のサーバではなくエンコーディング用途としてバッチ処理として使用されるのでプリエンプティブVMにすべき。<br>また、先に挙げたメモではTranscoder APIやを挙げたが公式の解説ではタッチされていなかった。(今回はすでにある仕組みのマイグレートなので選択肢に入ってこないか)|
|パブリッククラウド上の|大サイズバイナリオブジェクト(Blob)を扱えるストレージ|[CloudStorageのストリーミング転送](https://cloud.google.com/storage/docs/streaming)|公式の例<br>こちらも補足すると当日の放送はstandardで、その後nealineやcoldlineへの移行ライフサイクルを検討。|
|- コンテンツはBLOBとしてオブジェクトストレージサービスに格納される。<br>- ビデオエンコーディングはVM上で実行<br>- レース予測は、VM上でTensorFlowを使用|動画データ<br>- 多数の視聴者が同時にストリームビデオを視聴<br>- トランスコードのパフォーマンス向上<br>「データマート」の作成が可能|- 低遅延配信用にCloudCDN<br>- データ取り込み用にCloudFusion|公式の例<br>CloudFusionの取り込み先はBigqueryがセオリー。CloudFusionは一例なのでDataFlowでも良いかと思われる。|