社内でISUCON体験会を開催した話

こんにちは、ライクル事業部の松本@l3msh0です。業務ではライクルGMBのバックエンドの開発を日々行っています。

先日ISUCON11オンライン予選が開催されましたね!私も参加し見事に予選敗退を果たしました😂 本戦の代わりというわけではないですが、自分の中で熱が冷めやらず社内でISUCONを体験する会を開催したので、このエントリではその様子をご紹介します。

開催のモチベーション

既にご存知の方も多いかと思いますが、ISUCONはLINE株式会社が主催するWebサービスのパフォーマンスチューニングコンテストです。

開催後はSNSなどで参加者のブログ記事などが共有されることも多いためその存在は認知されている方も多いと思うのですが、実際に参加したことがある方は意外と少ないのではないでしょうか?弊社でもISUCONの認知度はそれほど高くなく、「興味が無いわけではないけれどよくわからない、実際に参加するほどではない」という温度感のメンバーがほとんどでした。

私自身はISUCON7で初めて参加して以来ハマってしまい、こんな楽しいお祭りに参加しないなんて勿体ない! という思いが強くあったため、まずは身近なチームのメンバー向けに、ISUCONを体験しその楽しさを知ってもらう会を開催することにしました。

体験会の内容

弊社には、エンジニアの成長を支援するため毎週2.5時間を業務に関連する技術の検証・習得に充てることのできるgrowing-pain(通称グロペ)という制度があり、体験会もその時間を利用して行いました。グロペでは予算の範囲内でAWSのリソースを自由に使用することができるため、体験会に使用するサーバを気軽に用意できるのもありがたかったです。

体験会は以下のような流れで行いました。

  1. ISUCONの紹介
  2. お題となるアプリケーションの紹介
  3. ツールの紹介
  4. チューニングのデモ
  5. モブプロ形式で実践

以降でそれぞれの内容について簡単に説明していきます。

ISUCONの紹介

そもそもISUCONとは?という話や、外部から見える振る舞いが変わらない範囲で自由度の高いチューニングが可能であるといった特徴について説明しました。

お題となるアプリケーションの紹介

今回はお題としてISUCON10の予選問題を採用しました。

まず構築済みのアプリケーションを実際に操作して見せることで参加者にイメージを掴んでもらった上で、レギュレーションとマニュアルを読み合わせ、これから何をしていくかの認識をすり合わせました。

ツールの紹介

体験会でボトルネックの特定に使用するツールを紹介しました。

実際のISUCONで使用されるツールはチームによって様々ですが、今回は事前知識がなくても状況が視覚的に把握しやすいことを重視してNew RelicNetdataを使用しました。

f:id:so-technologies:20210829040445p:plain
Netdataの例。DB(sql)のCPU使用率が高いことが一目でわかる。

チューニングのデモ

簡単なインデックス作成を例にして、計測・分析・改善の一連の流れによってスコアを改善するデモを行いました。 New RelicによりMySQLのクエリ実行時間が劇的に改善したのが視覚的に伝わったのではないかと思います。

f:id:so-technologies:20210829035008p:plain
左の山が改善前、右の山が改善後

モブプロ形式で実践

デモを踏まえて、モブプロ形式で参加者にパフォーマンスチューニングを実践してもらいました。

限られた時間内で実装を把握してパフォーマンスまでやりきるのはかなり難しかったため、私の方からほぼネタバレのヒントを出すことで時間を短縮しましたが、可能であればもっと時間に余裕を持って参加者が自力で試行錯誤する経験ができるとより良かったのではないかと思います。

配慮したポイント

体験会を開催するにあたっては、参加者にISUCONの楽しさを体験することにフォーカスしてもらうため、なるべくチューニング以外のことを考えずに済むように配慮しました。

具体的には以下のような準備を行いました。

  • サーバは事前に構築しておく
  • New RelicやNetdataなどのツールも導入しておく
    • New RelicでMySQLのクエリ実行時間を確認できるようにGoの参照実装にも手を入れた
  • ソースコードを事前にGithubにpushしておく
  • SSH接続用のconfigを配布する
  • デプロイ用のmakeタスクを作成しておく

これらの準備のおかげで、細かいトラブルに時間を取られることなく体験会をスムーズに進行することができました。

参加者の声

体験会後に参加者にアンケートを取ったところ、「楽しかった」「業務で役に立ちそう」「実際のISUCONに参加してみたくなった」などポジティブな感想を多数いただくことができました。一方で「もっとじっくり取り組みたかった」という意見もあり、そこは私自身も課題に感じたポイントなので次の機会があれば改善したいです。

終わりに

体験会を開催して、ISUCONの楽しさを広めたい!という当初の目的はある程度達成できたのではないかと思います。社内ISUCONほど大掛かりな準備は必要ないので、カジュアルな布教活動の一例として参考になれば幸いです。

今回はISUCON体験会の紹介でしたが、社内ではこの他にもスクラムマスター勉強会やドメイン駆動開発勉強会など、スキルアップのための取り組みが自発的に行われています。弊社では現在エンジニアを積極採用中ですので、この記事を読んで少しでも興味が湧いた方はリクルートサイトもぜひチェックしてみてください。