まいんだーのはてなブログ

はてブなのはてブロなのどっちなの

さくらインターネット #石狩DC 体験記(2回目)

謝辞

f:id:myfinder:20141201151755j:plain

応募者181名、参加枠30の狭き門な状況で2度めの貴重な機会をいただきまして、さくらインターネット並びにはてなの担当者さま方に感謝申し上げます。
前回からのアップデート差分を振り返り、ツアーを締めくくりたいと思います。
(公開していい情報かどうか未確認な話題や写真は、確認が取れ次第更新します)

データセンターの基盤的な話

  • 基盤については昨年のエントリにくわし〜く書きましたのでそちらを参照ください


さくらインターネット #石狩DC 体験記 - まいんだーのはてなブログ

前回見たフロアの差分

  • サーバの埋まり具合
    • 1号棟はほとんど埋まったとのこと
    • 実際HVDC対応のNECサーバが1ラック70ノード(Xeon 1CPU)びっしり埋まっているラックが増えていた
    • 1ラック70のCPUが詰められるのはかなりの密度
    • HVDC化したことで電源の故障が導入以降全く発生していないという点は特筆すべき点


直流・交流の変換ロスを減らすHVDC:Expressテクノロジ読本 | NEC

  • 高温超電導直流送電施設ができてた
    • 昨年書いた近所に建てた太陽光発電所からDC400Vでそのまま送電するという研究のための施設建屋が新たに出来ていた

f:id:myfinder:20141201151636j:plain

    • 残念ながらそちらは見る&撮影することは出来ず。

沿岸バスのラッピングバス

f:id:myfinder:20141129113545j:plain f:id:myfinder:20141201202420p:plain

さけ太郎&さけ子

  • 石狩DCに着いたらエントランスから石狩市のキャラクター ”さけ太郎&さけ子” が出てきて歓迎してくれた

f:id:myfinder:20141129131055j:plain

  • 今年はキャラ色が強い

石狩丼の変遷

  • こちらが昨年の石狩丼

f:id:myfinder:20131123133928j:plain

  • こちらが今年の石狩丼

f:id:myfinder:20141129132302j:plain

  • 高密度化が進んでいますね

音声レシーバ

  • 今回の見学で最も良かった改善点はこのレシーバ

f:id:myfinder:20141129132103j:plain

  • 前年はメガホンだったけれどもこちらのほうが全員均等に声が届くので、聞き逃すことがなくなった

鷲北さんのさくらのクラウド裏話

  • さくらのクラウドがサービスリリースまでにどういった経緯だったかというトーク
  • かなり短期間で実装〜公開された話や、石狩開所に合わせたリリースに向けた構築の話は特に関心高かった
  • “Demo or die.” というフレーズはいただきです

田中x田中対談

  • 2014年の振り返りから今後の展望について、というのがメイン
  • やはりというか、Dockerの話題が盛り上がって、完全仮想化よりもDockerのようなコンテナのほうがより効率がいいという話だった
    • その後で、さくらもDocker as a Serviceみたいなのやらないんですか?と聞いたら “ノーコメント” と言われたので、何か考えてそう感はあった
  • その場では詳しく言及されていなかったが、エンジニアの待遇に関して田中社長はいろいろ考えているようで、東京の給料をもらいつつ石狩で生活基盤が作れるような流れにできれば〜といった主旨の話も出た

懇親会

  • 個人的に注目している HP Moonshot の話を田中社長にしたら “さくらでも検証したけど、やはり汎用品の方が最終的には良い” という話だった
    • 最終的なオペレーションやサーバのライフサイクルを考えたら、普及してる1Uサーバの方がメリットが大きいだろうなというのは想像にかたくない


HP Moonshot System | 日本HP

  • 先ほどの対談では詳しくできなかったエンジニアの働き方に関する話に関連して、石狩にも開発拠点を設けたいといった話を伺った
    • 個人的には春先から夏の間北海道で花粉と湿気をやり過ごせたら最高だなと思う

f:id:myfinder:20141129221414j:plain f:id:myfinder:20141129222342j:plain

石狩湾新港地域案内

  • ガイド
    • 昨年は田中社長がバスガイドをしてくれて、大変面白かったのですが今回はプロ中のプロ、石狩開発という石狩湾新港地域開発の担当会社によるガチ案内
    • 地味に今回の資料で石狩湾新港地域の分譲価格(坪単価)とかを知れたのは興味深い点

f:id:myfinder:20141201160428j:plain

  • コンテナの荷揚げ所
    • 通常は港湾テロ対策に一般の出入りが禁じられているところ、担当者の方がわざわざ休日にもかかわらず鍵を開けてくれてバスの中からではあるが見学することができた
    • "ドッカーの働くコンテナ集積所” どっかで聞いたようなフレーズ

f:id:myfinder:20141130093239j:plain

  • LNG基地/火力発電所建設予定地
    • 大きいLNGタンクが2つに増えており、更に小さいタンクも増やしているとのこと
    • これは後述の火力発電所新設に向けた動きだそう
    • 北海道の泊原発が止まっているため、北海道全体では電気不足になっており、これを解決するために石狩湾新港に新火力発電所建設が進んでいるという話
    • エネルギー生産の中心で冷涼で海底ケーブル引き上げ所もあるっていう "データセンター作ってください" と言わんばかりの立地になってきている

f:id:myfinder:20141201160503j:plain

2号棟

  • 完成しているBゾーン以外に、工事中のCゾーン、まだ手入れされていないコンクリート打ちっぱなしのDゾーン以降も見ることができた
    • 完成したゾーンと壁や天井が仕上げられていないゾーンを行き来すると、実際壁や天井の裏がどうなっているか見えたり、空調機器を置く前の空気の通り道が見られたりしたのはとても良かったと思う
    • このあたりは是非写真OKになってほしいところ

リフレッシュルーム

  • 石狩DCのスタッフがランチしたり休憩したりする場所が出来ており、新しくきれいなスペースだった
  • 座敷もあってゴロゴロできるのはとても良い

f:id:myfinder:20141130120020j:plain

おわりに

毎年同じことを書くのもなんですが、スタッフの皆さんは些細な事でも丁寧に回答してくれるので、やはり普段サーバのことを余りやらない人ほど参加してどんどん質問すると実りが大きいのではないかと思います。
あとLTは臆せずやったほうがさくらのシャツがもらえるのでお得です。

重ねて、企画いただきましたさくらインターネット及びはてなの皆様に感謝を申し上げます。
ありがとうございました。

MySQL のテーブルを BigQuery にインポートするための App::BigQuery::Importer::MySQL

このエントリは MySQL Casual Advent Calendar 2014 の1日目として書かれた記事であり、同時に Google Cloud Platform Advent Calendar 2014 の17日目として書かれた記事でもあります。
このエントリは MySQL と BigQuery を組み合わせて使う際に誰しも思うであろうことをどう解決するかという一手について書いたものです。

MySQL について

もはや説明不要の RDBMS ですね。これを読まれている方の中でも多くの人が使っているのではないでしょうか。
MySQL Casual Advent Calendar 2014 はまだまだ執筆者を募集しておりますので、ふるってご参加ください。


MySQL Casual Advent Calendar 2014 - Qiita

BigQuery について

こちらも説明は要らないかと思いますが、BigQuery は小さいデータ(メガバイト程度)から超巨大なデータ(ペタバイト級)まで、SQL ライクなクエリを用いて短時間で解析できる SaaS 型データストアサービスです。
fluent-plugin-bigquery を用いれば、発生したデータを逐次 BigQuery にインポートし、すぐにクエリで解析をかけることもできます。
データを入れておくだけなら S3 よりも安いので、用途によっては BigQuery をプライマリデータストアにしてしまうのもアリではと思います。


Google BigQuery - Fully Managed Big Data Analytics Service — Google Cloud Platform

BigQuery の用途と課題

BigQuery は追記のみ対応で、DELETE や UPDATE をすることができません。
ログをずっと貯めこむだけならそれで全く問題ないのですが、サービスの運用ではログテーブルとマスタ系テーブルを JOIN したいという要求が往々にして存在します。
なので、単純に追記することしかできない BigQuery ではマスタ系テーブルに対する操作を単に流し続けるということができません。
これに対してひとつの手として、定期的にマスタテーブルを BigQuery にインポートする方法が考えられます。
が、それを各所で個別に実装するのはなんか手間もかかるし、ちょっと面倒かなと思います。

そこで App::BigQuery::Importer::MySQL というツールを作りました。

App::BigQuery::Importer::MySQL

App::BigQuery::Importer::MySQLPerl で書かれたモジュールですが、CLI を同梱しているのでどなたでもカジュアルにご利用いただけます。
既に CPAN で公開していますので gcloud と MySQL のクライアントライブラリがインストールされており、必要な設定が済んでいれば

cpan App::BigQuery::Importer::MySQL

もしくは

cpanm App::BigQuery::Importer::MySQL


というコマンドで導入でき、インストールが完了すると "mysqlbq" という cli が利用可能になります。

使い方はとても簡単で、下記コマンドを叩くのみです。

mysqlbq --db_host=mysql-host.localdomain --src=mysql_table --dst=bigquery_table

--dryrun オプションをつければ、GCSやBigQueryに対する操作は行われないようになっています。

動作確認は gsutil 4.6 と MySQL 5.6.19 で行っていますが、特殊なことはやっていないので他のバージョンでも動作するかと思います。

このツールは下記のような動作で MySQL のテーブルを BigQuery にインポートします。

  1. 対象テーブルのスキーマ情報を取得し、BigQuery の型に変換した json ファイルを一時ファイルとして作成する
  2. 一時データ置き場として Google Cloud Storage(GCS) に bucket を作成
  3. 対象テーブルのデータを dump して bucket にアップロード
  4. BigQuery の対象テーブルがあれば削除して新たにテーブルを作り、GCS から dump したデータをロード
  5. dump データと bucket を削除してクリンナップ

このような手法で問題解決できそうだという方は、是非お使いください。


myfinder/app-bigquery-importer-mysql · GitHub

おわりに

App::BigQuery::Importer::MySQL はお手軽に MySQL から BigQuery へテーブルを同期できるツールです。
ログ系テーブルに対する集計にマスタデータを JOIN したいという方にお勧めです。

お使いいただく中で不具合を見つけられたり、機能要望などがありましたら github リポジトリのほうまで issue / pull reuqest をいただければと思います。