ペパボ社内ISUCONで撃沈しました

ISUCONとは「いい感じに スピードアップ コンテスト」(Iikanjini Speed Up CONtest)の略だそうで、課題として与えられたWebアプリケーションを制限時間内でチューニングし、ベンチマークツールによる得点を競う大会です。

本物の方は年1回開催され、賞金はなんと100万円。今年は9/17〜18に予選が行われますが、技術力やモチベーション向上の良い機会であることから、社内で開催される事例も増えているようです。
社内ISUCONにはpixivカヤックなどの事例があります。

その流れに乗ってペパボでも開催することになり、今日がその本番。
参加者は全員ではなく立候補ですが、新卒エンジニアはWebアプリ・Webオペレーション研修と学んできたタイミングなので時期的にもちょうどよく、研修の一環のような形で参加しました。

事前知識なしで突っ込むと何もできずに終わりかねないことから、事前に先輩からISUCONとは何かや、基本的な進め方のレクチャーは受けていました。

が、結果は……見事に撃沈。。。

実力を考えればハイスコアは難しいと思ってはいたが、最後までエラーが直せず完全にお手上げ状態になってしまった。
途中からベンチマークが失敗し続けたので、「ここの設定は知ってるぞ!」とできる範囲でチューニングしてもそれが正しいかどうかまったくわからず、闇の中をひたすら歩き続けるつらさだった。

速度が出なかったりエラーが出る原因は複雑に絡み合っていて、そのチューニング自体は正解だったけど実は主要因は別のところにあったとか、原因の見当がつかないと迷走して時間をロスすることになってしまう。

近視眼的になりすぎた

エラー対処をするうちに近視眼的になりすぎたのも反省点。
先輩によるレクチャーや参考記事は少し読んでいたので、MySQLのslow_query_logなど、まずきちんとログを読んで原因のあてをつけたりなど、開始当初はよい心構えでできたと思う。
しかしアプリに500エラーが頻発する問題が発覚。おそらくチューニングポイントとして用意されていたものだが、その原因が一向に特定できず、ベンチマークが全然通らなくなった焦りもあり、その対処で頭が一杯になってしまった。

今回の参考実装にはRubyとPHPが用意されていたので、Rubyでエラーが出続けるならPHPで試してみたらどうだろうとか、アプリケーションサーバはPumaだったがUnicornに変えてみるとか、試してみることはいろいろあった。
Unicornは研修でも使っていて比較的慣れているのもあり試したのだが、その作業タイミングでベンチマークツールがちょっと不安定になっており確認が有耶無耶になってしまった。
Unicorn化がうまくいっていなかったのか、変更はできたけどエラーは出たままだったのか、それとも単にベンチが不安定で失敗していただけだったのか……それもわからない。

アプリケーションに課題はいっぱいあったのに

ミドルウェアの対処に時間をかけすぎた結果、コードやデータベース構成をきちんと読み込んでアプリケーションを把握することができなかった。
「オペレーション(System Engineering)で点を守り、 プログラミング(Software Engineering)で点をとる」のとおりで、もっと早くアプリケーションコードの課題解決に入るべきだった。

リクエストのボトルネックを見るのにブラウザの開発者ツール使えばわかりやすいじゃんと気付いたのはだいぶ後になってからだし、画像を毎回DBから取り出していることがわかって、ここを静的に、あるいはキャッシュにできればよさそうだとわかってももう時間はなかった。
SQLのチューニングも、データベースの行数を確認して効果がよく出そうなポイントだけに絞るとか、SELECT *を必要なカラムだけ指定する基本のリファクタだけはやるとか、慣れていなくてももっとやりようがあったなと。

「原因の切り分け」や「優先順位」って本当に大事だなと痛感する一日だった。
うう……次はリベンジするぞ。

参加したチームの皆様、そして環境構築・運営のtnmtさんとpyamaさん、おつかれさまでした。


3回目のシン・ゴジラはIMAXで

また金土日と日記を書かない週末になってしまった…
用事がないときは安定して書く時間はとれるけどネタがなくなり、出かけたときはネタはあるけど日記書く気力がなくなるという。

台風も近く、天候・気圧も不安定で体調もよくはないけど、がんばっていこう。

さて

土曜日に3回目のシン・ゴジラを見に行った。IMAXで。
だいぶ覚えてきて細かいところを見れるようになってきた。
ラストの人型のあれにようやく気付けた。

3回目のシン・ゴジラはIMAXでした

Hiroshi Shimojuさん(@shimoju_)がシェアした投稿 -

前から3列目で見たのだけど、これだけスクリーンが大きくてしかも近いとは思わなかった。おかげで首がちょっと痛い。
前列では視界に収まりきらないほどで、おっさんたちのシワがよく見えた。とてもよく見えた。

IMAXシアターではブランドを強調していきたいようで、上映前にIMAXの魅力を示すデモ映像が流れていた。飛行機の轟音や針の落ちる繊細な音まで明瞭なのがわかるデモとなっている。
予告編も音がよかったのでIMAX用に調整されていそうな感じで、「この音で聞けるから次もIMAXでよろしくね!」と訴えているようだった。

立川シネマシティの極上爆音上映にも行ったが、音のインパクトはやはり立川にかなわないが、明瞭さや映像と合わせた没入感はIMAXが上を行くかなと思った。
スクリーンのでかさは違うな〜と思ったので、シネマシティには6000万のスピーカーの上に、うん千万(億?)の最新映像システムの導入にも期待したいところです。
がんばってシネマシティに貢ぎましょう。

最後に上映中の勘違い。


内定者が来た

新卒7期生となる内定者が職場見学に来た。

既に一部の人はアルバイトに来ていたりこの前のバーベキューなどで会っていたが、全員と会うのはこれが初めてだ。
これからももう少し増える予定だそうだ。

配属まもなくだし特にエンジニアはまだ研修中なのにもう次か〜〜〜、みんなこんな気分で新人じゃなくなっていったのだろうな。

ということなので、まだまだ募集中だそうです。


Webオペレーション(インフラ)研修が佳境に入りました

数日書かないだけでなかなか筆が進まなくなるね…

さて、Webオペレーション(インフラ)研修も佳境に入った。
研修の概要についてはWebオペレーション研修、そして夏季休暇に書いたとおりで、いまはApp・DBの冗長構成ができて基本的な構成の完成に近づいた。

これからは監視機構の導入や、本番環境への適用(インスタンス作成、Puppet適用、アプリのデプロイまでの一連の流れ)にまだ手作業が残っているところがあるので、自動化を進めたりなど本番で運営できるような完成度を高めていく作業となる。

また、今回は本番環境ではDockerを使わないので、docker-composeが勝手にやってくれていたネットワークやDNSなどの部分もきちんと考慮して作っていく必要がある。
例えば、実運用を想定してグローバルIPを持つインスタンスはリバースプロキシとSSH踏み台サーバのみとするのだが、試しにローカルネットワークしかないインスタンスを作ったらもちろんインターネットに出られずapt-getも何もできなかった(そりゃそうだ)。つまりNATしてあげる必要があり、そのための設定を組んだりしている。
あとはLAN内の名前解決の仕組みもないので、ここもDNSサーバーを立てたりして便利にしていく必要がある。いまは/etc/hostsを職人の手によりひたすら編集している。

あたたかみのある手作業はもういやだ。

さらに余力があればオートスケール対応やCDN、リバースプロキシ冗長化など、挑戦できる課題は山ほどある。
あと数日しかないが、ようやく基本構成ができてやりたい課題も出てきて楽しくなってきたのでいろいろ試していきたい。


日記復帰〜シン・ゴジラ〜BBQ〜自宅勤務

ついに日記が途切れてしまった……!!
このままだと挫折になってしまうので、まずざっと4日間をふりかえり。またがんばるぞ。

金曜日

金曜日はオフィスでバータイムがあり、そこでシン・ゴジラの話を聞き勢いのまま見に行って深夜帰宅

土曜日

土曜日は立川にシン・ゴジラ極上爆音上映を見に行き、疲れからか寝落ち

日曜日

日曜日は会社のバーベキューがあり、二次会には行かなかったが結構酔っていてすぐに寝た

月曜日

月曜日は台風のため自宅勤務にし、筋肉痛な上に体調もよくなかったのですぐ寝る

リズムが一度崩れると立て直すのがなかなか難しいね……
週1とか2にするとなかなかリズムにならなそうなので、やはり毎日続ける気持ちでやって、仕方ないときは仕方ないと考える方がよさそう。

あ、シン・ゴジラはとてもおもしろかったです。
週末にでも感想ブログ書きたいね!


無事に社会復帰に成功、しかし

とても疲れた。Dockerに悩まされる夏。

休み中は寝るのが遅かったので、日付変わる直前にブログ書くような癖になってしまっていて割と厳しい。
対策が必要そう。

「何かしら毎日書く」という第一目標は達成できてはいるけど、記事ストックがなくなってから文字数も減ってきたしどうしようかなと。
とはいえまだ1ヶ月も経っていないので、結果も見ずにころころ方法を変えるよりはまず続けて、結果を考えてみてからでしょうか。



卓球が緊張感ありすぎて胃が痛い

オリンピック、男女ともに熱い試合が多い卓球。

フィールドが狭く、ラリーの展開が速いからなのか選手同士の熱量がすごくて、得点するたびに叫ぶ選手も結構多い。
流れや勢いといったものがすぐに変わり、1ゲームは圧勝したのに次は全然とれなかったり、その逆もあるのもおもしろい。

見ているだけなのに胃が痛くなる。

女子団体はいま見てるけど、男子団体は18日朝なので残念ながらお仕事…長期戦になったら見れないぞ……


テレビ番組のBGMにアニメ劇伴はどれくらい使われているのだろうか

アニメを見るようになってからテレビを見ていると、アニメ劇伴が結構BGMとして使われていることに気がつく。
今日は日テレのオリンピック番組で、選手紹介VTRのBGMにselectorとマジェプリの劇伴が使われていた。

全然詳しくない自分が知ってる範囲でも結構気付くので、実はテレビ番組では結構な割合で使われているのかもしれない。

この前のNHK「超絶 凄ワザ!」では、クライマックスシーンでガンダム鉄血のオルフェンズが流れて爆笑したことがある。
検索したら言及してた人がいた。どうやらUC→鉄血→カバネリというアニメ劇伴連続だったらしい。この回に限らず凄ワザではアニメ劇伴を多用しているようだ。

ピストンのリングをフッ素加工したモノして滑りをよくしたところの音楽がユニコーンから鉄血のオルフェンズの予告に変わった。そして完成した装置を披露するところの音楽が甲鉄城のカバネリという(笑)。
超絶 凄ワザ!主婦を救え 急速冷凍対決 中小企業がダイキンが挑戦する!: こんなことしてません?

単なる推測だけど、アニメ劇伴がBGMに使いやすい理由を考えてみた。

  • 有名ドラマの劇伴は色がついていて、それ自体が演出である場合を除き使いにくいのではないか
    • 逆に言えば、昔のドラマや比較的マイナーなドラマは結構使われてる気がする
    • 草彅剛主演の「恋におちたら~僕の成功の秘密~」の劇伴は今でもかなり聞くなあ
  • アニメでは有名なものでも相対的に言えば知られていないので使いやすい
  • 感覚値だけどアニメはドラマより音楽に感情を込める傾向がある(たぶん映像そのものに音がないから)。印象的な曲が多く、派手な曲からしんみりした曲まで揃っているのではないか
  • それならゲーム劇伴も使われそうだけど、ゲームはJASRAC信託されていないものが多いと聞いた気がする。それで使いにくいのではないか
  • JASRAC信託されていれば包括契約で使える

こんな感じで、「比較的知られていない上に様々な作風の曲が揃っており演出として使いやすく、しかもJASRAC信託されているものがほとんどなので包括契約で使える」ことがアニメ劇伴がよく使われる理由なんじゃないかなあと思った。


BGMには困らない

休暇も後半、連日家に引きこもっています。
まったく人と会ってないわけじゃないけど、友達はうちに来ることが多いので自分は家から出なくてもいいという。

深夜〜朝はオリンピック、昼は甲子園があるのでだらだらテレビを見ていてもいいし、BGMには困らない。
技術関連では、まとまった時間でないとやりにくいことということで、tmuxやNeoVimを始めてみたりzshをカスタマイズしたりなど、ターミナル環境の見直しを進めている。

休暇終わるまでに一通り形にできるといいな。