技術周りのあれこれ

主に自分用のメモです。技術的なことや個人的にやってみたことを書いてます。

GCPの各サービスについて ※2016/12/17時点

先日GoogleCloudPlatform(以降GCP)トレーニングツアーに参加してきました。
トップゲートの小林明大さんがGCPの機能やサービスについて解説してくださったので、
簡単にまとめていきます。

GCPを操作するユーザについて


以下の4つがあり、GoogleはOwnerを最低2人に付与することを推奨しているらしい。
* Owner
* Editor
* Viewer
* Billing adminisitrator

API Manager


各サービスのAPIを許可するかどうかを設定できます。
デフォルトで有効になっているものもありますが、無効になっているものもあるので 必要なときは有効にしてあげましょう。

Google APIs Explorer


https://developers.google.com/apis-explorer/#p/

ブラウザでAPIを選択し、値を入れたら使えるというAPI操作をブラウザで設定できます。

Google Cloud Shell


一番上のバーの右側のアイコンから使用できます。
例えば、GoogleComputeEngineを使用する際に、SSHで接続しなくてもその画面でコマンドを実行できます。

AppEngine


  • Standard Environment
    Googleが指定した言語で、Googleが用意したコンテナの中で実行します。
    負荷が上がればオートスケーリングしてくれます。
    作成したバージョンごとにリクエストの割合に応じてリリースすることもできます。
    (例: リクエストの30%は開発版、70%は最新安定版のような使い方が可能)

  • Flexible Environment
    言語の制約がありません
    ミドルウェアの操作がしたい時に使用します。
    こちらもコンテナで動いてます。
    1VM 1コンテナで動いているため、スケールアウトの動作はStandard Enviaronmentよりは遅いです。

Endpoints


APIを自動生成してくれるツールです。
APIを構築する時、トラブル発生時の問題の切り分けも分かりやすいです。

Datastore


AppEngineのDBを外出ししたサービスです。
NoSQLでKey-Value型です。

Strage


ObjectStrageです。 AWSのS3と同じです。
CloudStorageFuseというツールを使ってマウントも可能です。
バケットはリージョン毎でもマルチリージョンでも利用可能です。
Cloud Storage Transfer Serviceを使ってAWSのS3から転送することも可能です。
一度バケットを作成してしまうとプランを変更できないので、プランを変更したいときに既存のデータを別のプランのバケットへ転送する際にも使えます。
オフライン メディアのインポートとエクスポートもありますが、利用できるサービスプロバイダがかなり限られています。

Bigtable


NoSQLです。
get, putはめちゃ早いです。
HBaseとの互換性があります。
HadoopでHbase使ってたら移行しやすいらしい。
GmailとかGoogleAnalyticsの裏側で使われてるそうです。

SQL


MySQLGCPで使うサービスです。

Container Engine


KubernetesっていうDockerコンテナのオーケストレーションツールを使ってコンテナを管理する仕組みになってます。
Borgっていうクラスタマネージャから作ったそうです。

Compute Engine


メンテナンス時はGoogleの人が勝手に他のサーバに移動してくれて、ユーザは何も気せず利用できます。 勝手に停止していた場合は、自動的に起動してくれます。 分単位の課金で1度起動すると最低10分は費用が発生します。

継続利用割引というものがあり、 同じマシンタイプを使い続けると最大30%お得になります。

料金周りについてはこちら
https://cloud.google.com/compute/pricing

インスタンス作成時に可用性ポリシーからプリエンプティブを選択すると、 24時間以内に必ずシャットダウンする仕様のインスタンスが作成されます。 その代わりかなり安く利用できます。

Cloud Interconnect


GCPとデータセンター等のオンプレサーバーとを接続する時に使用します。

Cloud CDN


Googleのエッジポイントを使用して、HTTPのコンテンツをキャッシュすることで、高速にコンテンツを配信できるよになります。

Stackdriver


監視ツールです。
AWSの監視もできます。
Agentを入れれば、詳細を見ることもできます。
Debuggerを使ってクラウド上でデバッグもできます。

Deployment Manager


yamlで書く構成管理ツールです。
AWSでいうCloudFormationです。

Source Repositories


非公開のGitホスティングサービスです。
Stackdriverと一緒に使ってソースをデバッグすることもできます。

Funtions


javascriptで書くサーバレスなサービスです。
AWSでいうLambdaと同じです。

BigQuery


膨大なデータに対してクエリを投げて短時間でレスポンスが返ってくるというビッグデータ解析サービスです。
AWSのRedshiftに近いけど、運用作業がほとんど必要ないのが特徴です。

Pub/Sub


非同期メッセージングサービス
アプリケーション間でメッセージ送受信を行います。

Dataflow


プログラミングモデルのマネージドサービス
JavaPythonで書けます。
必要なインスタンスは勝手にスケールしてくれるので、運用が楽ちんです。
使い終わったらインスタンスをシャットダウンしてくれるので無駄な費用がかかりません。

Dataproc


Hadoopクラスタをプロビジョニングするサービス。
Hadoopのオートスケールはしてくれませんので注意が必要です。
使い終わったら自分でインスタンスをシャットダウンしないといけません。

Datalab


データを分析してグラフ化したりするツールです。
Jupyterという、プログラムを実行して結果を記録しながらデータの分析作業を行うツールを使って作られたサービスです。

Machine Learning Platorm


Tensorflowを使って得たアルゴリズムを使ったサービスです。

★おまけ

Googleが提供してるAPIの中には、以下のようなMachineLearningから作られたAPIがあります。

  1. Vision API
    画像判定してくれるAPIです。

  2. Speech API
    しゃべったデータを文字に変換してくれるAPIです。

  3. Tranlate API
    翻訳サービスのAPIです。

以上です。

Googleのサービスは世界中のたくさんの人が使っていて、各サービスの裏側で動いてるものをGCPとして使えるので信頼性はかなり高いと思います。 今のところAWSの方が知名度が高く、導入事例も多い気がしますが、GCPで構築できるならコスト次第ではありだと思いました。