-

GCP とは何か

GCP とは何か

GCP は "Google Cloud Platform" の略で、Google 社が提供するクラウドサービスです。

2008年に登場したときは "Google App Engine" という名称だったので、 多くのエンジニアは「あの、世界最高の検索エンジンを作る Google の技術に触れてみたい」という思いだったと思います。 しかしながら、全体的にクセが強く、当時は IaaS (仮想マシン) もなく、GAE の大幅値上げでブーイングを受けたりして、 AWS に追いつくどころか AWS の背中は遠くなるばかり。

しかしながら、その後テコ入れが行われます。 2012年、Google Compute Engine (仮想マシン) を発表、 2013年、Google App Engine や Google Compute Engine などを統合する概念として "Google Cloud Platform" を発表。 さらに 2016年11月、東京データセンタが開設され、Google の本気度が感じられます。

2017年10月現在、機能面では AWS・Azure に一歩劣るものの精力的に機能追加を行なっており、 金額的には AWS・Azure と比べると明確に安いと言えるので、現時点では十分クラウドサービスの選択肢になりえると思います。

GCP 各サービスを 3行で

GCP の各サービスを 3行くらいで解説したいのですが、 まだほとんど書けていません。

●コンピューティング

Compute Engine
仮想マシン (IaaS)。Linux や Windows サーバを立ち上げることができる。 CPU のコア数やメモリを調整することも可能 (カスタムマシンタイプ)。 「プリエンプティブVM」という最大80%引きの VM もある。 代償は、常に使えるとは限らない、突然落ちるかもしれない、SLA なし、24 時間経過すると必ず終了。
App Engine
GCP における PaaS サービス。アプリをデプロイするだけで、インフラは GCP におまかせ。 環境構築が不要なので、オートスケールも簡単。 対応言語は Node.js、Java、Ruby、C#、Go、Python、PHP。 Standard Environment と Flexible Environment の2つがある。 Standard は純粋な PaaS で、ログイン不可、ローカルファイルアクセス不可等の制約はあるが、ミリ秒単位で起動可能。 Flexible は、Compute Engine 上で Docker イメージを動かしているもので、 ssh ログインが可能で、ミドルウェア等のインストールが可能であるが、分単位での起動。
Container Engine
Cloud Functions
サーバレスでのプログラム実行。Compute Engine や App Engine を用意する必要がなじ。 言語は Javascript のみ (Node.js)。 HTTP や、Cloud Stroage・Cloud Pub/Sub をトリガーとして起動させることができる。

●ストレージとデータベース

Cloud Storage
GCP が提供するストレージサービス。容量無制限。 自動的にバックアップを生成。管理コンソール・専用 SDK・専用 API にて操作する。 ログファイルやデータファイル保存置き場とするのが一般的。 Cloud Storage に配置して Web 上で公開できるため、画像ファイルや HTML・CSS 等の置き場所として使うこともできる。 その際、Cache-Control・Content-Type などのメタデータや、404 時に表示する HTML を設定可能。 Multi-Regional Storage・Regional Storage・Nearline Storage・Coldline Storage という 4種類のストレージクラスがあり、 先にあるものほど冗長性が高いが、価格が安い。 サーバ側で自動的に暗号化されるが、ユーザ側で行う暗号をさらに追加することもできる。
Cloud SQL
MySQL・PostgreSQL を簡単に立ち上げることができる。また、簡単に起動・終了したり、リプリケーションやリードレプリカ (読み取り専用の複製) を作成したり、定期的なバックアップや任意時点のデータ復旧も可能。Compute Engine を立ち上げてそこで DB を動かすことに比べると、インストール・設定・パッチ適用などの工数を削減できる。
Cloud Bigtable
Google が誇る高速・大規模な列指向データベースサービス。 Google の検索サービスや Gmail で使っている Bigtable (ビッグテーブル) を GCP から利用可能としたもの。 容量無制限。 データアクセスには SDK・HBase シェル・cbt コマンドラインツールを使う。 データは Key-Value 形式で保持。 SQL ではなく、GET・PUT・SCAN といった概念でアクセスする。 機能は極めて限定されており、キーでの検索・範囲検索はできるが、値での検索は一切できない。 トランザクションは、行単位のみ。
Cloud Spanner
これまで不可能とされていた大規模なデータ分散が可能なリレーショナルデータベース。 SQL でアクセス可能で、トランザクション処理も可能。 AWS にも Azure にも同類のサービスはないので、GCP の目玉機能の一つである。
Cloud Datastore
永続ディスク
データ移行

●ネットワーキング

Virtual Private Cloud (VPC)
Cloud Load Balancing
Cloud CDN
GCP の CDN サービス。主に画像等の静的なファイルを配置することで、 レスポンスタイム向上・サーバ負荷軽減が実現できる。

詳細は こちら

Cloud Interconnect
Cloud DNS
DNS サービス。ドメインの Aレコードや PTR レコードなどを設定する。

詳細は こちら

●ビッグデータ

BigQuery
データウェアハウス (DWH) エンジン。DWH とは「データ倉庫」の意味で、数千万件や数億万件の売上データをどーんと突っ込んで、 年齢層や地域層ごとの分析ができたりする。その場その場で切り口を変えても動作するよう、いちいちインデックスなどを張ったりしなくても、 それなりに高速に動くようになっている。 BigQuery は単なるエンジンなので、エンジニアであればブラウザ上のツールや bq コマンドで SQL を書いて分析すればよいし、 非エンジニア向けであれば Google Data Studuio・PowerBI・Qlik などの一般的な BI ツールを使う。 システム連携するなら Apache Spark、Hadoop から連携できる。
Cloud Dataflow
Cloud Dataproc
Cloud Datalab
Cloud Dataprep
Cloud Pub/Sub
Genomics
Google Data Studio
Google が提供する BI ツール。 溜め込んだデータを分析して、画面にグラフ等でわかりやすく表示するレポートツール。 BigQuery・Cloud SQL・MySQL 等に対応。

●モノのインターネット (IoT)

Cloud IoT Core

●機械学習

Cloud Machine Learning Engine
Cloud Jobs API
Cloud Natural Language API
Cloud Speech API
Cloud Translation API
Cloud Vision API
Cloud Video Intelligence API
●ID とセキュリティ
Cloud IAM
Cloud Identity-Aware Proxy
Cloud Data Loss Prevention API
セキュリティ キーの使用を必須にする
Cloud Key Management Service
Cloud Resource Manager
Cloud Security Scanner
Cloud Platform のセキュリティの概要
●管理ツール
Stackdriver の概要
Monitoring
Logging
Error Reporting
Trace
Debugger
Cloud Deployment Manager
Cloud Endpoints
Cloud Console
Cloud Shell
ブラウザ上で起動する管理用 OS。無料。 Compute Engine 等を立ち上げたりしなくても、gcloud や gsutils 等の管理用コマンドや、 Java・Python・PHP・Ruby 等の実行環境、MySQL クライアントを使うことができる。 例えば、インスタンスの起動・停止・インスタンスサイズ変更や、Cloud Storage・Cloud SQL のデータ確認や更新が行える。 実体としては Ubuntu なので、vi・emacs・awk・sh スクリプト等も自由自在。 5GB の永続ストレージがあり、cron も使えるので、定期バックアップなど簡単な処理であれば Cloud Shell 内で完結させることができる。
Cloud モバイルアプリ
Cloud Billing API
Cloud API

●デベロッパー ツール

Cloud SDK
Container Registry
Container Builder
Cloud Source Repositories
Cloud Tools for Android Studio
Cloud Tools for IntelliJ
Cloud Tools for Powershell
Cloud Tools for Visual Studio
Cloud Tools for Eclipse
Gradle App Engine Plugin
Maven App Engine Plugin
Cloud Test Lab

●その他

Cloud Launcher
ブラウザ数クリックで、インスタンスやサービスを立ち上げることができる。 WordPress・Redis のように、Compute Engine を立ち上げるタイプと、 SendGrid やトレンドマイクロの Deep Security のように、外部 API を使うタイプがある。 立ち上げ後は管理画面からインスタンスサイズやプラン等の変更を行える。 Compute Engine のタイプであれば、普通に ssh 等でログイン可能。 外部サービスの料金も GCP より一括して請求される。
memo: search API