みなさん ISUCON というものをご存知でしょうか?
ISUCON とは...
「お題となる Webサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル、それが ISUCON です。」
(ISUCON 公式サイト description より)
1年に1回開催されるパフォーマンスチューニングバトルのことなのですが、これを完全社内向けに開催したらめっちゃ盛り上がりました。
「 ISUCON ってすごい人たちが、なんかよくわからない高度な技術レベルで競い合うものでしょ?」
って思っている方は多いかもしれません。
全然そんなことないです、是非他の会社でも社内 ISUCON をやってみてほしいです。
なぜ開催したか
会社全体のエンジニアの技術力を上げたいなと思っていて、その手段の1つとして ISUCON を実施しました。
特にインフラが苦手なメンバーが多いため、インフラの知見が得られるもので、勉強会という形ではなく実際に体験できる場を作りたかったというのが理由です。
開催までの流れ
問題を考える
今回は初めての開催で、かつ、そこまで準備に時間もかけられない事情もあったため既にネット上にある問題を使わせてもらおうかと思い pixiv さんが社内 ISUCON を開催した時の問題を使わせていただきました。( pixiv さん、ありがとうございます)
https://github.com/catatsuy/private-isu
当日までにやったこと
- 問題の中身確認(実際にパフォーマンス改善して雰囲気を掴む)
- Docker を使って環境がすぐにできるように調整(環境構築で1日終わってしまわないように)
- デファクタリング(インフラ設定とかアプリケーションコードをいじってパフォーマンスをより悪くしておく )
などなど
チーム分け
チーム戦なのでチームを作るのですが、自由に作ったり、ランダムにするとどうしてもチームバランスが悪くなってしまいます。
またインフラが苦手なメンバーが結構いることを考慮して、各チームにインフラが強い人を配置して全体バランスが極端に悪くならないように調整をしました。
後、当日の救済措置としてヒントシステムも用意しました。
開催当日
いよいよ開催当日!
そもそも本場の ISUCON に参加をしたことがなかったので、どういうテンションでやればいいのかとかもよくわからないのですが、スタッフメンバーが素晴らしいマイクパフォーマンスで盛り上げてくれました。
ルール説明後に、早速チームごとに別れて開始!!!
何をするか考え中...
集中してます
本気です
何やら悪巧みをしてます。
お昼休憩...を挟んでの中間発表!
浮かれている人がいます
昼休憩後の作戦会議
やることを決めて、担当を割り振りしてます
そろそろ眠なってくる頃
気合いを入れてます
最終結果...
4チームのうち3チームが 23000点前後のところ
なんと...!
50000点超えを叩き出した CTO のチームが優勝でした!!!
終了間際に爆上がりしてます
振り返り
まず乾杯!お疲れ様でした!
優勝が決まった後、各チームでどんなことをやったのかの振り返りをしたのですが、これがもう最高に面白かったです。
各チームごとに発表をしたのですが
チームA 「まずDBにインデックスを貼りました」
全員 「はいはい、やりますよね〜」
チームA 「あと、nginxで余計なプロセスがたくさんあったのでプロセス数を減らしました」
チームD 「え、まじで!全然気づかなかったー」
みたいなやりとりができて、各チームでやった知見がそれぞれ集まっていくのが勉強になるし、最高に楽しい。
Ruby で書かれたプログラムを全部 Crystal に書き直そうとしたチームもいたり各チーム戦略も見えて面白いです。Crystal 作戦は結局失敗に終わりましたが...
Crystal とは...
Ruby のようにかける静的型付けのコンパイラ言語です。
https://crystal-lang.org/
優勝チームが何をやったか気になるところですが、技術的な内容はまた別途ブログで公開予定です。
チームごとにやったこと発表してます
なんかこの時間のために ISUCON をやったと言っても過言ではない。
これは本場の ISUCON ではなかなかできない、社内 ISUCON ならではの面白さですね。
ISUCON やってみて
インフラに触れるいい機会になった
とか
普段仕事を一緒にする人とは別の人とチームなれて、その人のスキルとか考えを知るいい機会になった
などなどの感想がありました。
みんなすごい楽しんでくれた感じで、開催してよかったなーという気持ちでいっぱいです。
スタッフとして参加してくれたメンバーに色々助けてもらって、スライド作ってもらったり、開発環境作ってもらったり、得点表示するやつ作ってもらったり、司会やってもらったり、他色々。
むしろ自分何もしてないじゃん、という感じでした。
スタッフの素晴らしいフォロワーシップのおかげで無事開催することができました!ありがとうございました!
というわけで、社内 ISUCON はオススメです。