Google Cloud 認定 Professional Cloud Architect 本番レベル問題 Part6 16~18問目（概要欄に問題集のリンクあり）

## この記事の目的
Clouds StarterがKindle・Udemyにてしている問題集の一部を公開します。
この記事の問題を解くことで、本番レベルの問題に慣れるだけでなく、どういった観点が本番で問われるかを確認することができます。

## 本シリーズのリンク
Part5：https://qiita.com/clouds-starter/items/488e06ac753c154d4cf5
Part7：https://qiita.com/clouds-starter/items/5373f85685c621fbe548

## 問題集（Udemy・Kindle）
### Udemy 
【Google Cloud】
Associate Cloud Engineer：https://www.udemy.com/course/google-cloud-associate-cloud-engineer-z/?referralCode=6F46C7AAC19A25BE1728
Professional Cloud Architect：https://www.udemy.com/course/google-cloud-professional-cloud-architect-i/?referralCode=2533A3214C4439F57A42
Professional Data Engineer：https://www.udemy.com/course/google-cloud-professional-data-engineer-s/?referralCode=B50B6D7F8849CCCF6B6E

【AWS】
Cloud Practitioner：https://www.udemy.com/course/2022aws-10-650/?referralCode=6B63C1D36EA602B66A02
Machine Learning：https://www.udemy.com/course/aws-30-b/?referralCode=62C2C02B9127E6DFE9F6

### Kindle
Google Cloud認定Professional Cloud Architect：https://amzn.to/3GQw2XT
Google Cloud認定Professional Data Engineer：https://amzn.to/339Az9Z

その他問題集：
https://amzn.to/34LKAu9

##問題（#16~#18)
####Q16：
Google Kubernetes Engineクラスターで、CPU負荷に応じて自動的にノードを追加・削除したい。
要件を達成するためにするべきことは何ですか？

A.  HorizontalPodAutoscalerを目標CPU使用率で設定する。GCPコンソールからCluster Autoscalerを有効にする。
B.  HorizontalPodAutoscalerを目標CPU使用率で構成する。gcloudコマンドを使用して、クラスタの管理対象インスタンスグループでオートスケーリングを有効にする。
C.  デプロイメントを作成し、maxUnavailableとmaxSurgeのプロパティを設定する。gcloudコマンドを使用して、クラスタのオートスケーラを有効にする。
D.  デプロイメントを作成し、maxUnavailable と maxSurge のプロパティを設定する。GCP コンソールから、クラスター管理下のインスタンスグループでオートスケーリングを有効にする。
 

#####解説：
オートスケーリングにCPUのメトリクスを設定すること、正しくオートスケーリングを有効にすること、の2つについて正しい選択をする必要があります。

Horizontal Pod Autoscalerは、現在のCPU負荷に基づいてデプロイメントまたはレプリカセットのレプリカの数を変更します。
負荷が増加すると、HPAは新しいレプリカを作成しますが、そのためにクラスタに十分なスペースがある場合もあれば、そうでない場合もあります。
十分なリソースがない場合、CAはいくつかのノードを立ち上げて、HPAで作成されたPodを実行する場所を確保しようとします。
負荷が減少すると、HPAは一部のレプリカを停止します。
その結果、一部のノードが使用されなくなったり、完全に空になったりすることがあり、そのような不要なノードをCAが終了させることになります。

オートスケーリングに関しては、注意すべき点があります。
具体的には、クラスタのノードで、マネージド インスタンス グループに対する Compute Engine の自動スケーリングを有効にしてはならない、ということです。
GKE のクラスタ オートスケーラーは、Compute Engine の自動スケーリングとは別のものです。
Compute Engine オートスケーラーが GKE のクラスタ オートスケーラーと競合するため、ノードプールのスケールアップまたはスケールダウンに失敗する場合があります。
したがって、gcloudコマンドを使ったオートスケーリングの有効化はしてはなりません。

したがって正解は以下の通りです。
「HorizontalPodAutoscalerを目標CPU使用率で設定する。GCPコンソールからCluster Autoscalerを有効にする」

#####参照：
https://cloud.google.com/kubernetes-engine/docs/how-to/scaling-apps
https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-autoscaler

#####正解： A


####Q17：
あなたはサードパーティのアプリケーションを、最適化されたオンプレミスの仮想マシンからGoogle Cloudに移行しています。移行にあたって最適なCPUとメモリの決定が必要です。アプリケーションは、複数の週にわたって一貫した使用パターンを持っています。最低限のコストでリソースの使用を最適化する必要があります。
要件を達成するためにするべきことは何ですか？

A.  利用可能な最小のマシンタイプでインスタンステンプレートを作成し、現在のオンプレミスの仮想マシンから取得したサードパーティ製アプリケーションのイメージを使用する。平均CPU使用率を使用してグループ内のインスタンス数をオートスケールするマネージドインスタンスグループを作成する。実行中のインスタンス数を最適化するために、平均CPU使用率のしきい値を変更する。
B.  App Engineフレキシブル環境を作成し、Dockerファイルとカスタムランタイムを使用してサードパーティ製アプリケーションを展開する。app.yamlファイルで、アプリケーションが現在使用しているオンプレミスの仮想マシンと同様のCPUとメモリのオプションを設定する
C.  CPUとメモリのオプションを変更した複数のCompute Engineインスタンスを作成する。CPUとメモリのオプションが異なる複数のCompute Engineインスタンスを作成し、Cloud Monitoringエージェントをインストールする。サードパーティ製アプリケーションをそれぞれのインスタンスにデプロイするアプリケーションで高トラフィックレベルの負荷テストを実行し、その結果を基に最適な設定を決定する
D.  アプリケーションが現在使用しているオンプレミスの仮想マシンと同様のCPUとメモリのオプションを持つCompute Engineインスタンスを作成する。　Cloud Monitoring エージェントをインストールし、サードパーティ製アプリケーションをデプロイする。アプリケーションの通常のトラフィックレベルで負荷テストを実行し、Cloud Consoleの適正サイズに関するレコメンデーションに従う

#####解説：
仮想マシンを Compute Engine に移行する前に、使用するターゲット インスタンスの種類とサイズを決定する必要があります。
Migrate for Compute Engine には、この問題の解決に役立つ適正化機能があります。
この機能には、Cloud Monitoringによる組み込みの使用状況監視機能が含まれており、コストとパフォーマンスに最適化されたインスタンス タイプが推奨されます。

適正化には、次の 2 種類の推奨される決定方法があります。

- パフォーマンスベース：
 オンプレミス VM に現在割り当てられている CPU と RAM に基づいて Compute Engine インスタンスを推奨します。
この推奨はデフォルトです。

- コストベース： 
以下に基づいて Compute Engine インスタンスを推奨します。
オンプレミス VM の現在の CPU と RAM の構成。
指定した期間内のこの VM の平均使用率。
このオプションを使用するには、VM のこのグループに対して vSphere での適正化監視を有効にし、Migrate for Compute Engine が使用状況を分析する時間を確保する必要があります。

したがって正解は以下の通りです。
「D.アプリケーションが現在使用しているオンプレミスの仮想マシンと同様のCPUとメモリのオプションを持つCompute Engineインスタンスを作成する。Cloud Monitoringエージェントをインストールし、サードパーティ製アプリケーションをデプロイするアプリケーションの通常のトラフィックレベルで負荷テストを実行し、Cloud Consoleの適正サイズに関するレコメンデーションに従います」

#####参照：
https://cloud.google.com/migrate/compute-engine/docs/4.9/concepts/planning-a-migration/cloud-instance-rightsizing
https://cloud.google.com/migrate/compute-engine/docs/4.9/concepts/architecture/gcp-reference-architecture

#####正解： D


####Q18：
BigQuery プロジェクトには複数のユーザーがいます。監査のために、各ユーザーが先月に実行したクエリの数を確認する必要があります。
要件を達成するためにするべきことは何ですか？

A.  Google Data Studio を BigQuery に接続する。ユーザーのディメンションと、ユーザーごとのクエリ量のメトリックを作成する。
B.  BigQuery インターフェイスで JOBS テーブルのクエリを実行し、必要な情報を取得する。
C.  全てのジョブをリストアップするために、bq show を使用する。ジョブ毎に、bq lsを使用してジョブ情報をリストアップし、必要な情報を得る。
D.  Cloud Audit Logsを表示するためにCloud Audit Loggingを使用し、必要な情報を取得するために問い合わせ操作にフィルタを作成する。

#####解説：
Cloud Audit Logs は Google Cloud が提供するログの集まりで、Google Cloud サービスの使用に関連する運用上のを把握することができます。

Cloud Audit Logsは、管理者の活動、データアクセス、システムイベントなどの監査ログを保持します。
BigQueryのクエリログデータも自動的にCloud Audit Logsへ送信されます。

また、Cloud Audit Logsのフィルタ機能を使うことで、関連するBigQuery Auditメッセージをフィルタリングすることができます。
これによって、各ユーザーごとにクエリ数を確認することもできます。

したがって正解は以下の通りです。
「Cloud Audit Logsを表示するためにCloud Audit Logsを使用し、必要な情報を取得するために問い合わせ操作にフィルタを作成する」

#####参照：
https://cloud.google.com/logging/docs/audit
https://cloud.google.com/bigquery/docs/reference/auditlogs#ids
https://cloud.google.com/bigquery/docs/reference/auditlogs#auditdata_examples

#####正解： D