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 のサービスを紹介する
- 米国標準技術研究所なるところが定義した Cloud Computing の定義がこの画像の5つ
- Cloud Computing が普及した背景には colocation によって、データセンターの効率利用の流れがあった
- また、仮想化によって、よりハードウェアを効率的に利用できるようになったのもあった
- ただ、Google は仮想化に限界を感じていたらしく、コンテナを利用することに
ここで出てきた 「いずれは、企業は業態や規模にかかわらず、テクノロジー 特にソフトウェア)で差別化を図れるようになる」 というのが印象に残った。グーグルっぽいなー。
- IaaS や PaaS は仮想化によって生まれた
- データセンター形式でストレージやネットワークを提供するのが IaaS
- アプリケーションロジックに対してインフラを提供するのが PaaS
- GCPの構成として、最も粒度が大きいものが デプロイエリアの Zone
- GCPではベンダーロックを避けるために、オープンショースのミドルウェアを積極的に利用している
Module introduction
The Google Cloud Platform resource hierarchy
- GCP のリソースやプロジェクトの階層構造はこんな感じになっている
- プロジェクト命名についての解説もある
- Project ID はグローバルにユニーク
- Project name は重複可能
- Project number はグローバルにユニーク
- Project ID は読みやすく識別しやすいものが良い
- フォルダーはプロジェクトに所属していて、 n:n の関係で紐づく
Interacting with Google Cloud Platform
- GCP では4つのコンソールの操の方法が用意されている
- この商では課題として、実際に GCP 環境に LAMP アプリをデプロイしてみる
- Coursera で Cloud Market Place という実際に GCP を動かすことができて、そのサイト内で採点までしてくれるページがある
- GCP を触れる時間には制限があって、その時間内に課題を終わらせる必要がある
Virtual Private Cloud (VPC) Network
- GCP でのアプリケーション開発の第一歩として、VPNをはる
- VPN は project に所属している
- GCP が提供する VM では OS やら CPU のスペックやらを選ぶことができる
- VM のconfig はスナップショットにとってバックアップ可能
- 仮想CPUと仮想メモリの数には上限がある
Important VPC capabilities
- GCP の VPC では firewall の管理を気にする必要がない
- アクセスが増加すると VM は自動でオートスケールする
- アクセウの振り分けや、エンドポイントの一括管理はロードバランスがしてくれる
- NDS についてもこの章で紹介されている
- Google が無料で提供しているサービスで最も有名なものが 8.8.8.8 のドメインらしい(知らなかった)
- Cloud DNS では DNS を利用できる
- Cloud CSN はロードバランサーでHTTPSを設定したら CDN にチェックするだけで利用できる
- GCP の VPN は interconnect のオプションがあって、オンプレの環境と接続できる
実際に触ってみるパート
Google Compute Engine and Networking (クイズ)
- 1回不合格になったので調べたことを記しておく
- ネットワークとサブネットの違いについて
- Virtual Private Cloud(VPC)ネットワークの概要 | VPC | Google Cloud
- ネットワークはグローバルなもので、サブネットはリージョンに紐づく
- GCE の Preemptible VM について
- http://tech.feedforce.jp/gce-preemptible-vm.html
- Preemptible VM はGCE の余剰サーバーを利用したもの
- 安い変わりに、最大で24時間しかつかえない
- Cloud interconnect の SLA について
- https://cloud.google.com/interconnect/?hl=ja
- SLA が公開されている接続方法とされていない方法がある
- ダイレクトピアリングとキャリアピアリングでは提供されていない
Cloud Storage
- GCS はファイルシステムではない
- 全てのデータをオブジェクトとして扱うバイナリラージオブジェクトストレージ
- ファイルにはURLが割り当てられ、 GCS 上でファイルを編集することはできない
- デフォルトで HTTPS の暗号化がされる
- オンラインとオフラインでデータをインポートできる
- バケット名はグローバルにユニーク
- コンテンツへの権限管理では、 IAM に対して Access Control Lists を設定する
- GCS のファイルは immutable で、ファイル自体を編集するのではなく、バージョン管理をしている
- オブジェクトに対しては LLT を設定できる
Cloud Storage interactions
- ストレージクラスでは、オブジェクトにアクセスする頻度やSLAからクラスを選択できる
- nearline クラスでは、頻度の他に、データにアクセスする毎にデータ容量に応じて費用が発生する
#### Bigtable - Bigtable は NoSQL データベース - HBase(Hadoop のNoSQL データベース)と同じ API が用意されている - Bigtable ではデータアクセスの方法ががいくつか用意されている - application api - HBase rest server か Hbase クライアントを使った Java サーバーからアクセスできる
Cloud SQL and Cloud Spanner
- Cloud SQL はマネージドな RDB
- MySQL と PostgreSQL が使える
- Vertical に read/write を拡張されて、 Horizontal に read が拡張される
- Cloud SQL は App Engin, GCE, 外部サービスから接続できる
- Cloud Spanner は Horizontally scalable な RDBMS
#### Cloud datastore - フルマネージド NoSQL データベース - 自動的にレプリケーションとシューティングをしてくれる - レプリケーションはマスタのデータをスレイブのデータベースにコピーする - シャーディングはデータを分割して複数のサーバに保存する
#### Comparing Storage Options - - 各ストレージのユースケースが紹介されている - Datastore は semi-structured な App Engin のサービスで使うのにもいいらしい - BIgtable はスループットが多い AdTech みたいなイベントの裏側で動かすのにいい - Storage は画像とかメディアファイルなどのバイナリデータを置くのに適している
GCP Fundamentals: Getting Started with Cloud Storage and Cloud SQL
Google Cloud Platform Storage Options (クイズ)
- 一回間違えたので調べた内容をメモしておく
- Cloud Storage のバージョニングはデフォルトではオフになっている
Module Introduction
- ここから container と Kubernates engine の説明に入っていくらしい
- Kubernatees Engin を使って、 Continer のデプロイを管理する方法を学んでいく
What are Containers?
- Container は Hypervisor と同じく、VM のひとつ
- Container を使うと、1つのOSを動かすのに1つの VM を動かす必要がないので、リソースの節約になる
- Kubernates engin は docker container の runtime を利用している
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 に置いておける
実際に触ってみるパート
- Kubernetes engine を使って Kubernetes を動かしてみる
- Kubernetes engine の CLI の kubectl を使って Docker conatainer をデプロイしてみる
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
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 の思想で設計されているもの
- YAML か Python のコードでデプロイを管理できる
Monitoring
実際に触ってみるパート
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 関連のサービスにはこんな感じのものがある (())
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 ではテキストの構造を解析したり、文中に関連する記事やブログを探したりができる
- 英語やスペイン語、日本語などに対応している