ravelll の日記

よしなに

ISUCON9 予選に参加してきました #isucon

チーム泥酔チャンスとして同僚の @manicmaniac, @mpls104 と共に参加してきました。ISUCON 予選に参加するのは ISUCON7 ぶりで、ポジションは当時から変わってインフラ担当。

やったこと(〜前日)

  • リハーサル環境の構築
  • デプロイスクリプトの準備
  • 設定をまとめた nginx.conf, my.cnf の準備
    • メルカリ社が出題担当なら nginx(OpenResty) + MySQL かな、そうに違いない!そうであってくれ頼む〜という心境でした(h2o や PostgreSQL に疎い)
  • puma, nginx, MySQL の設定・インストールの素振り
  • ログ解析の素振り
    • kataribe, mysqldumpslow, pt-query-digest

やったこと(当日)

アプリケーションのコードはほとんど変更せずに終わってしまった。

  • インスタンス作成
  • コードを commit
  • ミドルウェア周り色々
    • 設定のバックアップ、ダンプ、設定変更、ログ解析など
  • /users/transactions.json の改善
    • SQL の複雑さを ruby に押し付ける + INDEX 貼る感じで改善を試みるも失敗、断念
  • /buy の自商品購入時に 403 を返す処理をトランザクション外で行う
    • SELECT FOR UPDATE 回避の意図だったけどよく分からんしとりあえずやる〜?くらいの感じだった

写真は当日のホワイトボードの様子。書き殴られている。

f:id:ravelll:20190908181816j:plain
書き殴り

結果

4010点でした。
このスコアには開始3時間くらいで到達した(ログを見ると12:47:47)のだけど、5時間そこから伸ばせず終わってしまった…

f:id:ravelll:20190908220829p:plain
この時点で5位だった

POST /buy で 403 が増え続け、何が理由なの〜とみんなで数時間唸っていました。ちゃんと復習せねば。

反省

  • とにかく準備に余裕がなかった
    • 8月半ばまでメンバー募集してたり体調悪かったりスケジュールが詰まってたりした。余裕のあるスケジュール大事
  • ドキュメント読みつつアプリケーションをじっくり触る時間を取ればよかった
    • ISUCON7 のときも言った気がする…
  • puma のログをちゃんと出しつつやればよかった
    • 事前に素振りできてなくて、なあなあで出さないまま続けてしまった
  • アプリケーションのコードを一通り眺めて怪しい要素をリストすれば良かった
    • 終わってから "そういや bump って何?" となってダメだった
    • ボトルネックとなっている処理の周辺しか眺めなかった
  • 明確に役割分担をしておくべきだったかも
    • A さんは X についての知見をためておき当日は手を動かしてもらうこと、というのを合意して学習を効率化すべきだったかも
      • 一部調査が被った
    • インフラの設定を複数人がカジュアルにいじって知らないうちに死んでた、ということが何度かあった

今回は事前準備が全然できなくて "みんなで楽しめればそれで優勝" くらいの気持ちだったのだけど、いざ成果を出せずに終わるとやっぱり悔しい。前回はウオオオとなる瞬間が一度はあったのだけど、今回はそういった機会が本当に一度もなくヌル〜ッと終わってしまったのもやや悲しかった…とはいえ歯が立たなかったということはそれだけ学ぶべきことが多かったということなので、後日ちゃんと振り返りして糧にしたいですね。

そして次回があるならばもっと余裕を持って臨めるといいな。次回のメンバーを早速募集します。当方ピアノ兼 Ruby

builderscon 2019 に参加してきた

builderscon に参加するのは第1回の 2016 ぶりで、当時と比べてかなり規模が大きくなっていて驚いた。
カンファレンスは持病の問題でどうしても寝落ちしてしまう*1ので最近は参加を躊躇しがちで、今回もやはり一部のトークは寝落ちしてしまったのだけど、好奇心を刺激するトークの連続でとても楽しかった。

特にスーパーカミオカンデの話はほぼ終始馴染みのない話で、"知らなかった、を聞く" ことが最も強く満たされたトークだった。 スーパーカミオカンデの一般公開の抽選も応募するぞ。もしも当たると公開日の翌日 VimConf なのでスケジュールが大変なのだけど、それでも見てみたいなあ。

また DQNEO さんのコンパイラをライブコーディングで作っていくトークには痺れた。途中から会場全体でモブプログラミングをしているような状態になったのも楽しかった。
トークを聞いて僕もコンパイラ書くぞ!!!と熱が高まったので早速 DQNEO/HowToWriteACompilerruby で再実装する形で書いてみた。気が向いたときに少しずつ拡張していけるといいな。

github.com

またトーク以外でも元同僚や知人と何人か会って話せたり、なかなかお会いできる機会がなかった id:a-know さんとついにお話しできたりしてとても良かった。
高まった気持ちを維持して明日からもやっていくぞ。週末は ISUCON 予選もある。

写真は1日目(30日)のランチにビリヤニ食堂で食べたスペアリブのビリヤニです。めっちゃ良かった。

f:id:ravelll:20190901222733j:plain

*1:特発性過眠症。1〜2時間を超えてトークを聞いてると次第に眠くなって瞬間的に寝ては何とか起き、を繰り返す状態にしばらくなる

転職のご報告

Twitter でもそれとなく話題を出してましたが、わたくし転職いたします。

from: さくらインターネット株式会社
to: Quipper Limited

エントリをご覧の皆様におかれましては、今後ともご指導ご飲酒のほど、よろしくお願いいたします。ちなみに今月中は無職です。
後日に近状報告も兼ねて詳細を書く可能性があります。