イベントレポート

真夏の激戦! pepabo ISUCON1 (社内ISUCON) を開催しました

イベントレポート

春はあけぼの、秋はP山こと、ホスティング事業部の@pyama86です。台風による延期も危ぶまれましたが、8月30日にペパボで社内ISUCONを開催しました。今回はペパボのISUCONの内容や、ともに運営を担当した@tnmtとともにお届けします。

出題

今回ペパボでは後述の理由からピクシブ株式会社の問題をカスタマイズした問題を出題しました。 ISUCON6出題チームが社内ISUCONを開催!AMIも公開!! 自社のISUCON出題、さらには、環境まで公開してくれたピクシブ社有難うございました。

僕自身は開催時点ではISUCONで惨敗したことがなかったどころか、出場したこともありませんでした。むしろ本戦で優勝できる思い込んでいた僕がなぜ出題者になったのかというと、ペパボ内で半年ほど開催がペンディングになっていたのを見て、「流用して、ちょっとカスタマイズすれば社内ISUCONとかちょろでしょ?僕だし」と錯覚したことが発端です。しかし、その時は開催直前朝方までインスタンスの構築をやっている未来など予想していませんでしたし、なにより、もう出題するなんて言わないよ、絶対。

さて、実際に行ったカスタマイズの内容としてはInstagram風のアプリからSlackを98年代ごろまでロールバックしたかのような、発言するたびに画面が再描画されるハートフルなチャットツールにカスタマイズし、言語についてはペパボ内で利用頻度の高いRuby、PHPに限定して準備しました。


ポータルサイトについては、ベンチマークを実行するSidekiqのジョブサーバを兼ねていたので、与えられる負荷を均等にするために各チームごとに準備しました。

環境構築については、我々が社内ISUCONを開催する一番の目的は、本家で優勝することにあるため、継続的に開催できるように社内での利用頻度が低いAnsibleから、Chefへのプロビジョニングツールの変更なども合わせて行いました。 さらには、開催後においても、チューニングの内容を普段の業務にフィードバックできるよう、運営チームからチューニング例を紹介するなど、開催して終わりとならないような取り組みも実施しています。この点については社内で継続的に開催するにあたって大事なポイントだと考えており、エンジニア以外から見ると業務時間内に遊んでいると見られてしまう側面もあるので、しっかりと業務にフィードバックすることが必要だと思います。

今回アプリ、プロビジョニングを僕が担当し、インフラについてはtnmtが担当したので記事を引き継ぎたいと思います。最後に、何気なく作っていたテストデータの内容がバレてしまったので、テストデータを作るときは気をつけてくださいの教訓を紹介します。


今年の夏の思い出はap bank fes 2016、技術部インフラグループの@tnmtです。 本家ISUCONには過去3回参加しています。

開催に関してもですがレポートも遅くなってしまい相方のpyamaには申し訳ない限り。ここからはバトンタッチして、インフラ周りや競技当日についてまとめます。

インフラ周り

競技に利用するインスタンスについてはペパボのプライベートクラウド "Nyah" を利用しました。Nyahではペパボの各サービスを実際に運用しており現在も継続的に改善を行っています。この辺りについては第5回ペパボテックカンファレンス〜インフラエンジニア大特集〜で私がお話させていただいたスライドをご覧ください。

継続的改善ということで、現在メインで運用しているOpenStack Havanaのスタック(Nyah-classic)とは別にMitakaのスタック(新Nyah)を構築してきましたが、利用の目処がついたため今回検証を兼ねて新Nyahを利用しての開催としたのが大きなところです。

競技用の設計としては以下のようにし、互いのチームに影響が出ないようにしました。

  • Availability Zone (AZ) を各チームごとに作成する
  • Nova の compute node を一台ずつAZに所属させる
  • 各AZつまり1 compute nodeにチームごとの競技用・ベンチマークのインスタンスを作成する
    • このプロビジョニングに関しては pyama の先述の通り Chef で行う

直前まで準備でバタバタとしていましたが、ギリギリ間に合って当日を迎えました。

競技当日

出来るだけ多くのチームに参加してもらいたい、また社内ISUCONの問題に取り込むことがチューニングの学習になり、結果業務改善にもつながるとも考えていたため、競技は平日の業務時間帯に開催させてもらいました。ご理解ご協力いただいた各サービスのメンバーに感謝です。おかげで今年の新卒エンジニアを含め東京・福岡から 10チーム 28名 という多くのメンバーが参加出来、以下のように半日で開催しました。

  • 12:30 開会式・競技開始
  • 18:00 競技終了
  • 運営チームにて再起動後、採点し、後日結果発表

本家ISUCON同様気分を盛り上げるようなオープニングを挟み、当日ルールを公開し競技スタートです。こちらはオープニングのスライド1枚目。


競技場所は特別準備していなかったのですが、1メンバーの自席や、フリースペースを利用しチームで集まって作業している姿が各所で見られました、フリースペースがたくさんある会社最高です。(写真撮っておけば良かった!)また観戦用のポータルも別途設けており、大きなスコアの変動がある度に社内の #dev Slackチャンネルでは参加していないエンジニア達も盛り上がっていました。出題者はニヤニヤしながら見回りです、役割を終えて一息つけたのでこの時が一番楽しかったかも。

競技結果

最終計測の結果、優勝を含め3位までを福岡PHP勢が独占するという結果になりました。東京のエンジニアは悔しかったのではないでしょうか。Rubyを選択したチームは初期実装のスコアが出にくく、チューニングに入るまでいくつかミドルウェア周りの改善が必要だった為、その間にPHPを選択したチームが確実にスコアを伸ばしたという印象です。

フィードバック

各チーム明暗分かれましたが、多く聞こえてきたのは以下の感想です。

  • とにかく楽しかった
  • スコアが出なくて悔しくてたまらない
  • ISUCONがどういうものか分かって良かった

いずれも、本家ISUCONにもいえる感想だと思いますし "本家怖い" と思っていたメンバーの敷居を下げられた、また楽しんでもらえたという意味では大成功だったと思います。参加メンバーのブログエントリもありますのでまとめておきます。皆イケてる感想ありがとう。

本家 ISUCON6 また pepabo ISUCON2 について

前述の通り、本家で優勝するというのが社内ISUCON開催のきっかけです。既に予選は終わっていますが ISUCON6 にも弊社から5チームほどが参加し、1チームが本選へと進んでいます。昨年よりも予選参加チームは増えており良い感じ。もちろん一朝一夕で優勝出来るほど甘くもなく、今回のpepabo ISUCON1もまだ始まりに過ぎないと思っています。ペパボのエンジニアは現在100人弱、今回いずれにも参加出来なかったメンバーに向けても、次回開催を検討して引き続き盛り上げていきたいところです。ISUCON6も10月末の本選を残しています、俺たちの夏はまだまだ終わらない!!