今回も、前回に引き続き、「Google Associate Cloud Engineer」認定取得の勉強におけるアウトプット内容となっています。
将来、「Google Associate Cloud Engineer」認定取得を目指している方向けに、ぴったりの内容となっています。
今回で、「Google Compute Engine(GCE)」セクションは終わりです。
Cloud Functions
Cloud Functionsは、クラウドにアップロードしたコード(関数)を自動で処理することができるサービスです。
例えば、クラウドにアップロードした画像から、撮影した場所や日付をテキスファイルに保存したりすることができます。
Cloud Functionsの特徴
- サーバレス:サーバの構築が必要ない
- クラウドで簡単にコード(関数)を実行:コードをアップロードするだけで自動的に実行
- オートスケーリング:負荷に応じて自動で拡張縮小
- 料金は従量制:料金は使った分だけ
- 2つの世代有り:第1世代と第2世代
Cloud Functionsで使用できるプログラミング言語
- C#
- Go
- Java
- Node.js
- PHP
- Python
- Ruby
Cloud Functions起動のきっかけ(トリガー)
Cloud Functionsが起動するきっかけ(トリガー)は、2つあります。
- HTTPトリガー
- イベントトリガー
1.HTTPトリガー
指定されたURLにアクセスすると、Cloud Functionsにアップロードしたコードが実行される
トリガーです。
2.イベントトリガー
イベントに応答する形で実行されるトリガーです。イベントトリガーの種類は下記になります。
- Eventarcトリガー
- Pub/Subトリガー
- Cloud Storageトリガー
- Cloud Firestoreトリガー
Eventarcトリガー
Google Cloud もしくは外部のサービスで発生したイベントを受信します。
Pub/Sub トリガー
新しいまたは既存の Pub/Sub トピックからメッセージを受信します。
Cloud Audit Logs トリガー
100 以上のイベントソースから監査ログを受信します。
Cloud Storage トリガー
Cloud Storage バケットからイベントを受信します。
制限事項
- 最長実行時間(HTTP関数):9分(第一世代)、60分(第二世代)
- 最長実行時間(イベントドリブン関数):9分(第一世代)、10分(第二世代)
Google Kubernetes Engine(GKE)
Google Kubernetes Engine(GKE)は、コンテナの管理や負荷増大におけるスケール調整等を総合的に行うサービスです。
例えば、大規模なWebサービス等を展開する際に使用します。
Google Kubernetes Engineの特徴
- コンテナ内アプリケーションのオーケストレーションツール
- クラスターのスケーリング、永続ディスク、最新バージョンへの自動更新
- クラスターの異常検知と修復をサポート
- ネットワークの負荷分散
- Cloud Build、Container Registry、Stackdriver Monitoring、Stackdriver Loggingと統合
- オンプレミスで実行されている既存のワークロードも簡単に移行可能
コンテナとは
コンテナとは、仮想マシン(VM)とよく似ていますが、違う点は、ゲストOSの部分がなく、ホストOS上にコンテナエンジンがあります。そのコンテナエンジンが、各コンテナを管理しています。コンテナエンジンとして有名なのが、「Docker」です。
使用例
- コンテナ化されたアプリケーション
- クラウドネイティブの分散システム
- オンプレミスのアプリケーションと連携するハイブリッドアプリケーション
Cloud Run
Cloud Runは、クラウドにアップロードしたコンテナイメージを自動で処理することができるサービスです。
例えば、スマートフォンアプリを構築する際等に使用します。
Cloud Runの特徴
- コンテナイメージをビルド
- 高速自動スケーリング
- 従量課金制
- サーバーレス
- リクエストがないとき稼働を停止することが可能(その期間は無料)
Cloud Runの種類
- Cloud Run サービス
- Cloud Run ジョブ
1.Cloud Run サービス
Webアプリのように、リクエストが何度も実行されるようなアプリを構築する場合は、Cloud Runサービスを使用します。例えば、Instagram等のアプリケーションの場合、複数のユーザが絶えず投稿や閲覧等を行っているので、そういった場合は、Cloud Runサービスを選択します。
2.Cloud Run ジョブ
終わりがあるジョブ(作業)を実行するのに適しています。例えば、複数のランダムに生成されたファイル名を統一されたファイル名に変更するなど、ジョブが完了する処理は、Cloud Runジョブを選択します。
Cloud RunとCloud Functionsの違い
Cloud RunとCloud Functionsの違いは、Cloud Runはコンテナイメージ展開して使用するので、プログラミング言語(ラインタイム)の制限はありません。また、Cloud Runは、コンテナを使用するので、様々なコンテナと組み合わせてWebアプリ等を作成するのに向いています。
逆にCloud Functionsは、プログラミング言語を使用して記述したコード(関数)を実行するのに適しています。よって、例えば、クラウドに保存したファイルのファイル名を、決められたルールに従ってファイル名を変更する等何かしらの処理を行いたい場合に向いています。
このように、Cloud Runはコンテナ、Cloud Functionsはコード(関数)を使用します。
Cloud RunとGKEの違い
Cloud RunとGKE、どちらもコンテナイメージを展開するところは一緒ですが、どのような違いがあるかを列挙します。
- Cloud Runはスケールインを0までできるが、GKEはできない
- GKEはコンテナの制御を定義ファイルで記述するが、Cloud Runは自動で行う
- 複雑はコンテナ構成の場合は、GKEを使用して展開する
上記のように、スケーラビリティ、コンテナの構成が複雑かどうかが、異なるポイントになります。
まとめ
今回は、Compute Engineに関して下記3点について説明しました。
- Cloud Functions
- Google Kubernetes Engine(GKE)
- Cloud Run
上記は、どれも同じようなサービスですが、ざっくり説明すると、
- Cloud Functionsはコード(関数)を展開
- Google Kubernetes Engine(GKE)は複雑なコンテナの管理
- Cloud Runはシンプルなコンテナを展開
上記だと私は考えております。
また、Googleの正式なドキュメントも確認してください。
これからも、Macのシステムエンジニアとして、日々、習得した知識や経験を発信していきますので、是非、ブックマーク登録してくれると嬉しいです!
それでは、次回のブログで!