はじめに
Google CloudのPCA(Professional Cloud Architect)認定資格取得に向けて学習した内容を自分なりに整理します。Google Cloudのサービスに限らず、それを扱う上での関連知識についても触れています。
本記事はCompute編ということで、下記の要素を扱います。
- コンピュートサービス
- Compute Engine
- Google Kubernetes Engine(GKE)
- App Engine
- Cloud Run
- Cloud Functions
- その他ツールなど
- Firebase Test Lab
- Firebase Hosting
この記事における「現在」や「最近」などの表現は、特に断らない限り2025年6月時点を指します
コンピュートサービス
Compute Engine
フルコントロール可能な仮想マシン(VM)を提供するIaaS型サービス
- カスタマイズ性の高さが最大の特徴
- OSの選定、CPU・メモリの構成、永続ディスクやGPUの追加など
- 高パフォーマンス・低レイテンシ
- そのため以下のシーンに適している
- リフト&シフト: オンプレミスのVM環境をそのままクラウドに移行する
- 独自のカーネル設定やセキュリティパッチ、特殊なライブラリなど、細かいシステム要件がある
マネージドインスタンスグループ(MIG)
マネージドインスタンスグループ(MIG)を利用すれば、同じ構成のVMインスタンスを複数まとめて管理できる
- オートスケーリング
- CPU使用率やネットワーク負荷などに応じてインスタンス数を自動で増減
- スケーリング条件はカスタマイズできる
- ローリングアップデート(段階的更新)
- 新しい構成のテンプレートを適用した際、順番にVMを更新
- 自動修復
- VMが非正常状態になると自動で再作成
- ヘルスチェック(健全性チェック)を使って稼働状況を継続監視
- 負荷分散との統合
- Cloud Load Balancing と組み合わせて、インスタンスグループにトラフィックを分散
- ゾーン間・リージョン間の高可用性構成を実現
マネージドインスタンスグループを使用する際には、インスタンステンプレートの利用が推奨される。
これは既存のディスクから作成したカスタムイメージをベースイメージとする方法。
既存のディスク -> カスタムイメージ -> インスタンステンプレート
OS Patch Management
- Compute Engine VMに対してOSパッチ適用の自動化を可能にするサービス
- 定期的なパッチジョブのスケジューリングや、コンプライアンスレポートによる状態確認なども行える
Google Kubernetes Engine(GKE)
Google がフルマネージドで提供する Kubernetes クラスタ環境
- コンテナ化されたアプリケーションを統合的に管理できる点が最大の特徴
- マイクロサービスアーキテクチャやCI/CD、自動スケーリング、監視との統合にも優れる
- Autopilot モードを使えばインフラの運用管理も最小限に抑えることができる
- Autopilotモードは、完全マネージドでGKEを運用するモード
- Cloud RunやApp Engineのように、サーバー運用に関する部分をGoogle Cloudに委ねる状態
前提知識: Kubernetesの構成要素
- クラスタ
- Kubernetesの全体のシステムのこと
- クラスタは「マスターノード」と「ワーカーノード」で構成される
- ノード
- クラスタを構成する個々のマシン(サーバー)
- 物理サーバーでも仮想マシンでも構わない
- マスターノード(コントロールプレーン)
- クラスタ全体を管理・制御する司令塔
- ワーカーノード
- 実際にアプリケーションが動作するマシン
- ポッド
- Kubernetesでアプリケーションを動かす最小単位
- 通常は1つのコンテナが入るが、密接に連携する複数のコンテナを含むこともある
- Podは一時的な存在で、必要に応じて作られたり削除されたりする
クラスタ(全体のシステム)
├── マスターノード(管理役)
└── ワーカーノード(実働部隊)
└── Pod(アプリケーションの実行単位)
└── コンテナ(実際のアプリケーション)
コマンド
-
gcloud
- Google Cloud全体を管理するコマンド
- GKEでは、クラスタの作成や更新で使用する
-
kubectl
- Kubernetesクラスタを管理するための標準ツール
- GKEでは、PodやServiceの管理で使用する
-
kubemci
- 複数クラスタにまたがるIngressを作成する(≒ HTTP(S)ロードバランサーを作成する)専用CLI
Anthos
ハイブリッド/マルチクラウド対応のKubernetes管理・運用プラットフォーム
- 複数のKubernetesクラスタを総合的に管理する
- ここでいう「複数のKuberentesクラスタ」は、オンプレミスやAWSなど他クラウド環境も対象
- それらに対して、統一されたポリシー、セキュリティ、サービスメッシュ管理を提供する
- サービスメッシュ: マイクロサービス間の通信をアプリケーションの外側で統一的に制御する仕組み
- 「どこに通信するのか」「どのように通信するのか」「失敗時のリトライはどうするのか」などをアプリケーションコードの中で制御するのではなく、切り出された専用の仕組みに任せるもの
- サービスメッシュ: マイクロサービス間の通信をアプリケーションの外側で統一的に制御する仕組み
Cloud Run for Anthos
Cloud Run のサーバーレスな開発体験を保ちつつ、GKEクラスタでコンテナを実行できる環境
Istio
Kubernetes上で動作するサービスメッシュの代表的な実装
アプリケーションのコードを変更せずに、トラフィック制御・セキュリティ・可観測性・リトライ・タイムアウト・サーキットブレーカーなどの機能を提供
フォールトインジェクション
- 意図的にHTTPエラーを返したり、レスポンスに遅延を発生させたりして、マイクロサービスの障害挙動をシミュレートできる機能
- 本番に近いトラフィック条件下での耐障害性テスト(カオスエンジニアリング)が可能
Ingress
外部トラフィックをKubernetesクラスタ内のサービスにルーティングする
レイヤー7(アプリケーション層: HTTP(S))でのルーティング制御を行う
App Engine
App Engine Standard Environment
インフラ管理不要(サーバーレス)でアプリケーションコードをデプロイするだけで動作するPaaS
- インスタンスの起動・停止やスケーリングは完全に自動で行われ、トラフィック量に応じたリソース割当が行われる
- バージョン管理やトラフィック分割など、アプリの運用面も機能が提供されている
- そのため、主に以下のシーンに適している
- トラフィックに大きな波があり、インフラのスケーリングを自動で任せたい
- バージョンごとに動作を検証したり、一部のトラフィックだけを新バージョンに流すなどの運用が必要
- memcacheが組み込まれている
- memcacheのサービスレベル
- 共有(shared)
- 無料で使えるが他アプリとキャッシュが共有される
- 開発環境や、ごく軽い用途で使用する
- 専用(dedicated)
- 特定のアプリ専用にメモリを確保し、確実にキャッシュを保持する
- 基本的に本番環境ではこちらをしy
- 共有(shared)
- memcacheのサービスレベル
App Engine Flexible Environment
- Docker コンテナベースの環境で、Standardに比べて、より高い自由度がある
- 任意のライブラリ・ランタイムを使用可能
- VMベースなので、Cloud Logging, Monitoring, SSH接続など Compute Engine の機能が利用可能
- アプリは Compute Engine VM 上で実行される(数秒~数十秒の起動時間)
Cloud Run
コンテナイメージをリクエスト駆動で実行できるサーバーレスなプラットフォーム
- コンテナを扱うためCloud Functionsよりも自由度が高く、好きな言語やランタイム、バイナリを含むアプリケーションをデプロイ可能
- リクエストに応じて自動スケールし、同時実行やリクエストごとのインスタンス分離設定も可能
Cloud Functions
関数単位でデプロイできる、イベント駆動型のサーバーレスなFaaS(Function as a Service)
- 特定のイベント(Pub/Sub、Cloud Storage、Firebase など)をトリガにして自動的にコードを実行できる
- リクエストごとに必要なだけインスタンスがスケールする
- 関数は短時間で実行される軽量なユースケース向き
その他ツールなど
Firebase Test Lab
- モバイルアプリ(Android/iOS)の自動テストを実行できるテストツール
- ビルド済みのアプリをアップロードし、そのアプリに対するテストを実機やエミュレータ上で実行し、結果をレポートとして提供する
- 様々なOSバージョン、画面サイズ、設定の端末上でテストを実行できる
Firebase Hosting
- 静的コンテンツ(HTML, CSS, JSなど)を高速に配信できるホスティングサービス
- GoogleのグローバルCDNを活用して、エッジロケーション(なるべくユーザーに近い拠点)から配信される