[GCP] GCPサービスを勝手にまとめてみた(コンピューティング編)

# GCPって
https://qiita.com/risa0320/items/5f34bc9102e575705274

# サービスの分類
おおまかにはこんな感じ。（一部省略してます）
※2019年8月末時点のもの。
※α版、β版を含む。
https://cloud.google.com/products/?hl=ja よりいろいろ引用してます。

| 分類       |  サービス例    |
|:-----------------|:------------------|
| AIと機械学習   | AutoML,Vision AI,Cloud TPU... |
| API管理 | Apigee Sense,Cloud Healthcare API... |
| コンピューティング | Compute Engine,App Engine,Cloud Functions... |
| データ分析 | BigQuery,Cloud Composer,Cloud Dataflow... |
| データベース | Cloud SQL,Cloud Bigtable,Cloud Spanner... |
| デベロッパーツール | Container Registry,Cloud Build... |
| ハイブリットとマルチクラウド | Anthos,GKE On-Prem... |
| IoT | Cloud IoT Core,Edge TPU |
| 管理ツール | Stackdriver,Monitoring,Private Catalog... |
| メデイアとゲーム | Zync Render,Anvato... |
| 移行 | Cloud Data Transfer,Transfer Application... |
| ネットワーキング | Virtual Private Cloud,Cloud DNS,Cloud NAT... |
| セキュリティ | Cloud Security Scanner,Cloud IAM,Cloud HSM... |
| ストレージ | Cloud Storage,Cloud Firestore... |

# サービスをもう少し深く見てみる
## コンピューティング
### Google Compute Engine
スケーラブルで高性能な仮想マシン
> Google Compute Engine は、Google のデータセンターとファイバー ネットワークで運用される仮想マシンを提供します。1 つのインスタンスからグローバルに負荷分散されたクラウド コンピューティングまでスケール可能です。

Compute Engine の仮想マシンは高速で起動し、永続ディスク ストレージを備え、安定したパフォーマンスを実現します。Google の仮想サーバーは、さまざまな構成で使用できます。事前に定義されたサイズで使用することも、独自の要件に合わせてカスタム マシンタイプを作成することもできます。Compute Engine は、柔軟な料金体系と自動の継続使用割引で、業界をリードする価格性能比を実現しています。

Google版VM。

<特徴>

* 事前定義されたマシンタイプ
* Linux と Windows のサポート
* カスタム マシンタイプ
* バッチ処理
* 永続ディスク
* コンプライアンスとセキュリティ
* ローカルSSD
* 秒単位の課金
* 透過的なメンテナンス
* 自動割引
* 確約による割引
* コンテナ
* グローバルな負荷分散

Compute Engineは起動時間あたりの料金制なので、ついつい停止し忘れてコストが...
となりそうですが、自動割引がかかるのでちょっと安心。

### Google App Engine
フルマネージド型のサーバーレスなプラットフォーム上で高度なスケーラビリティを備えたアプリケーションを構築
> フルマネージド型のプラットフォーム上でアプリケーションを構築してデプロイしてください。アプリケーションのスケールをゼロから地球規模まで拡大しても、基盤となるインフラストラクチャの管理について心配する必要はありません。サーバーの管理も環境の構成も不要なため、開発者は優れたアプリケーションを構築することだけに集中でき、管理上のオーバーヘッドは発生しません。App Engine では、よく利用されている開発言語と幅広いデベロッパー ツールがサポートされているため、デベロッパーは高い生産性と俊敏性（アジリティ）を維持できます。

<特徴>

* 一般的な言語
* アプリケーションのバージョニング
* オープンかつ優れた柔軟性
* トラフィック分割
* フルマネージド
* アプリケーションのセキュリティ
* モニタリング、ロギング、診断
* サービスエコシステム

使用できる言語が以前よりも増えてきているので、コンピューティングの中でも一番使いやすいものな印象。
簡単にサクッとアプリが作成できる。

### Google Kubernetes Engine
Kubernetes クラスタを効率的かつ安全な方法で確実に実行
> Kubernetes Engine は、コンテナ化されたアプリケーションをデプロイするための、本番稼働に対応したマネージド型環境です。最新のテクノロジーを利用して、デベロッパーの生産性、リソースの効率性、自動運用、オープンソースの柔軟性の向上を図り、製品化までの時間を短縮します。
2015 年にリリースされた Kubernetes Engine は、12 年以上にわたって Gmail や YouTube などのサービスをコンテナ内で実行してきた Google の豊富な経験に基づいて構築されています。Kubernetes Engine を使用すると、専用の Kubernetes クラスタをインストールして管理、操作する必要がなくなり、Kubernetes の設定から稼働までを短時間で完了できます。

<特徴>

* ID とアクセス管理（IAM）
* ステートフル アプリケーションのサポート
* ハイブリッド ネットワーキング
* Docker イメージのサポート
* セキュリティとコンプライアンス
* フルマネージド
* 統合されたロギングとモニタリング
* コンテナ向けに設計された OS
* 自動スケーリング
* 専用 Container Registry
* 自動アップデート
* 自動修復
* 高速でかつ一貫性があるビルド
* オンプレミスとクラウドでワークロードの移動が可能
* リソース制限
* GPUのサポート
* 組み込みダッシュボード

運用管理が大変なKubernetesをGoogleがマネージメントしてくれてるのは熱い。
また、ノード異常があっても自動修復機能があるので安心。
何もしなくてもいい感。

### Cloud Run on GKE(β版)
完全に管理された環境または独自のGKEクラスターでステートレスコンテナーを実行。
> Cloud Runは、ステートレスコンテナを自動的にスケーリングするマネージドコンピューティングプラットフォームです。Cloud Runはサーバーレスです。すべてのインフラストラクチャ管理を抽象化するため、最も重要なこと、つまり優れたアプリケーションの構築に集中できます。Knativeから構築されており、Cloud Runで完全に管理されたコンテナを簡単に実行するか、GKEでCloud Runを使用してGoogle Kubernetes Engineクラスタでコンテナを簡単に実行できます。

<特徴>

* 任意の言語、任意のライブラリ、任意のバイナリ
* コンテナのワークフローと標準を活用
* シンプルな開発者エクスペリエンス
* マネージド
* 高速自動スケーリング
* 冗長性
* 統合されたロギングとモニタリング
* Webトラフィックまたは非同期イベントを処理する
* Knativeで構築
* HTTPS URL
* カスタムドメイン

複数のゾーンに自動的に複製されるので、冗長化どうしようと考えなくてもいい。

### Container Registry
Docker コンテナ イメージを保存、管理、保護します。
> Container Registry では、Docker イメージの一元的な管理と脆弱性分析を行えます。また、きめ細かなアクセス制御によって、どのユーザーが何にアクセスできるのかを決定できます。CI / CD 統合があらかじめ用意されており、完全に自動化された Docker パイプラインを設定して迅速なフィードバックを得ることができます。

社内の全Docker Imageをこれで管理すれば、Imageの一元管理と同時にアクセス制御できたり、CI/CDがあらかじめ用意されているのは便利かも。

<特徴>

* 脆弱性スキャン
* コンテナのタグ
* 自動ビルドトリガー

DockerのImageの脆弱性を判断するために、わざわざclairやTrivyを使う必要がなくなる。

### Cloud Functions(β版)
イベント ドリブンなサーバーレス コンピューティング プラットフォーム
> Google Cloud Functions は、クラウド サービスの作成と接続に使用できるサーバーレスの実行環境です。Cloud Functions を使用すると、クラウド インフラストラクチャやサービスから生成されたイベントに関連する簡単な関数を作成できます。対象のイベントが生成されると、Cloud Function がトリガーされます。コードはフルマネージドの環境で実行されます。インフラストラクチャをプロビジョニングする必要はなく、サーバーの管理に悩まされることもありません。
Cloud Functions は JavaScript で作成され、Google Cloud Platform の Node.js v6.11.5 環境で実行されます。Cloud Function を取得して標準的な Node.js ランタイムで実行すると、移植とローカルテストをスムーズに行うことができます。

Cloud Functionsっていつまでβ版なんだろう。。かなり前な気がする。

<特徴>

* サーバー管理が不要
* お支払いはコードを実行した時間分だけ
* 自動スケーリング
* イベントに反応して実行されるコード
* 連携して拡張されるサービス
* 使い慣れたオープンな環境

Cloud Pub/Sub, Cloud Storage, HTTP, Stackdriver Logging,FirebaseのイベントからCloud Functionsを呼び出すことができる。
対応している言語は、Node.js、Python、Go。

### Shielded VM(β版)
Google Cloud Platform 上の強化された仮想マシン。
> Shielded VMs は、ルートキットやブートキットによる攻撃を防御する一連のセキュリティ制御により強化された Google Cloud Platform 上の仮想マシン（VM）です。Shielded VMs を使用することで、リモート攻撃、権限エスカレーション、悪意のある内部関係者といった脅威から企業のワークロードを保護できます。Shielded VMs では、高度なプラットフォーム セキュリティ機能として、セキュアブート、メジャーブート、仮想トラステッド プラットフォーム モジュール（vTPM）、UEFI ファームウェア、整合性モニタリングなどを活用します。

<機能>

* セキュアブートとメジャーブートで整合性の検証が可能
* vTPM の情報流出防止機能
* 信頼できる UEFI ファームウェア
* 改ざん証明機能
* ライブ マイグレーションとパッチ適用

使ってみないとわからなさそうだけど、よりセキュアなVMってことかな。

### Cloud Functions for Firebase
Firebaseとの連携が強化されたCloud Functions
> Cloud Functions for Firebase を使用すると、Firebase 機能や HTTPS リクエストによってトリガーされたイベントに応じて、バックエンド コードを自動的に実行できます。コードは Google のクラウドに保存され、マネージド環境で実行されます。独自のサーバーを管理およびスケーリングする必要はありません。

<特徴>

* Firebase プラットフォームを統合
* メンテナンス不要
* ロジックの機密性と安全性を維持

### Knative
最新のサーバーレス ワークロードをビルド、デプロイ、管理できる Kubernetes ベースのプラットフォーム
> Knative は、元々 Google が 50 社を超える企業の協力を得て作成したもので、Kubernetes 上でサーバーレス アプリケーションをビルドし、実行するのに不可欠なコンポーネント セットを提供します。Knative には、ゼロへのスケーリング、自動スケーリング、クラスタ内ビルド、Kubernetes 上のクラウド ネイティブ アプリケーション用のイベント フレームワークなどの機能があります。Knative はオンプレミス、クラウド、あるいはサードパーティのデータセンターであるかにかかわらず、実際に成功している Kubernetes ベースのフレームワークが提供するベスト プラクティスを体系化します。デベロッパーにとって最も重要なことは、Knative を使えば、アプリケーションのビルド、デプロイ、管理の「退屈だが難しい」作業に気を取られることなく、コーディングに集中できることです。

<特徴>

* デベロッパー向けのソフトウェア
* 一般的な開発パターンをサポート
* 柔軟性と制御の両立
* お客様の条件に合わせてサーバーレス ワークロードを実行

### Velostrata
Google Cloud への迅速、柔軟、安全な移行。
> クラウドへの移行には多くの疑問が付きものです。Google Cloud の Velostrata にはその答えがあります。Velostrata では、オンプレミスの 1 つのアプリケーションを移行する場合から、複数のデータセンターやクラウドに及ぶまたがる 1,000 のアプリケーションを移行する場合に至るまで、さまざまな規模のシステムを Google Cloud へ移行する IT チームを支援します。

<特徴>

* 自動かつシームレスな適用
* プロビジョニングと規模の適正化
* オンプレミス ステートフル ロールバック
* カスタマイズ可能
* 移行前の検証とテスト
* 自動移行 Wave
* プログラム可能な移行
* WAN 経由の起動
* インテリジェント ストリーミング
* 多層キャッシングと最適化
* 復元性

任意のオーケストレーション ツールや自動化ツールを使用して移行フローを自動化ができるそう。