Coursera の GCP Specialization を毎週まとめていく (week1: GCP fundamental: Core Infrastructure)

ざっくり

  • 今の会社ではGCPをばりばり使っているので、GCP Specializationを受けてみる
  • GCP Specializationは全部で 4 つのコースで構成されている
  • 始めは GCP fundamental: Core Infrastructure
  • GCP とはなんぞや的なところから初めて、 App の構築や Debug、 Performance 監視とかを実際にやってみる
  • メジャーな GCP サービスの基本を教えてくれる
  • コースは動画とクイズ、実際に GCP コンソールを触るパートがある
  • 地味にすごいと思ったのは、実際に GCP を触るパートでは Coursera 用のテンポラリのプロジェクトを毎回発行する
  • 実感制限でプロジェクトが使えなくなるようになっていて、けっこうがっつり GCP 側でも開発が入ってそう
  • ダイアン・グリーンの手動で GCP の Coursera が整備されたらしい(ありがとうダイアン)
  • ML Specialization が終わっていないけどそれは気にしない

Google Cloud Platform Fundamentals: Core Infrastructure

  • 始めのコースは Core Infrastructure

Introducing Google Cloud Platform

  • GCP の超導入
  • GCP では、Computing, Storage, Big Data, Machine Learning の 4 つのサービスをがある
  • このコースでは、この中の Computing, Storage に加えて Networking のサービスを紹介する f:id:solt0723:20181215190929p:plain
  • 米国標準技術研究所なるところが定義した Cloud Computing の定義がこの画像の5つ
  • Cloud Computing が普及した背景には colocation によって、データセンターの効率利用の流れがあった
  • また、仮想化によって、よりハードウェアを効率的に利用できるようになったのもあった
  • ただ、Google は仮想化に限界を感じていたらしく、コンテナを利用することに
ここで出てきた 「いずれは、企業は業態や規模にかかわらず、テクノロジー 特にソフトウェア)で差別化を図れるようになる」 というのが印象に残った。グーグルっぽいなー。
  • IaaS や PaaS は仮想化によって生まれた
  • データセンター形式でストレージやネットワークを提供するのが IaaS
  • アプリケーションロジックに対してインフラを提供するのが PaaS
  • GCPの構成として、最も粒度が大きいものが デプロイエリアの Zone
  • GCPではベンダーロックを避けるために、オープンショースのミドルウェアを積極的に利用している

Module introduction

  • GCP では IM と IAM を使って、アカウントの権限管理ができる
  • GCP 管理には4つの interface が用意されている f:id:solt0723:20181222234503p:plain
  • このコースでは console と CLI を主に使う

The Google Cloud Platform resource hierarchy

  • GCP のリソースやプロジェクトの階層構造はこんな感じになっている
    f:id:solt0723:20181227125952p:plain
    GCP のリソース階層構造
  • プロジェクト命名についての解説もある
    • Project ID はグローバルにユニーク
    • Project name は重複可能
    • Project number はグローバルにユニーク
  • Project ID は読みやすく識別しやすいものが良い
  • フォルダーはプロジェクトに所属していて、 n:n の関係で紐づく

Interacting with Google Cloud Platform

  • GCP では4つのコンソールの操の方法が用意されている
    f:id:solt0723:20181227194226p:plain
    4つのコンソールの操作方法
  • この商では課題として、実際に GCP 環境に LAMP アプリをデプロイしてみる
  • Coursera で Cloud Market Place という実際に GCP を動かすことができて、そのサイト内で採点までしてくれるページがある
    f:id:solt0723:20181227225404p:plain
    こんな感じのサイトが用意されている
  • GCP を触れる時間には制限があって、その時間内に課題を終わらせる必要がある

Virtual Private Cloud (VPC) Network

  • GCP でのアプリケーション開発の第一歩として、VPNをはる
  • VPN は project に所属している
  • GCP が提供する VM では OS やら CPU のスペックやらを選ぶことができる
  • VM のconfig はスナップショットにとってバックアップ可能
  • 仮想CPUと仮想メモリの数には上限がある

Important VPC capabilities

  • GCPVPC では firewall の管理を気にする必要がない
  • アクセスが増加すると VM は自動でオートスケールする
  • アクセウの振り分けや、エンドポイントの一括管理はロードバランスがしてくれる
  • NDS についてもこの章で紹介されている
  • Google が無料で提供しているサービスで最も有名なものが 8.8.8.8 のドメインらしい(知らなかった)
  • Cloud DNS では DNS を利用できる
  • Cloud CSN はロードバランサーHTTPSを設定したら CDN にチェックするだけで利用できる
  • GCPVPN は interconnect のオプションがあって、オンプレの環境と接続できる

実際に触ってみるパート

  • GCP console の実践パターン
  • GCP console と command line を使って VM をいくつか作ってみる

Google Compute Engine and Networking (クイズ)

Cloud Storage

  • GCS はファイルシステムではない
    • 全てのデータをオブジェクトとして扱うバイナリラージオブジェクトストレージ
    • ファイルにはURLが割り当てられ、 GCS 上でファイルを編集することはできない
    • デフォルトで HTTPS の暗号化がされる
  • オンラインとオフラインでデータをインポートできる
  • バケット名はグローバルにユニーク
  • コンテンツへの権限管理では、 IAM に対して Access Control Lists を設定する
  • GCS のファイルは immutable で、ファイル自体を編集するのではなく、バージョン管理をしている
  • オブジェクトに対しては LLT を設定できる

Cloud Storage interactions

  • ストレージクラスでは、オブジェクトにアクセスする頻度やSLAからクラスを選択できる
  • f:id:solt0723:20181230110953p:plain
    クラス毎の性能
  • nearline クラスでは、頻度の他に、データにアクセスする毎にデータ容量に応じて費用が発生する

#### Bigtable - Bigtable は NoSQL データベース - HBase(Hadoop のNoSQL データベース)と同じ API が用意されている - Bigtable ではデータアクセスの方法ががいくつか用意されている - application api - HBase rest server か Hbase クライアントを使った Java サーバーからアクセスできる

Cloud SQL and Cloud Spanner

  • Cloud SQL はマネージドな RDB
  • MySQLPostgreSQL が使える
  • Vertical に read/write を拡張されて、 Horizontal に read が拡張される
  • Cloud SQL は App Engin, GCE, 外部サービスから接続できる
  • Cloud Spanner は Horizontally scalable な RDBMS

#### Cloud datastore - フルマネージド NoSQL データベース - 自動的にレプリケーションとシューティングをしてくれる - レプリケーションはマスタのデータをスレイブのデータベースにコピーする - シャーディングはデータを分割して複数のサーバに保存する

#### Comparing Storage Options -

f:id:solt0723:20181230190834p:plain
GCPのストレージサービスの比較表
- 各ストレージのユースケースが紹介されている - Datastore は semi-structured な App Engin のサービスで使うのにもいいらしい - BIgtableスループットが多い AdTech みたいなイベントの裏側で動かすのにいい - Storage は画像とかメディアファイルなどのバイナリデータを置くのに適している

GCP Fundamentals: Getting Started with Cloud Storage and Cloud SQL

  • GCP の実習章
  • GCP のコンソールを触りながらCompute Engine と Cloud SQW、Cloud Storage を動かす

Google Cloud Platform Storage Options (クイズ)

  • 一回間違えたので調べた内容をメモしておく
  • Cloud Storage のバージョニングはデフォルトではオフになっている

Module Introduction

  • ここから container と Kubernates engine の説明に入っていくらしい
  • Kubernatees Engin を使って、 Continer のデプロイを管理する方法を学んでいく

What are Containers?

  • Container は Hypervisor と同じく、VM のひとつ
  • f:id:solt0723:20190101195316p:plain
    Conainer と Hypervisor の違いはこんな感じ
  • Container を使うと、1つのOSを動かすのに1つの VM を動かす必要がないので、リソースの節約になる
  • Kubernates engin は docker container の runtime を利用している
  • f:id:solt0723:20190101201147p:plain
    container を使うメリット

Kubernetes

  • container をスケーラブルな形で管理するためのオーケストレーションシステムが Kubernetes
  • multi-cloud で使いやすいらしい
  • Kubernetes では一緒にデプロイするコンテナを pod として管理する
  • デプロイをした後には、rolling して pod の中のコンテナを入れ替をえる
  • Kubernetes がデプロイスケジュールを管理している VM の node を cluster と読んでいる
  • node は zone をまたいで管理できる

Introduction to Kubernetes Engine

  • Kubernates でデプロイするには doker container image が必要
  • Cloud container builder では、 Cloud storage に 置いている code から docker images を置いておける
  • Container registry では docker image を Cloud storage に置いておける

実際に触ってみるパート

Module introduction; introduction to App Engine

  • ここから App Engine の説明が始まる
  • App Engine ではインフラのことを気にしなくてもいい
  • テンポラリにコードを動かして、コードのメンテだけすれば大丈夫
  • アクセスに応じて自動でスケールしてくれる
  • standard と flexible の2つの環境がある

Google App Engine Standard Environment

  • standard environment について
  • 割と簡単につかえて、dailyでfree枠がある
  • 料金も使った分だけ
  • runtime にはライブラリの読み込みとかも含む
  • SDKを使えば、ローカルで開発した後にデプロイできる
  • GO, PHP, Python, Javaを使える
  • 別の言語を使いたければ、flexible enbironmentにする

Google App Engine Flexible Environment

  • flexible environment について
  • flexible では App Engine 側で VM を用意してくれる
  • そのお陰で、SSH 接続が使えたりする
    f:id:solt0723:20190101215414p:plain
    違いはこんな感じ

Google Cloud Endpoints and Apigee Edge

  • Cloud Endpoint では API のアクセス管理とかができる

実際に触ってみるパート

  • App Enginde でアプリを動かして、その後に App Engine を廃棄する

Development in the cloud

  • ここから Cloud function の説明が始まるらしい
  • Cloud functon では JavaScript のコードを特定のトリガーで実行できる

Deployment: Infrastructure as code

  • GCP にはデプロイを管理する Deployment Manager がある
  • Infrastructure as a Code の思想で設計されているもの
  • YAMLPython のコードでデプロイを管理できる

Monitoring

  • Stackdriver は GCP のモニタリングとロギングのツール
  • Stackdriver で貯めたログは BigQuery とか GCP の他のサービスにエクスポートできる

実際に触ってみるパート

  • Development Manager を作って編集してみる
  • Stackdriver を使って VMアクセスログを見る

Introduction to Big Data and Machine Learning

  • ここから、BigData と機械学習に関連するサービスに入っていく
  • GCP サービスでは big data 関連のサービスをサーバーレスに使うことができる
  • Google もよるサーバーレスの定義 "You don`t have to worry about provisioning computing instance to run your job"
  • Google のbig data 関連のサービスにはこんな感じのものがある
    f:id:solt0723:20190103203710p:plain
    big data 関連のサービスはフルマネージド
    (())

Google Cloud Big Data Platform

  • Cloud Dataproc は GCPO 上で Hadoop の Spark/Hive/Pig を使うためのサービス
  • 90 sec で動作するようになる
  • 手動でスケールできて、モニタリングには Stackdriver が使える
  • 分単位の課金なので使った分だけ費用が発生して、preemitible instance を利用すると80%安くなる
  • Spark か Spark SQL でデータを分析できる

#### Cloud Dataflow - pipeline の中でデータを変換したり同期したりできる(?)

BigQuery

  • クエリで大量のデータを高速に解析できるよ
  • 月ごとに無料枠がある

Cloud Pub/Sub and Cloud Datalab

  • 非同期にメッセージを送信できるサービス

Google Cloud Machine Learning Platform

  • いろいろな用途で機械学習が使えますよという説明
  • 主な用途として、翻訳やレコメンド、画像解析、回帰や分類、異常検知がある

Machine Learning APIs

  • 機械学習で用意されているAPiの解説
  • Cloud Vision API では画像のラベル付ができる
  • Cloud Speech API ではリアルタイム翻訳や音声コントロールができる
  • 80以上の言語に対応しているらしい
  • Natural Language API ではテキストの構造を解析したり、文中に関連する記事やブログを探したりができる
  • 英語やスペイン語、日本語などに対応している

#### 実際に触っていみるパート