お茶漬けびより

学んだことを整理する場所です。主に、C++, Unreal Engine 4 (UE4) を扱っていました。最近は、仕事方面で使っている言語やツールを紹介したいと思います。たまに趣味や雑記も。

Google Cloud OnBoard In Osaka に行ってきた。

f:id:pickles-ochazuke:20180427223322j:plain

cloudplatformonline.com

GCP の無料トレーニングがあったので、行ってきました。 内容は入門的な内容で GCP 触ったことがない人にはぴったりな内容でした。 ただ、サーバの負荷分散に使われる技術(ツール)とかの用語がびゃびゃっと出てきて理解できないところが多々ありました。

内容は、

  • GCP の概要
  • 事例紹介
  • GCP のサービス概要
  • コンピューティング
  • ストレージとデータベース
  • 機械学習
  • 今後の学習方法
    といった内容でした。

ここでは、ストレージとデータベース、機械学習、今後の学習方法の紹介はしません。
本人が理解しきれていないからです……

GCP の概要

まとめると

  • Google は完全なサーバ管理不要な環境を作ろうとしている
  • GCP は、Google が長年培ってきたインフラを提供している
  • GCP のインフラは Google が提供しているサービス(Gmail や Gmaps)と同じ環境で動いているので、セキュリティも同じ。
  • お金の計算は、自動で最安になるようになっている。
  • GCP のネットワークは、Google のプライベートネットワークと同じなので高速。

事例紹介

  • Abema TV は、GKE(Google Container Engine), GCLB(GC Load Balancing) を使っている
  • Spotify は、独自のインフラから GCP に移行。
  • airbnb は Cloud Translation API を活用している。
    などなど

GCP のサービス概要

GCP には、大量のサービスがありますが、カテゴリに分けると6個になります。

  • マネジメント - 権限やログ、リソースなどの管理ツール
  • コンピューティング - インフラの提供。
  • ネットワーキング - 負荷分散や VPC などを提供
  • ストレージとデータベース - MySQL や NoSQL、ストレージの提供
  • ビッグデータ - BigQuery, データ解析のサービスを提供
  • 機械学習 - TensorFlow, 学習済みモデルの提供

GCP を利用するときは、3つのアクセス方法があります。

  • Cloud Console - Web ブラウザ上で GCP にアクセスできる。人用
  • Cloud SDK / Cloud Shell - PC に Cloud SDK を入れて使う。機械的作業用
  • Cloud API - REST 形式の API インタフェース。プログラム用

ちなみにCloud Shell は、毎回インスタンスを立てているので、前回入れたものは消えるそうです。あと 5 GB まで使えるようです。

基本用語

まずは、クラウドサービスで基本となる用語だと思います。

  • リージョン
    特定の地理的な位置。日本だと大阪や東京にリージョンがあります。
  • ゾーン
    リージョンの中にさらに区分けしたロケーション。リージョンによって数は違いますが、大阪と東京にはそれぞれ3つのゾーンがあるようです。
    GCP はリージョンを超えてもプライベートネットワークを維持出来るそうです。
    リージョン間は海底ケーブルで繋がっているため、回線は速いそうです。
    以下は、GCP で使われる用語です。
  • プロジェクト
    GCP のサービス(Compute Engine, BigQueryなど)やリソース(お金に関係する部分)の作成、管理(有効化や停止、削除)を行う。
    まとめると、プロジェクトの中に、リージョンがあり、その中にゾーンがあるイメージです。

また、リソースという用語の意味が理解しきれていないですが、たぶんお金に影響する部分のことだと思います。例えば、Compute Engine だと CPU, メモリ, ディスクであり、BigQuery だと ストレージや長期保存、クエリ(分析)のことだと思います。

サービスは基本的にゾーンごとに作成されますが、モノによっては、プロジェクト単位で作成されるサービスもあります(Cloud Load Balancing)。

管理

Cloud IAM というサービスによって、誰が、どんな役割を、どのサービスに持つかを設定できます。
このサービスは無料で使うことが出来ます。

cloud.google.com

コンピューティング

主なサービスは以下の4つです。

GCE (Google Compute Engine)

cloud.google.com

以下、特徴です。

  • VM 上で動く
  • 自由度が高い(普段のサーバと変わらない)
  • 低コスト、自動で継続利用割引が適用されます。
  • メンテナンスでも自動で VM が移動し、再起動が不要(ライブマイグレーション)。
  • ネットワーキング機能(Cloud Virtual Network: CVN)の結合

ストレージの SSD は二種類あり、ローカル SSD の方が速いですが可用性は下がります。もちろん普通の HDD もあります。
Cloud Virtual Network というサービスのおかげで、リージョンを跨いだ Virtual Private Cloud ネットワークが構築できます。内部 IP アドレスや、ファイアウォールを自由に設定出来るようです。

GAE (Google App Engine)

cloud.google.com

  • インフラ部分が完全に抽象化
  • アプリの使用状況に応じて課金
  • バージョンが異なるアプリも簡単に共用できる

お金は、2 インスタンスからかかります。インスタンスの数は自動で変化するので、リクエストが全くないときは、インスタンスの数が 0 になります(お金がかからない)。サーバ管理は一切不要です。

GKE (Google Kubernetes Engine)

cloud.google.com

  • コンテナオーケストレーションシステム
  • GCE や CVN と連動して動作
  • GKE 自体にお金はかからない(GCE や CVN にかかる)
  • 管理する環境を提供(アプリのデプロイ、更新、管理が簡単。自動スケーリング、アップデート)

GCE をコンテナで動かし、管理するサービスです。Docker や Kubernetes を使って、コンテナ管理することが出来ます。

Google Cloud Function (GCF) Beta

cloud.google.com

  • サーバレスアプリケーション
  • コードが実行される時間に対してのみ、最も近い 100 ミリ秒単位で課金
  • 複数のクラウドサービスを関連付けて拡張
  • Firebase のようなサービスと統合できる

まとめ

コンピューティングの 4 つのサービスを紹介しました。それぞれ特徴が異なり、どういうときにどれを使ったらいいか迷ってしまいますが、発表者の方は以下のように分けるといいと話していました。

  • GCE -> 現在、物理や仮想上で動いている既存のアプリの移動。
  • GAE -> 新しく Web アプリサービスを作る場合におすすめ。
  • GKE -> 社内のセキュリティ上 GAE が難しい場合、こちらを使う。

個人的には、Web アプリサービスを作りたい、サーバ管理したいような学生が使うと良いのではないかと思いました。登録一年は、$300 無料で使えるし、ちょっと試すぐらいならお金はかかりません。チュートリアルも丁寧で、何も知らなくても言われたとおりにするだけで動かすことが出来ます(もちろん理解した方がいいですが)。

ここでは、ストレージとデータベース、機械学習を紹介しませんでしたが、これらを使うことで作りたいサービスに必要な技術の壁をなくすことができます。ぜひ、GCP を使って遊んでみてはいかがでしょうか。

cloud.google.com