% cat

初めて社内ISUCONを開催したらめっちゃ盛り上がった

社内椅子コン
みなさん ISUCON というものをご存知でしょうか?
ISUCON とは...

「お題となる Webサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル、それが ISUCON です。」

ISUCON 公式サイト description より)

1年に1回開催されるパフォーマンスチューニングバトルのことなのですが、これを完全社内向けに開催したらめっちゃ盛り上がりました。

「 ISUCON ってすごい人たちが、なんかよくわからない高度な技術レベルで競い合うものでしょ?」
って思っている方は多いかもしれません。
全然そんなことないです、是非他の会社でも社内 ISUCON をやってみてほしいです。

なぜ開催したか

会社全体のエンジニアの技術力を上げたいなと思っていて、その手段の1つとして ISUCON を実施しました。
特にインフラが苦手なメンバーが多いため、インフラの知見が得られるもので、勉強会という形ではなく実際に体験できる場を作りたかったというのが理由です。

開催までの流れ

問題を考える

今回は初めての開催で、かつ、そこまで準備に時間もかけられない事情もあったため既にネット上にある問題を使わせてもらおうかと思い pixiv さんが社内 ISUCON を開催した時の問題を使わせていただきました。( pixiv さん、ありがとうございます)

https://github.com/catatsuy/private-isu

当日までにやったこと

  • 問題の中身確認(実際にパフォーマンス改善して雰囲気を掴む)
  • Docker を使って環境がすぐにできるように調整(環境構築で1日終わってしまわないように)
  • デファクタリング(インフラ設定とかアプリケーションコードをいじってパフォーマンスをより悪くしておく )

などなど

チーム分け

チーム戦なのでチームを作るのですが、自由に作ったり、ランダムにするとどうしてもチームバランスが悪くなってしまいます。
またインフラが苦手なメンバーが結構いることを考慮して、各チームにインフラが強い人を配置して全体バランスが極端に悪くならないように調整をしました。

後、当日の救済措置としてヒントシステムも用意しました。

開催当日

いよいよ開催当日!
そもそも本場の ISUCON に参加をしたことがなかったので、どういうテンションでやればいいのかとかもよくわからないのですが、スタッフメンバーが素晴らしいマイクパフォーマンスで盛り上げてくれました。

ルール説明後に、早速チームごとに別れて開始!!!

何をするか考え中...

集中してます
本気です

何やら悪巧みをしてます。

お昼休憩...を挟んでの中間発表!
浮かれている人がいます
社内 ISUCON 中間発表!

昼休憩後の作戦会議
やることを決めて、担当を割り振りしてます
dsc_0041

そろそろ眠なってくる頃
気合いを入れてます


最終結果...
4チームのうち3チームが 23000点前後のところ
なんと...!

50000点超えを叩き出した CTO のチームが優勝でした!!!

終了間際に爆上がりしてます

振り返り

まず乾杯!お疲れ様でした!

優勝が決まった後、各チームでどんなことをやったのかの振り返りをしたのですが、これがもう最高に面白かったです。

各チームごとに発表をしたのですが

チームA 「まずDBにインデックスを貼りました」
全員 「はいはい、やりますよね〜」

チームA 「あと、nginxで余計なプロセスがたくさんあったのでプロセス数を減らしました」
チームD 「え、まじで!全然気づかなかったー」

みたいなやりとりができて、各チームでやった知見がそれぞれ集まっていくのが勉強になるし、最高に楽しい。

Ruby で書かれたプログラムを全部 Crystal に書き直そうとしたチームもいたり各チーム戦略も見えて面白いです。Crystal 作戦は結局失敗に終わりましたが...

Crystal とは...
Ruby のようにかける静的型付けのコンパイラ言語です。
https://crystal-lang.org/

優勝チームが何をやったか気になるところですが、技術的な内容はまた別途ブログで公開予定です。

チームごとにやったこと発表してます

なんかこの時間のために ISUCON をやったと言っても過言ではない。
これは本場の ISUCON ではなかなかできない、社内 ISUCON ならではの面白さですね。

ISUCON やってみて

インフラに触れるいい機会になった
 とか
普段仕事を一緒にする人とは別の人とチームなれて、その人のスキルとか考えを知るいい機会になった
などなどの感想がありました。

みんなすごい楽しんでくれた感じで、開催してよかったなーという気持ちでいっぱいです。

スタッフとして参加してくれたメンバーに色々助けてもらって、スライド作ってもらったり、開発環境作ってもらったり、得点表示するやつ作ってもらったり、司会やってもらったり、他色々。
むしろ自分何もしてないじゃん、という感じでした。
スタッフの素晴らしいフォロワーシップのおかげで無事開催することができました!ありがとうございました!

というわけで、社内 ISUCON はオススメです。

最新記事

「良いプロダクト」とは、どんなプロダクトのことでしょうか?

こんにちは! プロダクトオーナー兼開発部マネージャーをしている長谷川([@roki1801](https://github.com/roki1801))です。普段は山形県山形市にあるベーシックのサテライトオフィス「[山形ラボ](...

roki1801
2019年03月29日

大量アクセスに耐え得る在庫管理システムの構成を考え実装してみた

皆さん「在庫管理」ってどうしてます?itemsテーブルに、stockカラム作ってdecrementしてますか? まぁ正直、それでも良い感じしますよね。楽だし何やってるかわかりやすい。 しかし! **超人気商品に超ア...

mmusasabi
2019年03月13日

kubernetes で Ruby on Rails を動かして kubern...

巷で話題の kubernetes ですが、とってもとってもとっつきにくいですよね そんな kubernetes ですが手元で動かすことができたので解説してみます (情報が間違ってたらごめんなさい! 🙇) 目標はこちら ...

tkhr0
2019年03月07日