GCPの概要

はじめに

GCPのお勉強会に参加したのでその時のメモ
普段AWSだけどGCPどんな感じなのか興味があり参加

GCP(概要)

googleは専用回線を持っていてそれと同じ専用線をGCPでは利用可能
世界展開する際にはこのネットワークを利用することができるので高速アクセスが可能

エッジキャッシュサーバー

CDN安くて許容度が高い

リージョンとゾーン

リージョン : データセンターの場所 asia-north-east1 東京とかとか
ゾーン : データセンターをメンテナンスするエリア 基本的にゾーン毎に3ヶ所
ここら辺はAWSと同じよね。

データセンター

日本にもある
電気代を抑えるためにgoogleは努力
冷却システム AIが行なっているらしい
サーバーのハードも自作、、、市販はしてないのね。

課金

分単位で課金が発生
ここはAWSと違う時間単位で課金が走るのでね。
サステンドユーズディスカウント : 同じインスタンスを使ってるとお安くしてくれる

App Engine

Paasなので基本的にお任せ
言語も限定的 Java, PHP, Pythonなど
ruby perlは使えないらしい 悲しい。

Compute Engine

IaaSなのでミドルウェアから作ってくれる
基本的にAWS的にはこれと同じかEC2でゴリゴリいつもやってるのと同じね。

IAMの管理

ここら辺は基本的にAWSと同じイメージユーザーに色々とroleで権限与えていく
1番の違いはgoogleアカウントと紐づいているところが違う

GCPへのアクセス

goole cloud platform console

GUIで使う管理画面

CloudのSDK/Shell

テーミナルの画面
gclou コマンドが使えるようになる

gcloud compute list
gsutil ls gs://hoge

cloud shellでは管理画面から操作可能

RESTful APIs

1番機能が画面やシェルはここのAPIを読みだしてる。
APIs Exploer からguiで確認可能

Google App Engine

Paasサービス
スケーラビリティが高い デフォルトでオートスケーリングができる 40msでインスタンスが立ち上がる
AWSの場合はオートスケーリングでスパイクがあると対応しきれないけどすごいな。
極端な話0台で設定してリクエストがあったらインスタンスが立ち上がるということができる。
AWSのlambdaよりもいいですねこりゃ。
しかもバージョン管理もしてくれる。
ミドルウェアの管理も不要つまり環境が不要!!!!
なんと!!!
snapchat、ingress、メルカリもApp Engineで運用してるらしい。
snapchatはインフラエンジニアなしでiOS&Androidエンジニア

Standard Enviroment

java, python, PHP&GOのみ
sshでは入れない
書き込み処理ができない。
image magicとかインストールする必要があるものはできない。
APP EngineのSDKを入れて開発できる。

無料枠

インスタンス1日28時間の無料枠あり。
プロジェクト毎に課金がされる。
よってテストと本番みたいにすればテストと本番のインスタンスにそれぞれ無料枠適用される。
夕方5時にリセットされる。
例) 2台動かす
A 14時間アクセスあり起動
B 15時間アクセスあり起動
計 29時間なので1時間課金される

Flexible Enviroment

Dockerベースでできている。
こちらはローカルにアクセスできる

失ったもの

スケーラビリティが失われている。
ms単位ではインスタンス立ち上がらないので0台運用できない1台設定して。
無料枠はない。

オートスケールで死ぬのを防ぐには

settings のDaily spending limitで金額を設定する。(ここでの金額はDatastore&App Engine)
これでアクセスできないと500エラーが返る。
DDOS攻撃受けたらipブロック登録しとけばよい。。。

Google Cloud Datastore

KVSのデータストア
スケーラビリティが高い
ポケモンGOもこれを利用している。
国毎にデータベース分けられてないのでこれ以上のものはない。
無料枠あり。
ストレージが1GBまで無料になっているらしい。

redisの基本コマンド

redisのインストール

brew install redis

resdisサーバーの起動

redis-server

redis-cliの起動

redis-cli

resdisサーバーの状態確認

redisの状態確認

info

### サイズを確認

dbsize

keyの一覧表示

keys *

キーの存在確認

exists キー

データを削除

対象データの削除

del 対象のキー

丸ごと削除

対象データベースのデータを全削除

flushdb

redis-server内の全データを削除する

flushall

#データベースの切り替え

select 0

※ デフォルトでは0-15らしい

データ登録と取得

データの登録

set キー 値

データの取得

get キー

リスト型

登録順序を保つ

リストデータの追加

右側に追加
左側に追加

rpush キー バリュー
lpush キー バリュー

件数を表示

llen 
lrange キー スタート エンド
データを取得とともに削除
rpop
右側を取得して削除
lpop
左側を取得して削除

セット型

登録
sadd キー メンバー
srem キー メンバー
件数
sard
smenber
spop キー

スコアードセット型

zadd キー スコア メンバー
zrem キー メンバー
件数表示
zcard
zcard キー スタート エンド

ハッシュ型

キーバリュー型の形式RDSのデータの持ち方に類似

データ登録
hset キー フィールド バリュー
データ取得
hget キー フィールド
全データ取得
hagetall

データの永続性

espire キー
データの残存期間
ttl

pusblish/subscribe

チャットサービスをイメージすればいい

発信
publish チャンネル 発言内容
受信
subscribe チャンネル