hbstudy#58にいってきた

先週にhbstudy#58というインフラ系の勉強会に行ってきました。 今回はGoogle Cloud PlatformやBigQueryの話でした。

感想としては、Googleのインフラ構成はほんとに進んでるなーと。 すべてのサーバーで同じアプリケーションが動いているという。 あと、意外とBigQueryの価格が安くて、これくらいの価格なら使ってみてもいいのではという感じがしました。

当日のまとめ。

GCP(Google Cloud Platform)

  • AWSに比べて日本のコミュニティ小さい・・・
    • 実績が少ない。文献が少ない。
  • SnapChat
  • すべてのGoogleのアプリケーションはすべての自社サーバー上で動く。
  • アプリケーションごとにサーバーを分けたりしていない。
    • 新規のサービスを始めてもサーバーを調達したりしない。
  • クレジット以外で契約したいときはGoogleに問い合わせる。
  • GCE(Google Compute Engine)
    • IaaS
    • 2013/12にできた。
    • Early Adapter期。
    • 2014/04から値下げ。
    • Qiita記事:Google Compute Engineのココがイケてるイケてない
    • 東京にはデータセンターないのでは。日本からPing打つと40msくらい。
    • 日本語のGCE入門書はもうすぐ出るらしい。
    • インスタンス作成が早い。20秒〜30秒。
    • Webコンソールから開発者を登録するだけで各インスタンスに鍵を配ってくれる。
    • Webコンソールで変更した内容をコマンドやREST APIの形式で表示してくれる。
    • インスタンスを起動しっぱなしでも、ハードウェアなどの更新が行われる(LiveMigration)。
      • 負荷テストも行われており、実用上の瞬断も発生しない。
    • SSD(今はLimitedPreview)が速い。
    • リージョンをまたいでもVPN構築もできる。
    • FW設定はタグで管理できる。
    • SDN(SoftwareDefinedNetwork)にAndromedaを使っている。
    • ロードバランサー(今はLimitedPreview)が非常に強力。
    • DB
      • Googleで提供されるCloudDataStore、BigTableなどはそんなに読み書きは速くない。ただしスケーラビリティは非常に高い。
      • 速度を求める場合はSSDインスタンスに自身でMySQLを入れた方がいい。ただしレプリケーション設定などは自身でやる必要がある。
  • GAE(Google App Engine)
    • PaaS
    • MステのシンクロライブでGCEと組み合わせて使用された。
      • StaticなところはGAE、WebSocketで映像を流すところはGCE。
        • 突入負荷があっても平気(数十Gbpsのレベル)。Googleの他のサービスとインフラを共有しているので。
        • こういう組み合わせで採用される例は増えてきている。
    • Qiita記事:Snapchatを支える技術
    • DockerなどイミュータブルなインフラのプラクティスとAppEngineのプラクティスと似ている。

Docker

BigQuery

  • ラムダアーキテクチャ
    • ビッグデータの分析をリアルタイムにしたい。
      • ディスクをごりごり使うバッチ処理基盤
      • インメモリ系のリアルタイム処理基盤
        • この2つを組合わせる。
  • リアルタイム分析系をどうするか。
    • Elasticsearch + kibanaはデータサイズが大きくなると重くなってきてリアルタイムに分析しにくくなる。
      • fluentd + Norikraで作る。
  • BigQuery:680億行のデータでも30秒で結果が帰ってくる。
    • インデックスを使ってない。
      • WHERE句に正規表現とか入れても10秒とかで結果が返ってくる。
    • カラム型DB
    • 一つのクエリ実行で数千台のマシン上で動いている。
      • 1TBのデータを1秒で計算するには5000台のマシンが必要という実験結果から。
    • Googleのデータセンタではすべてのマシンを薄く広く使う思想。
    • リソースの関係で遅くなる(4秒が10秒とかのレベル)ことがあるが、有料オプションで専用リソースを確保できる。
    • 1億行のデータにクエリをかけると1円くらい。
      • お試し容量もあり。
  • BigQuery Streaming
  • Norikra
    • CEP(Complex Event Processing)エンジン
      • 元々、リアルタイム性の要求される分野では90年代から使われていた技術。
    • オープンソースで使えるようになったのは大きい。
    • fluentdから流し込める。
    • SQLで処理を書ける。
      • 他のエンジンではプログラムを書く必要のあるものが多い。
    • リアルタイムでKPIの分析までできる。
  • Google Spread Sheetへの書き出しが遅いが、そこはどうしようもない。