[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... |

# サービスをもう少し深く見てみる
## デベロッパーツール
### Cloud Deployment Manager
シンプルなテンプレートを使ってクラウド リソースを構築、管理
> Google Cloud Deployment Manager を使うことにより、アプリケーションに必要なすべてのリソースを yaml による宣言形式で簡単に指定できます。また、Python テンプレートや Jinja2 テンプレートを使って、構成内容をパラメータ化することで、負荷分散や自動スケーリング インスタンス グループなど、共通のデプロイ パラダイムを何度も使用できます。構成内容をコードとして扱うことで、再現可能なデプロイを実現します。

<特徴>
* 並行的なデプロイメント
* テンプレート
* 更新
* 入出力パラメータ
* スキーマ ファイル
* 参照
* プレビューモード
* コンソール UI

### Cloud Source Repositories
チームが一元的にコードを保存、管理、トラックできる場所
> 多機能でスケーラブルなプライベート Git リポジトリで共同作業が簡単になり、コードの管理も安全に行えます。Cloud Build、App Engine、Stackdriver、Cloud Pub/Sub などの他の GCP ツールに接続すれば Git ワークフローを拡張することもできます。所有しているすべてのリポジトリで、インデックス登録されたコードをすばやく、効果的に検索できるため、時間の節約になります。

<特徴>
* ソースブラウザ
* Git オペレーションの実行
* 自動同期
* 定評のある信頼性
GitHubやBitbucket上のコードと同期でき、リアルタイムでコードの反映を行うことができる。

### Cloud Code for IntelliJ（α版）
IntelliJ 内で、アプリケーションを開発、デプロイ、デバッグ
> Cloud Code for IntelliJ を使用すると、IntelliJ を簡単に拡張して、迅速にビルドとデプロイを行い、デバッグ サイクルを繰り返せます。クラウドアプリ用の Java バックエンドを、App Engine スタンダード環境かフレキシブル環境にデプロイしてください。あるいは、Cloud Code for IntelliJ を使用して、完全に統合された Kubernetes 開発、デプロイ、デバッグ環境を、IDE 内に構築することもできます。

<特徴>
* ローカルで実行して本番環境にデプロイ
* ソース プラグイン
* Stackdriver Debugger
* マルチクラウド デプロイ
* 個人と企業

### Cloud Tools for PowerShell
Windows PowerShell からクラウドを完全管理
> Cloud Tools for PowerShell は、Cloud Platform 上で実行されている Windows ワークロードのスクリプト化、自動化、管理を可能にするスクリプティング環境です。この強力な環境では、使い慣れている Windows ツールを使ってクラウド ワークフローをカスタマイズできます。

PowerShellを使い慣れている人には良さそう。

<特徴>
* Google Cloud Storage を管理
* Cloud SDK による定期的な更新
* Compute Engine のデプロイ
* Cloud Tools for PowerShell に協力

### Cloud Tools for Visual Studio(β版)
Visual Studio アプリケーションを Google Cloud Platform にデプロイできます。
> Cloud Tools for Visual Studio は、Windows や .NET のアプリケーションをビルドして、お好きな IDE から Google Cloud Platform に直接デプロイできる強力な環境です。Google API を活用し、クラウド リソースを管理して、Compute Engine 上で実行されている高性能の Windows VM に .NET アプリケーションをデプロイできます。また、アプリケーションをローカルで実行してテストし、Visual Studio から直接クラウドに、シームレスにデプロイすることも可能です。

いろんなIntelliJもそうですが、エディタを選択できるのはいいですね。

<特徴>
* 今すぐ始める
* Compute Engine にデプロイ
* Cloud Explorer
* Windows ネイティブ
* Cloud API ライブラリを NuGet で検索
* Visual Studio 2015 と Visual Studio 2017 のサポート

### Firebase Test Lab
Google データセンターでホストされているデバイス上でアプリをテストします。
> Firebase Test Lab は、アプリのテストを行うためのクラウドベースのインフラストラクチャです。1 回のオペレーションで、さまざまなデバイス、さまざまなデバイス構成で Android アプリや iOS アプリをテストし、Firebase コンソールで結果（ログ、動画、スクリーンショットなど）を確認できます。

<機能>
* Android アプリと iOS アプリのテスト
* 実際のデバイスでの実行
* ワークフローの統合

### Cloud Code
Kubernetes アプリケーションの作成、デバッグ、デプロイに必要なものがすべて揃っています。
> Cloud Code には、クラウド ネイティブ アプリケーションをすばやく簡単に作成、デプロイ、デバッグできるツールが備わっています。Visual Studio Code や IntelliJ などの IDE で使用できる拡張機能があるため、コードを迅速に繰り返し実行し、デバッグした後、Kubernetes にデプロイできます。

この中に、Cloud Code for VS Code（ベータ版）とCloud Code for IntelliJ（アルファ版）がある感じ。

### Cloud Build
継続的なビルド、テスト、デプロイを実現します。
> Cloud Build では、すべての言語でソフトウェアを迅速にビルドでき、複数の環境（VM、サーバーレス、Kubernetes、Firebase など）でのビルド、テスト、デプロイ用にカスタム ワークフローの定義を完全に制御できます。

<特徴>
* ネイティブ Docker サポート
* 十分な無料枠
* 詳細な分析情報
* 脆弱性の特定
* ローカルまたはクラウドでのビルド
* カスタム ワーカー（アルファ版）

開発もテストもデプロイも全部GCPを内で完結しちゃう。

### Cloud Scheduler
フルマネージド cron ジョブサービス
> Cloud Scheduler は、エンタープライズ クラスのフルマネージド cron ジョブ スケジューラです。バッチ処理、ビッグデータ ジョブ、クラウド インフラストラクチャ オペレーションなど、実質的にほぼすべてのジョブをスケジューリングできます。障害時の再試行といった作業をすべて自動化するため、手動作業や人的な介入を軽減できます。さらに、Cloud Scheduler は一元化されたインターフェースとして動作するため、自動化タスクをすべて一元管理できます。

<特徴>
* フルマネージド
* 信頼性の高い配信
* 快適な管理環境
* さまざまなサポート対象ターゲット
* 再試行ポリシーの構成が可能
* 強力なロギング機能
* Unix cron 形式のサポート
ほぼすべてのジョブをスケジューリングできるそうなので、全体のバッチができそう。
また、障害時には再実行もしてくれるそう。便利かも。

### Cloud Tasks
非同期タスク実行
> Cloud Tasks は、大量の分散タスクの実行、ディスパッチ、配布を管理できるフルマネージド サービスです。Cloud Tasks を使用すると、ユーザー リクエストやサービス間リクエストの外部で作業を非同期で実行できます。

<機能>
* スケーラブルなフルマネージド ソリューション
* HTTP ターゲット
* レートの制御と再試行の制御
* タスクの重複排除
* ダッシュボードとコマンドライン インターフェース
* 将来のスケジューリング
* 確実な配信
* 一般的な言語

### Cloud Tools for Eclipse
Eclipse プロジェクトを GCP にデプロイします。

### Gradle App Engine Plugin
App Engine プロジェクトで Gradle を使用します。
https://github.com/GoogleCloudPlatform/app-gradle-plugin

### Maven App Engine Plugin
App Engine プロジェクトで Maven を使用します。
https://github.com/GoogleCloudPlatform/app-maven-plugin

### Firebase Crashlytics
安定性の問題に優先順位を付け、問題を速やかに修正します。

### Stackdriver Incident Response ＆ Management(α版)
サービス停止の回数を低減し、期間を短縮し、小規模に抑えます
> Stackdriver Incident Response and Management（IRM）は、実績のある対応プロセスとデータ駆動型のインテリジェンスを組み込んだエンドツーエンドのインシデントのライフサイクル管理を実現し、緩和までの時間の中央値を短縮します。幅広く深い、新鮮な Stackdriver のデータを活用して、インシデントの状況に応じて情報を自動的に関連付け、分析情報を提供し、調査プロセスを高速化できます。

<特徴>
* 状況認識
* SRE の役割
* 情報共有
* Slackとの統合
* インシデントとプリセットのエスカレート
* 柔軟なAPI

読んだだけだとイマイチ具体的に何ができるのかがわからないけど、SREの役割を果たすというのは気になるところ。

### Tekton
Kubernetes固有のCI / CDビルディングブロック。
> Tektonは、継続的インテグレーションと配信（CI / CD）システムを作成するための強力かつ柔軟なKubernetesネイティブのオープンソースフレームワークです。基盤となる実装の詳細を抽象化することにより、複数のクラウドプロバイダーまたはオンプレミスシステムにわたって構築、テスト、および展開できます。

<特徴>
* アーティファクト管理
* 展開パイプライン
* 結果