Google Cloud:Professional Cloud Architect(PCA)試験対策メモ~コンピューティング/コンテナ/サーバーレス編~

PCAの試験メモです。
ざっとサービスの概観を把握するのにご活用ください。


# Compute Engine(GCE)
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695531481126_image.png)

- AWSで言うと**EC2**
- Googleのインフラストラクチャで仮想マシンを作成して実行できる、安全性の高いカスタマイズ可能なコンピューティングサービス
- Compute Engine上で生成されるログをGoogle Cloud上で管理する際のプラクティスは、**Cloud Loggingエージェントをインストールし、Cloud Loggingに送信**すること
- インスタンステンプレート
    - 既存のディスクから作成した**カスタムイメージをベースイメージ**とする方法
- インスタンスグループ
    - マネージド インスタンス グループ（MIG）
        - **複数の同一VM**でのアプリケーション操作が可能。
        - オートスケーリング、自動修復、リージョン（マルチゾーン）デプロイメント、自動更新などの自動化 MIG サービスが利用可能。
            - ローリングアップデートの更新タイプには、**PROACTIVE**（自動先行更新、更新型）と**OPPORTUNISTIC**(日和見、選択更新、追従型)があり、**前者がマネージド、後者が指定型**である。実行されていないインスタンスから更新を行うためには、Opportunistic updateモードによるローリングアップデートが最適。
        - ステートレスMIG
            - 自動スケール可
        - ステートフルMIG
            - 自動スケール不可
    - 非マネージド インスタンス グループ
        - ユーザー自身が管理する一連の VM 間での負荷分散が可能。
        - オートスケーリングやローリングアップデート不可。
        - インスタンステンプレート使用不可。
- プリエンプトインスタンス
    - AWSで言うと**スポットインスタンス**
    - Google Cloudが好きなタイミングでインスタンスを占有（プリエンプト）して利用できることを意味する。らしい。
- クラスタのノードで、マネージド インスタンス グループに対する Compute Engine の自動スケーリングを有効にしてはならない
    - 競合してしまうから


# App Engine
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695531705290_image.png)

- AWSで言うと**Elastic Beanstalk**
- モノリシックなサーバーサイドでレンダリングされたウェブサイトを構築する。
- 環境
    - **標準環境**は**迅速なスケーリング**に対処する必要があるアプリケーションに適している。
    - **フレキシブル環境**は一定したトラフィックを受信する、定期的にトラフィックの変動がある、または徐々にスケールアップやスケールダウンするパラメータを満たすアプリケーションに適している。
    - フレキシブル環境のほうがGCEに近いって感じかな？
    - https://cloud.google.com/appengine/docs/the-appengine-environments?hl=ja
- トラフィック分割機能が存在する
    - 簡単に環境を複数個作り出し、Ａ/Bテストを行うことが可能
    - 完全ランダム、IPアドレス分割、Cookie分割の３パターンが指定可能

# Cloud Run
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695531451009_image.png)

- AWSで言うと**App Runner**
- フルマネージドのサーバーレス プラットフォームであらゆる言語（Go、Python、Java、Node.js、.NET、Ruby）で記述されたスケーラブルなコンテナ型アプリを構築してデプロイできる
- トラフィックを受信するリビジョンと、リビジョンが受信するトラフィックの割合を指定できる。
    - カナリアリリースのこと。
    - **リビジョン**：バージョンみたいなこと。
- リージョナルなサービス
    - グローバルなユーザーにサービスを提供するためには、グローバルHTTP LBとバックエンドとしてNEG（ネットワークエンドポイントグループ）を設定する必要がある


# GKE
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695568511413_image.png)

- AWSで言うと**EKS**
- 最もスケーラブルで完全に自動化された Kubernetesサービス
- **Cloud Monitoring および Cloud Logging とのネイティブ統合**が含まれている
- GKE クラスタを作成すると、Cloud Operations for GKE がデフォルトで有効になり、Kubernetes 専用の**モニタリング ダッシュボード**が使用できる
    - 有効化されていないGKEクラスタを有効化する際には、アップデートが必要
- gcloud container clusters update CLUSTER_NAME **--enable-autoscaling** --min-nodes=1 --max-nodes=10 というコマンドによってクラスターのサイズを自動的に変更
- ノードグループにノードアフィニティラベルを指定は不可。
    - ノードに直接指定する


# GKE周辺
**Binary Authorization**
![](https://paper-attachments.dropboxusercontent.com/s_C0B9B860F953A25EA16C2CCF8F583F6019F7C86ACE0F396FDB1FCFDCF421D619_1695550861139_image.png)

- AWSで言うと…何？Configとか？
- Google Kubernetes Engine（GKE）や Cloud Run に信頼できるコンテナ イメージのみをデプロイするためのデプロイ時**セキュリティ コントロール**


**StatefulSet**
- StatefulSet は、Kafka、MySQL、Redis、ZooKeeper などの**一意で永続的な ID と固有のホスト名が必要なアプリケーションのデプロイ**に適している。


**kubemci/Ingress for Anthos**
- マルチリージョンにGKEを展開してingressを設定するには、kubemciまたはAhthosの使用が必要
- **kubemci は現在非推奨**となっており、**Ingress for Anthos**が推奨されている。
- Ingress for Anthos は**マルチクラスタの ingress**を導入するために適した方法。


# おまけメモ
- コンテナ：**最小限の依存性を持つ小さなベースイメージ**によって、より速くアプリケーションをデプロイすることができます。
- アンマネージドなサービスを使用することは、技術検証をユーザーがすることになるため信頼性は向上しない。
- Cloud Scheduler をスケジューリングに使用し、Pub/Sub を分散メッセージングに使用することで、一連の Compute Engine インスタンス全体にタスクを確実にスケジューリングするアプリケーションを作成できる。
- Cloud Shellは、仮想マシンインスタンス上の$HOMEディレクトリにマウントされた5GBの無料永続ディスクストレージを提供する。
- Migrate for Compute Engine
    - サーバ移行ツール
    - パフォーマンスベースとコストベースが存在する