gcp ja night #28 に参加してきたので、色々まとめるよー。スライド資料を見ればわかるようなことは書かない方向で。
懇親会の場で、Googler の佐藤さんに、前から気になってたことをいくつか質問できたので、その内容もこのエントリの最後にメモっとく。
イベントページ
各種まとめ
2014.09.16 gcp ja night #28 #gcpja - Togetter
gcp ja night #28 - 資料一覧 - connpass
Managed VMのDocker対応とKubernetes最新動向
- @briandorsey by Brian Dorsey, Developer Advocate, Google Inc.
- 僕の観測範囲では、スライド資料の公開はなし
- GAE などのような PaaS を使いつつ、IaaS 的なものを使いたくなったこと、あるよね。というお話
- それを叶えてくれるのが、Management VMs(MVMs)
- GAE のインスタンスを、GCE 上で動かしてくれる
- GAE と GCE との橋渡しには、(今日紹介された例だと)Task Queue を使う
- GAE が Task を push / GCE が Task を pull...ってことなのかな?
- GAE には Module / Version という考え方があるけど
- ここらへんについては、 GAE Managed VMs誕生までの歴史を振り返る | 株式会社トップゲート が非常に丁寧かつわかりやすい
- ある Module 丸々ひとつが MVMs になるイメージ
- フロントはオートスケールする GAE で、ライブラリ処理の必要なバックエンドは GCE で
- バックエンドの方も、LA をもとに、MVMs 側も調節してくれる、らしい
- MVMs はまだ Limited preview
Containerizing the Cloud
- Docker とかコンテナとかのお話し
- 個人的にここらへん弱い部分なので、メモも自信ない(´・ω・`)
- なぜコンテナは嬉しいか?
- 静的な環境を用意できる
- ポータビリティ
- 疎結合になる
- Google ではほぼすべてがコンテナ化されてる
- コードのリポジトリはどれもほとんど同じ(!)
- 依存性がひとつのバイナリに入ってる
Kubernetes
- 発音、
くばねてぃーず
って聞こえたから多分そう
- 発音、
- 例えば同一ホスト上で動作する2つのコンテナを、常にセットで起動したいとき...
- Kubertes に丸投げできる、多くのコンテナ群を Kubernetes で管理できる
- role や staging / production などを設定できる
- コンテナの組み合わせを Pod と呼んでる
- 4 Pods 欲しいときは、「4 replicas」
- templates に、あらかじめ決めておいたコンテナの組み合わせ定義を指定する
#gcpja podは同一ホスト上で動くコンテナの組み合わせ Replica Controller はそれの管理人 podの数をコントロールする Serviceはネットワーキング LBの役割もする コンテナ間のネットワーキングを行う
— おーはし(さんとりー) (@soundTricker318) 2014年9月16日
#gcpja 今見てるデモはk8sに入ってるデモです これ→ https://t.co/gYUjhnT9wn
— おーはし(さんとりー) (@soundTricker318) 2014年9月16日
Google BigQueryの概観とユースケース
- by @naoya_ito
今日使用されたスライドそのものは見つからなかったのだけど、先日の YAPC とほとんど同じ内容だとのこと公開されましたので差し替えました(2014/09/17 17:33)。こちら -> Google BigQuery の話 #gcpja - Speaker Deck- 6ページ目:BigQuery のブレイクスルーの一つには、Streaming Insert API が使えるようになったことが挙げられる。
- 12ページ目:価格が異常に安いのも特色の一つ。
- さらに、スキャンサイズ 1TB/month は無料。
- 16ページ目:ColumnIO のおかげで、ランダムリードにならずシーケンシャルリードとなり、嬉しい。
KAIZEN でのつかいどころ
- 34ページ目:正規化はあまりしないのがセオリー。
- 35ページ目:外部ツールとの接続
- 38ページ目:標準SQLではない。ので、注意はもちろん必要だが、便利な関数とかも多いのでぜひ調べてみては。(2014/09/17 17:33 ページ数修正)
- 38ページ目:どうせフルスキャンしてるし、という前提に立つと、見えてくるものがある(2014/09/17 17:33 ページ数修正)
- 39ページ目:不必要なカラムには null をセットすることで、容量食わなくさせることができる(2014/09/17 17:33 追加)
- 40ページ目:四方山話(2014/09/17 17:33 ページ数修正)
BigQueryカラム削除出来ないけど、追加は簡単なので、使わないカラムはnullにして、新しいカラム増やしていくと便利。 #gcpja
— はるかさん (@harukasan) 2014年9月16日
GAE/GoとManaged VM
- by @ymotongpoo
- スライド資料 -> https://preso.ymotongpoo.com/gcpjanight28.slide
- Runtime の開発はシドニーでやってる
- GAE/Go は、 GAE/PHP よりもユーザーが少ない...
- 8ページ目:フレームワークの話。ロックインされるとかって話を GAE/J とかでよく聞いたけど、 GAE/Go でも同じなの?
- 全然そんなことないよ、というのが、9〜16ページの間で書かれている
- そもそもフレームワークを使う必要は、必ずしもないよね、という話 :-p
- User とか Task Queue とかの appengine 特有のパッケージがあったり、main関数は必要なかったり、DB に Datastore を使う場合は多少ロックインしちゃうけど、その程度
- 全然そんなことないよ、というのが、9〜16ページの間で書かれている
- メリット
- spin upがはやい=スパイクに強い
- 手元で動かしているアプリケーションからの改修を小さいままに移植可能
- 結論 = GAE/Go は最強!
コンテナが40msで立ち上がるPaaSって他にないだろー。Googleコンテナまわり得意 #gcpja
— Kazunori Sato (@kazunori_279) 2014年9月16日
BigQueryと俺とFluentd
- by @tagomoris:
- スライド資料 -> BigQuery, Fluentd and tagomoris #gcpja
- 8ページ目:table sharding inserts
- テーブルあたりのクオータが厳しいので、sharding に対応した
- データをいくつものテーブルに分散して入れる
- こんなことをしても、 from 句に table を複数書けるので問題にならない :)
- 17ページ目:パフォーマンスについて
- 大量にデータを書き出す場合は table sharding 使いましょう
- 書き込み部分だけをスレッド化する機能が fluentd にある。それを活用している
- I/O待ち部分を並列化できる
- 18ページ目:特徴
- 19ページ目:API Quota
- けっこう厳しい。
- fluentd の既存のAPIでは検出できない部分での制限が多い
- 20ページ目:クラウドをおもちゃにして遊ぶのは、環境を準備する必要がないので良い :)
- 変な制約があることが多くて燃えるw
terraform + GCE
- by @voluntas
- スライド資料 -> Terraform 0.2.2 で GCE + Ansible を試してみた
- Cloud Formation を GCE で使うようにできるもの?
- とはいえ、「GCE 周りを最低限サポートした」程度、という印象。最初はバグも
plan
で dry-run 的なapply
で適用- インスタンスを管理できるのは魅力。provisioning もできる
local-exec
、 インスタンスを生成する まえ に、何かをさせることができるremote-exec
は起動後。 chef との組み合わせがよさそう
- provider、全然足りてない。これからに期待
BigQueryで大規模投票サイトを作った話
- by @a2c
- スライド資料、観測範囲では発見できなかった
- 理想の投票は選挙のシステム。チートは無理
- このレベルである必要はない。けど、目指す。
- 色々対策などを考えた結果、とりあえず、「後先かんがえず全部のリクエストを全部 BigQuery に食わせる」ことに。
- BQ なら、 DB やストレージとかのことを考えなくて良い!
- 機械的なのも、ある程度は絞りたい
- GASでグラフ化してリアルタイムでモニタリング
- 大量に書き込みつつ、そこに全量カウントを同時並行で実行とかも平気でできる。それがBigQuery。
- GAの値、びっくりするくらい正確。トータルの値は誤差未満、0.3%未満とか。
はじめてのBQ GAS
- by @hakobera
- スライド資料 -> はじめての BQ GAS - Speaker Deck
- 14ページ目:GASにはcron的に使えるトリガがある!
- 「1時〜2時の間」、とかっていう、ざっくりした感じ
- このレベルで全然問題ないし、負荷的な頃合いを見計らったりとか、こっちで考える必要もない!
- 21ページ目:日時レポート定義シートを作成。
- このシートを参照してクエリ実行 -> 通知、という仕組みにしておけば、エンジニア対応なしにレポートの追加ができる!
まじめな話、PM から BigQuery にバッチで SQL 定期的に実行してレポート受け取りたいんだけどって話あったけど GAS でサーバーレスで解決できるんだなあ。いいかも #gcpja
— Naoya Ito (@naoya_ito) 2014年9月16日
Googler に質問したこと
BigQuery での「スキャンサイズ」の見積り方について
Q. フルスキャンだから、投入サイズ=スキャンサイズ、と見て良いか。
A. 良いよ!
UDFについて
Q. ぶっちゃけ、UDF っていつくらいでしょうか?
A. 年内には出るんじゃないでしょうか。内部的にはもう普通に使っているので!
BigQuery における、 Temporary Table の専有するサイズについて
Q. BigQuery に対して投げるすべてのクエリの結果は、destination table を指定しない場合は 24時間で消える temporary table に出力されるということですが(参考)、この temporary table の専有するサイズも、使用料の対象になりますか?
A. Good Question ですね!ぜひ、15,000円の有料サポートに入って、そこで問い合わせて下さい! :)
質問おわり。 Googler はとっても商売上手だった...。(`;ω;´)
( 2014/09/17 追記:この件について、別エントリに起こしました。BigQuery へのクエリの投げすぎに注意しよう(2014/09/18 追記しました) #gcpja - えいのうにっき )
(まとめの内容は随時追記するかもしれません。)