こんにちは。ウィルゲートでインフラを担当している片岡です。
今回は、先日開発室で行った「社内 ISUCON 」について記事を書きたいと思います。
まず ISUCON とは、「お題となる Web サービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトル」です。(公式サイト: http://isucon.net/ ) 今回はその社内版ということで、ピクシブさんが公開している問題を使わせていただくことにしました。ピクシブさんありがとうございます!
ウィルゲート以外でも、社内の研修などで取り入れているところもあるようです。
- Yahoo Japan さん: https://techblog.yahoo.co.jp/event/private-isucon/
- GMO ペパボ さん: http://tech.pepabo.com/2016/10/04/pepabo-isucon-1/
- NTTコミュニケーションズさん: http://qiita.com/iwashi86/items/97a7a97b59492cff181a
開催目的
普段の業務では見えてこない自分自身の課題、チームとしての課題を確認できるいい機会だと思い、開催に踏み切りました。 また、競技のチーム構成も普段業務で直接かかわらないメンバー同士を組むようにしたので、そこで新しい学びを得られるのではないかと考えました。
開催準備
ピクシブ社が公開してくれている AMI を空いている AWS アカウントに落とし、構築を進めました。 内容を深く理解せずに構築を進めたため、Redis などの環境変数まわりや、Sidekiq の立ち上げで詰まる場面もありましたが、何とかベンチマークポータルの構築を完了することができました。 ちなみに、ウィルゲートでは主に PHP を使用して開発を行っているため、nginx + PHP-FPM で動作するようにセットアップしたものを参加チームに提供しました。
当日の様子
当日は各チーム3~4名の計5チームで競い合うことになりました。 競技開始とともに、各チーム誰がどの分野を担当するかや、どういった方針で問題を解決していくか話し合っていました。 また、ランチもチームで行くなど、ランチ中も勝負は続いていたようです。
最終的に10万点を超えるチームが現れました!! (競技終了後でしたが(笑))
優勝チームのコメント
開発室 GM より、優勝チームにはAmazon ギフト券のプレゼントがありました。
優勝したチームのメンバーより感想をもらったのでご紹介したいと思います。
- インフラ力の無さで画像キャッシュが間に合わず消化不良でしたが、限られた時間の中で何をどこまでやるかを考えるのが楽しかったです。
- 今回サーバー周りのチューニングにトライして、少しのパラメータの変更や nginx 等の普段触れる機会の少ない技術に触れることができました。ここで得た新たな知見と、パフォーマンスが変化する様子を楽しめたことは今後の業務に対するモチベーションに繋がります。
- パフォーマンスチューニングを行う際、どういった部分に着目しているのかを、いろんな知見を持ったメンバーから学べたことが楽しかったです。ただインフラ側の施策がほぼお任せになってしまったので、もっと積極的に話に入っていけばよかったです。
- 前半で差をつけていたものの、最後は僅差の逃げ切りでヒヤヒヤでした。キャッシュやインフラのチューニングにこだわりすぎてしまったんですが、実はアプリケーションのロジックにも大きな改善箇所が残っていたので、ハマりそうになったら落ち着いて視野を広げるべきというのは日頃の業務とも共通してますね。
nginx などインフラ周りで課題が残ったようですが、各々次の課題が見つかってモチベーションが上がったようです。
最後に
全体的にインフラ周りの弱さが目立ちましたが、ひとりひとり課題の見つかったよい機会になりました。 これから出来なかった箇所については、全員で協力して、改めて解決までもっていきたいと思います。 運営側としては、初の試みだったため、運営上迷惑をかけてしまう場面もありましたが、何とか社内 ISUCON を終えることができて良かったです。 今後もこういったイベントを通して、ウィルゲート開発室のチームワークや技術力を磨いていければと思います。