パフォーマンス改善バトル!社内ISUCONを開催してみた
こんにちは! 社内ワークショップ運営チームの@C058です。
流行りの社内ISUCONを弊社でも開催しました! 今回は、社内ISUCONについて、準備したことと開催結果を報告します。
開催の目的・ゴール
目的
開催にあたってISUCONでの目的を設定しています。
- 技術に特化したイベントの開催
- エンジニアの技術力向上・ボトムアップ
- 得意なことを布教できる空気づくり
ゴール
- ISUCONを楽しんでもらう(参加してよかった と思ってもらえる)
- メンバーがISUCONに参加することで苦手・知らないことに気づくこと
企画・運営について
以下、社内ISUCONを企画・運営をするにあたってやったことになります。
- 他社事例調査
- 開催に向けて準備
- 答え合わせ/共有会の開催
他社事例調査
他社事例を調査し企画のために必要なことを洗い出しノウハウを集めました。 ゼロベースで企画するより、計画に見通しが立ちやすく ISUCONの問題作成やISUCON運営に集中することが出来ました。
参考にした記事
開催するために用意/準備したもの
- 競技用問題・競技ルール
- 競技用サーバー各種用意
- 競技中の連絡用slackチャネル
- (作業用の会議室/お菓子)
競技用問題・競技ルール
競技用問題
ピクシブ株式会社の 社内ISUCON用問題を一部改変したものを採用しました。
ベンチ、テスト用はそのまま流用しています。
競技ルールも問題と一緒に公開されていたものを適用しています。
競技用サーバー各種用意
競技者チューニング用インスタンス
GCEインスンタンスです。
n1-standard-1 + CPUを2つにカスタマイズしたものをベースに
開発用イメージを流し込み、問題を設置。
スナップショットを用意し、競技チーム数分作成しました。
ベンチマーカー用インスタンス
GCEインスンタンス n1-standard-2 を1台用意。
ピクシブ社のベンチマーカーをビルドし準備しました。
ポータル作成
こちらのソースをそのまま採用し、作成しています。
競技中の連絡用slackチャネル
競技中のトラブル、質問対応の為にslackチャネルを作成しました。 どのチームがベンチを実行したか共有する目的で、ベンチマークの起動・終了時の通知も行っています。
開催報告
開催日/参加者
開催期間
2017/03/10(金) 16:30 ~ 2017/03/13(月) 23:59
※競技終了時の最終スコアで評価
多くのメンバーに参加してもらいたい為、 業務調整が可能な範囲内での参加を推奨という形で、 金曜の午後から、月曜までの4日間/中期期間開催にしています。
参加者
募集の結果、2名1チームを作成。 合計4チームで競いました。
結果
結果は上記の画像の通りです。
4日間の長期間開催となり、作業できる時間が限られたメンバーもいたため
1位と4位で大きく差がつくカタチになりました。
1位のチームはnginxのチューニング、ソフトウェアの改修など中心に
基本に忠実にチューニングを行った結果とのこと。
開催中の雰囲気
参加者からの感想
開催後、参加者にアンケートをとったところ 開催に際しての目的、ゴールはなんとか達成することができました。
- 普段はアプリの最適化しか考えないので、サーバ自体の最適化という視点が増えてよかった
- インデックス貼ったりとか、バージョンアップとか普段の業務でも役立てるようなパフォーマンスの知識を磨くことができて大変勉強になりました!
- もっと勉強して、次回はもっと良い結果を出せるように、頑張ります!
答え合わせ/共有会の開催
ISUCONが終了したあと、社内勉強会の時間に各チームで作業したことの共有会を行いました。
ボトルネックの見つけ方、チューニングのアプローチ方法、やってみて成功したことだけでなく、失敗したことなど知見の共有が行えたと思います。
また、各チームでの共有の他に、 運営からは問題の内容の共有とチューニングできそうな内容の共有を行いました。
最後に
以上が社内ISUCONについての報告になります。
今回は、「社内ISUCONをするぞ!」と言い出してから企画検討・各種調整など含め、約1か月で開催できました。
企画・運営の準備は想像以上に面倒でしたが
ソフト/ミドルウェアの知見がたまり 参加者以上に学びが多かったと思います。
初めての社内ISUCONということで、今回は、既存の問題を利用させていただきましたが、 次回は問題作成からやってみたいと思います。