GCPトレーニングを受けてきた

GCP

この記事ではGCPトレーニングのCP100AとCPB100を受講してきたことを書きます。両方受講すると2日間かかります。

この研修に参加しようと思ったのは、面白そうだったからです。2016年11月に[CPB100]。2017年2月に[CP100A]を受講しました。ご興味がある方は、以下のホームページからお申し込みください「株式会社トップゲート:日本で唯一のGCPのトレーニングをしている会社らしい。(全世界では18社)」

※ちょっと情報が古いので、GCP概要メモととらえて読んでいただけると幸いです。

スポンサーリンク

トレーニング内容

トレーニングの内容は、徐々に変わってしまうものなので、私が受けた時点2016年下旬〜2017年上旬の状態のものです。この受講した内容のうち、しっかり書き留められたことを書いていきます。

CP100Aの内容

  1. Introducing Google Cloud Platform
  2. Getting Started with Google Cloud Platform
  3. Google App Engine and Google Cloud Datastore
  4. Google Cloud Platform Storage Options
  5. Google Container Engine
  6. Google Compute Engine and Networking
  7. Big Data and Machine Learning ※CPB100と内容がかぶる

CPB100の内容

  1. GCPの概要とは? ※CP100Aと内容がかぶる
  2. Compute EngineとCloud Storageのデモとハンズオン ※CP100Aと内容がかぶる
  3. GCP Big Data productsとは?
  4. GCPのBig Dataについて
    1. BigQuery
    2. Cloud Pub/Sub
    3. Cloud Dataflow
    4. Cloud Dataproc
    5. Cloud Datalab
  5. MachineLearningAPI(機械学習)について
    1. Cloud Speech API
    2. Cloud Natural Language API
    3. Cloud Vision API
    4. Translation API
  6. NeuralNetworkの基礎
  7. Cloud TensorFlow and Cloud MLについて
  8. コミュニティ

GCPとは?

GCPは、英語の資料が多めです。徐々に日本語化されつつあります。GCPトレーニングを一言でいうとGoogleCloudPlatformの主力クラウドサービスの概要をひたすら聞き続けるというものです。サービスは日々変わっていきますが、GCPのサービスの一覧は次の画像です。


各プロダクトの紹介は、こちらのリンクを参照してください。開発者用ドキュメントは、こちらをクリックしてください。

私がごちゃごちゃ書くより、次のページに良い動画がありましたので、こちらを御覧ください。(https://training.topgate.co.jp/)より

Google Cloud Platformの紹介

また、次の記事も参考になります。

The Google Cloud Difference - Grow Your Business  |  Google Cloud
Let’s solve your toughest problems and grow your business. Learn about our multilayered security, expert support, flexible technology & accessible AI/ML.
Google Security Whitepaper  |  Documentation  |  Google Cloud
Data Centers – Google
Google Cloud Platform Blog
Product updates, customer stories, and tips and tricks on Google Cloud Platform
Google Cloud Platform Pricing Calculator  |  Google Cloud Platform  |  Google Cloud
Create your own Custom Price Quote for the products offered through Google Cloud Platform based on number, usage, and power of servers

※GCPの料金の見積もりができるサイト

GCPをはじめるためには?

必要なもの

  • クレジットカード
  • Googleアカウント
  • GCPへの利用登録

開発する際に気にすること

 GoogleCloudPlatformにアクセスする手段

プロジェクトの構成

  • GCPで開発をする場合は、複数のプロジェクトを作成するのが現在の主流
    • 本番
    • ステージング
    • 開発_チーム用
    • 開発_自分用

利用料の請求先

  • GCPプロジェクトメンバーの追加は、「IAMと管理>メンバー追加」から実行できる。※1:Googleアカウントでの追加を想定。※2:「Billing」という「役割」がGCPのプロジェクトを作ったり、請求書の宛先となるメンバー。

コミュニティ

GCPに関するコミュニティは、以下です。

gcpug

GoogleAppEngine

AppEngineの最大の特徴は、プログラムをデプロイするだけで、一般公開できる点です。

AppEngineは、「StandardEdition」と「FlexibleEdition」があります。StandardEditionを拡張したものがFlexibleEdition(但し、デプロイ時間、バージョンの切り替えが大変、サービスの立ち上げの時間等Standardより劣る部分もある)です。わたしは、Standardを使ったことすらないので、ここでは、「Standard Edition」特徴について箇条書きにします。

  • AppEngineは、PaaSサービス。
  • 毎日無料枠がある。(知名度のない個人がGoogleAppEngineにサービスを登録すると課金されることはほぼない。)
  • インスタンスが立ち上がるのが早い。Go言語では、40ms程。
  • スケーラビリティが高い。(日本GoogleをDos攻撃で潰すレベルの攻撃まで耐えられる)
  • デプロイしたあと、任意の古いバージョンに切り替えることが簡単
  • ローリングアップデートが自動でついている。(システムを止めることなく、新しいバージョンをたちあげることが可能)
  • 使用できる言語は、Java,Python、PHP、Goを使用できる
  • 会社のコーポレイトサイトをAppEngineで作成するのは、相性がよい。(例:トップゲート社のページ)
  • ローカル環境での開発は、SDKをダウンロードすると簡単に作れる
  • デメリット(いずれ改善される可能性もあり)
    • ローカルのファイルシステムがない。(書き込み、読み込みができない)
    • クラウドストレージを読むことは可能
    • 苦手な処理を見ぬいて、実装をすることが大切
  • Dailyの上限金額を設定できる。上限を超えると、アクセスしてもステータスコード502が返ってくる。
  • AppEngineは、必ず、Publicへの公開。専用線を使いたい場合は、ComputeEngineを使用する
  • 認証機能を付けたい場合は、アプリ内で解決すること。(Googleアカウントベースでのアクセス制御はアプリ外で可能)
  • Google App Engine ドキュメント字幕付きの動画
  • Google Cloud EndPointsを併用すると便利

Google Cloud DataStore 

Google Cloud DataStore 、次の分類で利用用途を決めてください。

  • ファイルを登録するなら「CloudStrage」(GoogleDriveとGoogleCloudStrageの違いは、こちらを参照)
  • RDBを使用したいなら「CloudSQL」※現時点では、ORACLEは利用不可
  • NoSQLを使用したい場合は通常「Cloud DataStore」(ポケモンGOはこれを使っている)
  • NoSQLを使用したい場合で、ポケモンGOよりレスポンスを必要とする場合は「CloudBigQuery」

Google Compute Engine

ComputeEngineは、IaaSサービスで、1からサーバを構築できます。ただしサーバを常時起動させると従量課金システムのGCPでは、お金がかなりかかってしまうため、CloudStrageと一緒に利用するのが一般的なようです。

Compute Engineの特徴

ComputeEngineの設定方法(超基本)

ここでは、ComputeEngine + CloudStrageの基本的な使い方について書きたいと思います。

gcp02

ひとまず、ComputeEngineというものとCloudStrageを使ってみるとういうものです。ComputeEngineとは何かというとGoolgeのインフラ上にVM(OSは任意に選べる)を立ち上げることです。日本語のマニュアルはこのリンクです。具体的にどのようにするかというと次の手順です。

GCPコンソールにアクセスし、ComputeEngineを選択

Google Cloud プラットフォーム
Google Cloud Platform では、Google と同じインフラストラクチャでアプリケーション、ウェブサイト、サービスを構築、導入、拡大することができます。

gcp03

gcp04

すでにテスト用に2つインスタンスがあります。1つは研修で作ったもので、停止してます。もう一つは、無料期間をいいことにWordPress用のインスタンスを立ち上げてみました。中身は空っぽ。独自ドメインを取得していないので、IP直接入力でアクセスができました。IPはマスキングします)

上段の「インスタンスの作成」を選択すると、新しいインスタンスを作成する画面に行きます。

ComputeEngineインスタンスの作成

「名前」「ゾーン」「ブートディスク」は、AWSと似てますね。ゾーンの名前がわかりにくいですが、最近、東京がアジアリージョンに東京ゾーンができました。

gcp05

「アクセス範囲」では必要なアクセス権限を付与します。デフォルトでは、CloudStrageに読み込み権限しか付与されていないので注意。

gcp06

「 管理、ディスク、ネットワーキング、SSH 認証鍵」という青色の文字をクリックすると、上級者向けの小難しい設定が出てきます。この中で、以前の記事で紹介した「プリエンプティブル VM」(通常価格より70%減額)される設定は、次の図です。また、絵としては記載していませんが、VM上のディスクは、デフォルトで暗号化される設定になっています。

gcp07

作成ボタンを押下すると、インスタンスを作成/起動されます。1分も待ちません。

作成ボタンの下にコマンドラインというリンクをクリックすると、GUI上で設定したものをコマンドラインから設定するためのコマンドを見れます。

gcp08

参考)作成したサーバへのSSHアクセス

ComputeEngineの初期画面の右側のSSHを押下すると、コマンドラインからインスタンスを操作するための画面が開けます。ここのコマンドは、勉強中ですが、通常のDOS窓やLinuxのTerminalと同じですので、HELPコマンドで色々なコマンドを実行することができます。

gcp09

Cloud Strageの設定

ComputeEngine(VM)と一緒に覚えておいたほうがいいと講師の方が熱く語ってくれたものが「CloudStrage」です。ComputeEngineは起動しているだけでお金が取られるので、処理が終わったらインスタンスの停止や削除をします。PCが停止された状態ですので、中のハードディスクのファイルを見ることができなくなります。そこで、GoogleDriveと同じ位置づけのようなCloudStrageを利用します。

CloudStrageはメニューから「Strage」を選択します。

gcp10

Cloud Strageの設定

Cloud Strageバケットという単位で管理されている。

gcp11

バケットの中身は、非公開のものと一般に公開するものとを選べます。

gcp12

クラウドストレージには、ローカルPCからのデータ転送、AmazonS3からのデータ転送、一般公開されたURLのTSVから転送することができます。

いつかは、自前のサービスをヒットさせて、テラやペタ単位のデータを扱ってみたいものですね。

Google Container Engine

コンテナについて理解を深める必要があります。世界で有名なコンテナとしては、Dockerがあるので、それで概要を掴んでください。ちなみに、GCP上のコンテナは、「Docker」ではなく「Borg」というコンテナを利用しています。私はまだDocker使ったことがないのですが、Dockerを管理したり連携・コラボレーションさせるために作られたものが、「Kubernetes」というものです。「Kubernetes」をGCP上で簡単に操作できるようにしたものが、GoogleContainerEngineです。

まず、Dockerを勉強して、ComputeEngine と AppEngineで管理しきれなくなってきたら勉強しようかなと思いました。ちなみに、Google Container Engineに関する概要のリンクチュートリアルリンクです。

[ComputeEngine][ContainerEngine][AppEngine]の比較は、次の図を参照してください。

GCPのネットワーク系の話

ネットワークについては、ちょっと知識が薄い部分なので、種類だけ提示します。

  • GCPは基本的にインターネット網を使用しますが、専用線を使いたい場合
    • Network>DirectPeering
      • Googleのネットワーク(日本だと大阪と東京)まで専用線があると、Googleの専用線を使用できる

ネットワーク以外にも説明がありましたが、概要のみの説明でしたので、公式ドキュメントをのリンクを配置します。

Big Query

まずはじめに「Big Query」について説明します。Big Queryは、大量データの分析にSQLとほぼ同等の構文を用いて検索するものです。Googleにしかできないサービスで、GCPのメイン機能です。サイトの構築はAWS上にしておいてデータ分析はGCPでやる人が多いそうです。私が、気になった特徴は次のもの。

  • Big Queryは、必ずフルスキャンする(Googleの分散処理技術を使えばこその力技)
  • 文字コードは、UTF-8のみ扱える。
  • BigQueryは、SQLで操作できる。
  • RDBより高速。
  • embulkでRDBをごっそりIMPORTできる。
  • AMAZON S3から クラウドストレージにIMPORTすることが可能
  • 公式ドキュメントを見ると便利な関数がある(JSONを扱える関数等)みんながよく使うSQL集を作ると良いかも
  • データ料金は、読み込んだデータ量、1Tbyteあたり、5円。(一定の読み込み料を超えた場合に発生、(SHELLで大量クエリーを投げるときは注意)※BigQueryは安いが、ストレージ代金はかかる。
  • 3ヵ月以上前のデータになると半額になる。
  • セブンイレブンの規模で月5万円程度らしい
  • ログ解析に向く。
  • 同じBigQueryに対して1日の削除、アップデーは48回まで。(一括IMPORTが基本的な使い方になる。RDBと違う部分。)
  • 1日の上限金額を設定できる。

Cloud Dataflow

Cloud Dataflowですが、BigQueryの処理をプログラムで書くことができるものです。プログラムは2種類の実行方法があります。

  • バッチモード
  • ストリームモード:リアルタイムに受け取ったリクエスト(Cloud Pub/Subがリスナーとなる)を処理する。

プログラムは、現在のところ、JavaとPythonで書くことができます。

MachineLearningAPI(機械学習)

MachineLearningAPIとは、Googleが作り上げたものをDeveloper/利用者に提示するものです。(機械学習の知識は必要ない)具体的な例を次に示します。概要の説明はここをクリック

紹介して頂いたのは、一部ですが、面白いです。料金は、1000リクエストまではただ!その後はお金がかかります。「natural language API」は、私が学生時代に研究していたテーマに近くてびっくりです。あの頃にGCPのBig Queryを使えたら、もっと進んだ研究ができていただろうな(笑)私が書いた論文は、こちらです。懐かしいですね。

Machine Learning APIの欠点は、 カスタマイズができないところです。自分の目的と合わない場合は、使用できません。もしも自分の目的に合わせたい場合は、「Cloud TensorFlow」で自作します。

Cloud TensorFlow and Cloud ML

ThensorFlowとは次の特徴があります。

  • Open-sourced in 2015
  • C++ and Python API
  • 分散処理をしやすい
  • OSを選ばず動作する
  • 簡単にNeuralNetworkの学習プロセスを記載できる

以下に参考になるURLを列挙します。

まとめ

GCPトレーニングを受講した際のメモをまとめました。GCPを使うには、そもそもの基礎力必要です。自分の弱点となる部分の補強が必要だと感じました。色々な技術を組み合わせて、利用していきたいです。

また、GCPトレーニングの内容やGCPが提供するサービス内容は日々変わっていきます。定期的に知識をリフレッシュしていきたいです。

コメント