Google Cloud Associate Cloud Engineer合格に向けた勉強まとめ

Google associate cloud engineer合格体験記

Google Cloud Associate Cloud Engineerの合格に向けて勉強したことをまとめています。

ほぼ自分のための備忘録です。順番も適当です。

Serverless Computing

代表的な3つのサーバレスコンピューティング環境についてまとめる。

どのサービスでも従量課金制になっており、リクエストがないときにはゼロスケーリング可能。

Cloud Run

コンテナ化されたアプリケーションを素早くデプロイ、スケーリングできるプラットフォーム。

以下2つの種類がある。参考:GoogleCloudBlog – GKE と Cloud Run、どう使い分けるべきか

  • マネージドCloud Run:Googleがマネージする一般的なCloudRun。リクエスト数に応じて自動スケーリングも行う
  • Cloud Run for Anthos:アプリケーションをAnthos GKEクラスタ上にデプロイする。kubernetes環境を使えるので、高度なネットワーク構成(websocketなど)やGPUの利用などが可能になる。

※ Cloud Run for Anthosではクラスタの管理にノードが必要なため、完全なゼロスケーリングはできない。

Cloud Function

サーバ管理が不要で、イベントドリブンに簡単なAPIを動かすときに最適なプラットフォーム。

ここでのイベントは、CloudStorage内のデータが作成・削除されるなどといったイベント。Pub/Subと連携することで、事前に設定したイベントに基づき任意のAPIを起動することが可能。

App Engine

ウェブアプリケーションの開発に適したプラットフォーム。

AppEngineはリージョンサービスであるため、一度デプロイすると各ゾーンで冗長的に利用可能。デプロイ先のリージョンを変更するためには、新しいプロジェクトを作成し、アプリを再デプロイする必要がある。

また、Cloud Pub/SubとはCloudClientLibraryを利用して統合する必要があるため、CloudRunやCloudFunctionほどには気軽にPub/Subとの連携は不可。

Big Query

マルチクラウドデータウェアハウスで、主にビッグデータの分析に利用される。AWSのAmazon Redshiftと似たサービス。

料金はMB単位のデータ処理容量に基づいて決定する。データの最小処理容量は10MB。LIMIT句を利用した場合でも、出力が制限されるだけでデータ処理容量が減るわけではない点に注意。

BigQuery Data Transfer Service

あらかじめ設定されたスケジュールに従い、BigQueryへのデータの移動を自動化するマネージドサービス。

Google Software as a Service(SaaS)アプリケーション(GooglePlayやYoutube, Cloud Storageなど)や、AmazonS3、Teradata、AmazonRedshiftなどのデータを移動可能。一方で、MySQLといったDBのデータはサポートしていない。

BigQueryによるGCPのコスト管理

Cloud Billingのエクスポート機能を利用することで、BigQueryデータセットにGoogleCloudの課金データを自動エクスポートすることが可能。

エクスポートされたデータから、BigQueryによる分析が可能。

外部データソースとの連携

BigQueryでは、外部に保存されたデータに対してクエリを発行してデータ分析することが可能。

2021年6月に対応している外部データソースは、Bigtable, CloudStorage, Google Drive, Cloud SQL。

参考:外部データソースの概要

Security Command Center

Google Cloud のセキュリティとデータリスクを把握するのに役に立つ正規データベース。

Web Security Scanner

App Engine、Google Kubernetes Engine、Compute Engine ウェブ アプリケーションにおけるセキュリティの脆弱性を特定するサービス。アプリケーションをクロールして、開始 URL の範囲内にあるすべてのリンクをたどり、できる限り多くのユーザー入力とイベント ハンドラの処理を試みる。

現在のサポート対象は、ファイアウォールの背後にない、公開 URL と IP のみ。

Cloud Storage

Google Cloudでオブジェクトを保存するためのサービス。AWSのS3と同じ。

Cloud KMSを利用した暗号化の設定は、いつでも設定画面から変更可能。

一般公開データ

CloudStorage内のオブジェクトは一般公開することが可能で、その際のURLの設定は下記に従う。

https://storage.googleapis.com/[BUCKET_NAME]/[OBJECT_NAME]

ストレージクラス

コスト最適化や可用性の観点から、データの使用頻度に応じてストレージクラスを変更することが可能。AWSとの比較も行ってみる。

アクセス頻度GCPAWS
高頻度StandardS3標準
中頻度NearlineS3標準-IA (?)
低頻度ColdlineS3 Glacier
超低頻度ArchiveS3 Glacier Deep Archive

整合性モデル

まずは整合性についておさらい。。。

強整合性は、変更中のデータは他の人は見れない。つまり、常に見ているデータは最新であるといえる。

結果整合性は、変更中のデータでも古いデータを参照可能。つまり、見ているデータが古い可能性がある。

この上で、CloudStorageでは、オブジェクトの書き込み・削除など下記の処理は強整合性が確保されている。

  • read-after-write
  • read-after-metadata-update
  • read-after-delete
  • バケットの一覧表示
  • オブジェクトの一覧表示

一方で、リソースへのアクセス権の付与・取り消しは、結果整合性である。

参考:https://cloud.google.com/storage/docs/consistency

Cloud Logging

Google Cloud上のログを保存、分析、検索、通知できるサービス。

主な機能説明
Cloud Audit Logクラウド内で誰がどこでいつ何をしたのかを調べるのに役に立つ機能。
Cloud プロジェクト、フォルダ、組織ごとに以下の監査ログが提供される。
・管理アクティビティ監査ログ
・データアクセス監査ログ
・システム イベント監査ログ
・ポリシー拒否監査ログ
ログエクスプローラークエリーによるログの検索、分析、可視化などが可能
ログアラート自身でログベースの指標を定義し、ログイベンに基づくアラートを設定可能
エラーレポート意味のあるエラーや、新しいエラーを自動的に分類してくれる機能

Virtual Private Cloud(VPC)

クラウド上の仮想ネットワーク。GCPとAWSで設定が異なるので、ちょっと注意が必要。

サービスGCPAWS
VPCグルーバルにまたぐことが可能リージョンごとに作成
サブネット複数のゾーンをまたぐことが可能アベイラビリティゾーンごとに作成

VPC内ではプライペートIPで通信可能なので、GCPではグローバルにVPCを組むと、効率的でセキュアな通信が可能になる。

Compute Engine

インスタンスの作成コマンドは、gcloud compute instances createとなる。

実行時に、–metadata-from-fileオプションを利用して、起動スクリプトを渡すことが可能。

インスタンスグループ

2種類のVMインスタンスグループが存在する。

  • マネージドインスタンスグループ(MIG):複数の同一 VM でのアプリケーション操作が可能。自動スケーリング、自動修復、リージョン(マルチゾーン)デプロイメントなどの自動化MIGサービスを活用可能。スケーラブルで可用性に優れたワークロード処理を実現する。
  • 非マネージドインスタンスグループ:ユーザー自身が管理する一連の VM 間での負荷分散が可能。

ストレージオプション

ComputeEngineで利用できるストレージオプション

ストレージオプション説明
ゾーン永続ディスク信頼性の高いブロックストレージ
リージョン永続ディスク2つのゾーンに複製されたリージョンブロックストレージ
ローカルSSD高パフォーマンスかつ、一時的なローカルブロックストレージ。起動ディスクとしての利用はできない
Cloud StorageバケットCloud StorageバケットをComputeEngineにマウントすることで利用できる、手頃の料金なオブジェクトストレージ
FilestoreComputeEngineにNFSプロトコルでマウント可能なファイルストレージ。つまりNAS。AWSのAmazonEFS

スナップショットについて

永続ディスクのスナップショットスケジュールは、時間・日・週で指定可能。

スケジュールの更新には、既存スケジュールを消してから新規スケジュールを作成する必要がある。

DBやストレージ関係のまとめ

DB系のサービスが多いので、まとめておく。

データの種類や構造サービス名説明
ObjectCloud Storageオブジェクトの保存用スト−レジ。AWSのS3
In-MemoryCloud MemorystoreRedisとMemcached向けのインメモリサービス。Amazon ElasticCache
RelationalCloud SQLMySQL, SQL Server, PostgreSQLの代替となるクラウドベースサービス。Oracleには非対応。Amazon RDS
Cloud SpannerCloudSQLにグローバルな水平スケーリング機能などを追加した高機能サービス。
Non-RelationalCloud DatastoreNoSQLのスキーマレスなサービス。key-value型。Amazon DynamoDB
Cloud Bigtable時系列データやIoTデータに最適なデータベースで、ビッグデータ向けのフルマネージドNoSQLサービス。分析向け。

GoogleCloudBlogに投稿されているこちらの画像がわかりやすい。

Kubernetes

コンテナ化されたワークロードやサービスを管理するためのプラットフォーム。

ここは勉強不足でまとめられるほどの知識がない…kubernetesだけで他の記事にする予定。

とりあえず、絶対に覚えておかないといけない3つの概念は下記。

  • Pod:一つ以上のコンテナで構成されるコンテナコレクション。Pod内のコンテナは密に接続しており、一つの論理的なアプリケーションとして動作する。
  • Service:Podsのエンドポイントを提供する。Podは再起動のたびにIPが変わるので、Serviceに設定したLabelを通じてPodにアクセスする。
  • Deployment:Podの状態を自分で設定した状態に維持する。Podがスケーリングや更新が必要なときにはDeploymentがその処理を行う。

(勉強中)実際にはDeploymentはReplicaSetを管理しているかも。ReplicaSetはPodマネージャーのことで、必要に応じでPodのレプリカを作成する。

Service typeについて

Podsのエンドポイント管理であるServiceには、typeが4種類ある。ここはよく模擬試験で出題されているのでまとめておく。抽象的な概念として、ClusterIP < NodePort < LoadBalancer

  • ClusterIP:クラスター内部のIPでサービスを公開する。Pods間の通信はこれで行われる。service typeのデフォルト値
  • NodePort:各NodeのIPで静的なポートを用いてサービスを公開する。つまり、外部からアクセスできるポートが提供される。
  • LoadBalancer:NodePortの更に手前にクラウドプロバイダのロードバランサーを配置して外部にサービスを公開する。
  • ExternalName:CNAMEレコードを利用してサービスに別名をつけることが可能。

ExternalNameは試験対策問題にあまりでない。一方で、ClusterIPとNodePortの違いはよく覚えておくべき。

基本的に、ClusterIP, NodePort, LoadBalancerの順番で機能が拡張されている。

PodとNodeとNode Poolについて

抽象的に捉えると、Pod < Node < Node Pool

  • Pod:一つ以上のコンテナグループのことで、kubernetesでは最小単位のこと。
  • Node:クラスター内におけるワーカーマシン(仮想・物理は問わない)のこと。Podは全てNode上で動作していて、Node上にPodグループがある感覚。
  • Node Pool:Nodeのグループのこと。NodePool内の最大Node数はクラスタ生成時に指定することが可能。手動でノード数を変更する場合は、gcloud container clusters resizeコマンドで可能。また、自動スケーリングを設定しておくことで、Node数を動的に変更することも可能

その他

サービス名説明
CloudCDN世界各地に分散しているエッジ接続拠点にコンテンツをキャッシュするサービス。キャッシュを利用することで、HTTP(S)負荷分散されたコンテンツをより高速に配信することが可能になる。Amazon Cloud Frontと同様のサービス。
Dataprocビッグデータ処理が可能なサービス。Spark, Hadoop, Prestoなど30以上のOSSフレームワークを実行可能。AWSのAmazon EMR
Cloud Scheduler一般的にcronジョブと呼ばれるジョブを呼べるサービス。一定時間ごとに定義したジョブを実行可能
Cloud InterconnectオンプレミスとVPCの間で、専用接続によるデータ転送を可能にするサービス
Deployment Managerインフラをyaml等のコードによって管理し、効率的にプロビジョニングするサービス。AWSのCloudFormation
ShieldedVMOSレベルの改ざん検知やシステムの整合性確認に使われるサービス。
Cloud ArmorDDoS攻撃からwebサービスを保護するサービス
Transfer Applianceラックマウント可能なストレージサーバーを利用したオフラインデータ転送サービス。
データセンターでデータをストレージサーバーに取り込んだ後、Cloud Storageデータをアップロード可能な拠点にサーバーを移動して、CloudStorageにデータを格納する。
マネージドインスタンスグループの自動スケーリングCPUの平均使用率に基づくスケーリングか、HTTP負荷分散処理能力に基づくスケーリングも可能