先週に引き続き GCP を見ていく。
前回は仮想マシン相当の Google Compute Engine だった。
Azure 系エンジニアから見た GCP 〜Google Compute Engine編〜 - ぐだぐだ言ってないでコードを書けよ、ハゲ。
今回はファイルストレージ相当の Cloud Storage。
Azure では Blob Storage、AWS では S3 にあたる。
Cloud Storage
料金
全般
Azure Storage Blob の価格 | Microsoft Azure
Google Cloud Storage の料金体系 | Cloud Storage ドキュメント | Google Cloud Platform
アクセス頻度に基いてどのタイプを使うか選択する。
Azure は単リージョンに置いたとき(LRS)と複数リージョン(GRS)に置いたときで容量課金が純粋に倍になるが、GCP はそうでもない。
GCP ではマルチリージョンで細かいリージョン指定ができないので、東京のように高いリージョンは使われていなくて、結果的に料金が安く見えてるのかもしれない。
料金テーブル分かりやすいんだけど Nearline と Coldline はどこに保存されるの? / https://t.co/QaiKTm23Kj
— kheiakiyama (@kheiakiyama) 2018年1月28日
リージョン選べるのか。安心。>Nearline と Coldline pic.twitter.com/Ri4qzzYUzR
— kheiakiyama (@kheiakiyama) 2018年1月28日
マルチリージョンでないプランならリージョンを指定できる。
余談だが Azure の料金プランは V2 ができつつある関係ですごく複雑になっていて見通しがよくないのでつらい。
SLA
たぶんストレージに限った話ではないが、SLAを下回ったときの返金はユーザからベンダーに問い合わせないといけない点は GCP も Azure も同じ。 / https://t.co/88Vy3IM1zh
— kheiakiyama (@kheiakiyama) 2018年1月28日
細かい話だが SLA に関する対処は横並びっぽい。
料金プランの適用範囲
「バケットのデフォルトのストレージ クラス」という言い回しが気になると思ったら、やはりバケットごとにストレージクラスを変更できるようだ。ポータルではできないが gsutil なら可能、と。
— kheiakiyama (@kheiakiyama) 2018年1月28日
Azure だとストレージアカウント単位で料金プランを選ぶが、GCP では料金プランを意味する「ストレージ クラス」をオブジェクト単位で指定できるようになっている。
バケットで指定する料金プラン(ストレージクラス)は、あくまでもオブジェクトの料金プランのデフォルトという位置づけ。
特定のオブジェクトのプランを後から変更するのも可能。
オブジェクトのストレージ クラスの変更 | Cloud Storage ドキュメント | Google Cloud Platform
リクエスト課金
Azure Blob にはなかった気がする。リクエスト元にリクエスト課金の支払いをさせる仕組み / https://t.co/3xhe4Xg5s5
— kheiakiyama (@kheiakiyama) 2018年1月28日
S3 にもあるのか。 / https://t.co/QwRUYk6ghu
— kheiakiyama (@kheiakiyama) 2018年1月28日
リクエスト課金の部分はアクセス元のプロジェクトに払わせることができる。
Azure Blob にはなかったはず。
アクセス
バケット名がユニークでないといけないのは FQDN つくのかな?
— kheiakiyama (@kheiakiyama) 2018年1月28日
バケット内のファイルを「一般公開」すると URL でアクセスできるようになると。AWS の S3や Azure の Blob と同じだな。
— kheiakiyama (@kheiakiyama) 2018年1月28日
アクセス権限を細かいレベルで管理できるのは想像がつくので特に見てない。
静的サイトのホスティングも普通にできる。
https://storage.googleapis.com/(Bucket_Name)/(Object_Name)
バージョニング
オブジェクトのバージョニングもできるのか。 https://t.co/Lrm72F3S8o
— kheiakiyama (@kheiakiyama) 2018年1月28日
バージョニングを有効にすると、ファイルをアップロードしたときに前バージョンが残る。
最新以外のファイルを操作するにはコンソール(Webのポータル)ではできず、cli ツールである gsutil
を使う必要がある。
細かいがバージョニングしている場合はあくまでも別オブジェクトとしてコピーされるので、元のオブジェクトのプロパティは引き継がないみたいだ。一般公開しているかとか。
— kheiakiyama (@kheiakiyama) 2018年1月28日
Azure だとバージョニングはなくて、スナップショットで取ることができる。
Creating a Snapshot of a Blob | Microsoft Docs
スナップショットは明示的取らないといけないので、有効にしておけば自動的に取れる GCP とどっちがいいかは良し悪しか。
GCP Console 周り
今回も Console でいいなと思った部分があった。
クイックスタートがポータル内に出てきてそのまま操作しながら読めるってすごく使い勝手いい。 pic.twitter.com/Ih1fVrYfjT
— kheiakiyama (@kheiakiyama) 2018年1月28日
操作を進めるとクイックスタートが同期して進んで、スマホゲームのチュートリアルくらい親切。
— kheiakiyama (@kheiakiyama) 2018年1月28日
調べながら使うというところがすごくカバーされているのを感じる。
Google検索を持ってるから、どこで脱落しているかなどが手に取るようにわかっているのだろう。
あとがき
GAE ちょっと読んだが長い旅になりそうな予感。
— kheiakiyama (@kheiakiyama) 2018年1月28日
わかりやすくて機能が少ないサービスは軽く流していけるが、GAE みたいなサービスをどうやって見ていこうかちょっと迷う。
GCP は数年前に見たときのイメージで Go や Java, Python あたりが一級市民てイメージがあるので、ちょっとは書ける Python かこれからの Go を書きながら検証していくしかないのかな。Java は知らん。