Google Cloud Platformのハンズオンセミナーに行って参りました。
今まで、AWS(Amazon)を使ってきた私ですが、そろそろ他のクラウドサービスも触っておこうかなと思い、GCP(Google)について勉強してきました。
主にAWSとの差異について書きたいと思います。
GCPの特徴
■特徴1:
Googleネットワーク
地球上で最大規模のネットワーク回線を所有している。
ファイバー網と海底ケーブル8本。
※Googleネットワークは、中国からのアクセスをブロックしている。
Googleのサービスを利用してグローバルなサイトを作りたければ、AmazonやMicroSoftのネットワークに一旦迎え入れて、そこからGoogleのサービスにつなぐことで一応利用可能である。(中国からアクセスできるかのテストは、中国のプロキシサーバを通してWeb閲覧してみれば良い。)
リージョン(地域)によって使用できるサービスの一覧
https://cloud.google.com/about/locations/
■特徴2:
クラウドサービスのために作ったサービスではない。
自社のインフラを他人が利用可能な状態にしただけ。
Google内と同じような開発環境を世界に公開した。というポリシー。
※そのため、ユーザーインタフェース画面の便利さ・分かりやすさは、AWSよりも見劣りする。と思う。公式マニュアルもCLIコマンド基準の記載が多いようです。
まずは全体にかかわること
■リソースは階層構造で管理する
”リソース”(ストレージサービスやコンピューティングサービス)は、”プロジェクト”という単位にまとめる。そして、複数の”プロジェクト”を”フォルダ”にまとめる。
サンプルでは、フォルダ名はチーム名や製品名だった。つまり”プロジェクト”とは、プログラムの単位みたいなものである。(うーん、日本の現場とは逆のネーミングセンスだ・・・プログラミングファーストなセンスとでも呼ぼうか)
https://cloudplatform-jp.googleblog.com/2017/06/mapping-your-organization-with-the-Google-Cloud-Platform--resource-hierarchy.html
リソースは階層構造で管理する
リソースは階層構造で管理する
■権限は和集合の法則
アクセスポリシー、つまり個人やリソースに付与する権限は和集合の法則となる。
緩い方(権限が強い・多い)方が適用される。
そのため、”Deny(禁止)”という設定は存在しない。
現場では、”権限を作成する権限”は管理担当者のみとするのが吉。
適用できる種類
・Googleアカウント
・サービスアカウント
・Googleグループ
・GSuite
・IAM
■ネットワーク
VPCは複数のリージョンをまたがって作成可能。
ロードバランサーは複数のリージョンにまたがることができる。
サブネットも複数のゾーン(AZ)にまたがる。
つまり、1つのサブネットでも冗長化構成が実装できる。
VPCネットワーク内は、内部(プライベート)IPv4 アドレスを使用して相互に通信できる。ファイアウォール ルールで制御する。
https://cloud.google.com/vpc/docs/vpc?hl=ja
コンピューティングサービス(APPサーバ)
■用語
サーバレス サーバの管理をしなくて済む。プログラムだけ乗せるようなイメージ。
■Conmute Engine
ベーシックな仮想サーバ。
■APP engineスタンダード環境
PAASサービス。
スケーラブルでフルマネージドでサーバレスなプラットフォーム。
サンドボックス制約
・ローカルへの書き込み
・60秒以内
・サードパーティーソフト基本使わない
■APP engineフレキシブル環境
サンドボックス制約がなくなる。
SSH接続とディスク書き込みが可能になる。
■CloudFunctions
イベント駆動型。
ごく単純なプログラムを動かす。
ストレージサービス(DBサーバ)
■用語
垂直スケーリング CPU強化
水平スケーリング サーバーを複数台に
■CloudSQL フツーのRDBMS。
■CloudSpanner 水平スケーリングが得意なRDBMS。
■CloudDatastore ACIDトランザクションのついたNoSQL。RESTfulでもアクセスできる。
■Bigtable 大容量向けペタバイト以上のNoSQL
おすすめサービス
■API Exploer
・GoogleのAPIをお試し利用できる。
■MarketPlace(CloudLauncher)
・ボタン一発でインスタンスを作成。
■Cloud Endpoints
RESTful APIキーでアクセスできるようになる。
これがないと、認証認可の仕組みとSSL終端処理を
APP engineやK8SEngineでやらなくちゃいけないので、基本これを手前に置く。
■ApigeeEdge
こっちもCloud Endpointsと同等だが、GCP公式がおすすめするくらい
一般公開時の収益化やアナリティクス機能が充実している。
■SourceRepositories
Githubとミラーリングできる
Push時に連携してCloudBuildもできる。
■DeploymentManager
インフラをコード化して管理することができる。
.yaml
■Stackdriver
モニタリング
ロギング
エラー通知
デバッグ
トレース AWS X-rayみたいなレイテンシ調査ができる