R-ISUCON 2019 Summerリポート

R-ISUCON 2019 Summerリポート

5回目を迎えるR-ISUCON

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

リクルートテクノロジーズでも、定期的にリクルートグループ内のエンジニアを対象とした「R-ISUCON」を実施しています。今回は7月19日、20日の2日間で、「R-ISUCON 2019 Summer」を神奈川県のコロニー箱根にて開催しました。

R-ISUCONは過去に4回実施されており、5回目となる今回は、25チーム80名が参加し、過去最大の規模となりました。

リクルートテクノロジーズが、なぜISUCONを行うのか。最も大きな目的は、リクルートが対峙する問題を周知し警鐘を鳴らすことです。R-ISUCONでは毎回、リクルートのWebサービスで実際に起こった障害や性能問題をネタにして問題を作成しています。これは本家のISUCONでは味わえない体験であり、参加メンバーにとっても醍醐味となるポイントです。その他にも副次的な目的として、エンジニアが交流を図るきっかけの場を提供する、ツールやテクニック等ノウハウの共有を行う、といったことを掲げています。

(参考記事)
チューニングに王道あり、R-ISUCON 2018 Springレポート
"社内ISUCON"がエンジニアにもたらすもの リクルートテクノロジーズ&ウォンテッドリーが語る、魅力と効果

このような志のもと、入念な準備を重ねて開催された第5回R-ISUCON。今回はライターの八鍬悟志さんに現場に潜入いただき、レポートをしていただきました!


過去最大の規模となった第5回R-ISUCON


集中して競技ができる環境のコロニー箱根

今回お題となったのは、イベント予約サイトを模したWebサービス。この中にバグやボトルネックが仕込まれており、それらを解消してパフォーマンスを最大化することが参加者のミッションとなります。

問題を考案した運営サイドの1人、松山勇輝さんは「データベースを含めたアプリケーションレイヤーとインフラレイヤーの両方において、楽しめるポイントを用意しました」と語ります。また「R-ISUCONに初挑戦する人も、何度も経験している猛者も、みんなが楽しめるような問題になっていると思います」とも。

本家のISUCONでも問題の善し悪しが参加者の満足度を左右することがあるため、今回のR-ISUCONでは練りに練った問題が用意されました。運営サイドは、イベント前日までかなりこだわって準備を進めたとのことです。

さらに「普段の業務でもありがちで辛いよね、というポイントを再現することにも腐心しました」(松山さん)と運営サイドは語ります。こうした意図に気づき、高得点をただき出すチームはどこなのか。競技にがぜん力が入ります。


このために心血を注いできた運営メンバー

ちなみに、R-ISUCONは前回の優勝者が次回の運営サイドに回ることが通例となっており、今回の参加者の中では過去に優勝経験を持つ(すなわち運営サイドの経験を持つ)チーム「isucon_frends」が優勝候補の筆頭と目されていました。

沈黙の中での激闘

開会宣言や諸々の説明が終わり、競技がスタートすると、参加した25チームのほとんどは自室にこもりプログラムの改善とベンチマークに取り組みます。


宮川典久さんによる開会宣言


ルールを説明する松山 勇輝さん

R-ISUCONも本家のISUCONと同様に、最終的なスコアで優劣を競うので、途中のベンチマークで高得点を出しても結果には直結しません。ですからハイスコアを出したあとに競技を止めるのか、あるいはさらなるハイスコアを目指すのかといった戦術が重要になってきます。

競技に集中する各チーム。その中で運営サイドのみなさんに、今回のお題のポイントについて話を聞くことができました。その中の1人、朏島一樹さんはこう語ります。

「ISUCONでは通常、3台のサーバーがまったく同じ条件で与えられるのですが、我々はそこに"罠"を仕掛けました。実業務でパフォーマンスチューニングを行う際は『このサーバーがどういう状態なのか』を見るはずなので、なるべくそれに近づけて、サーバーの状態をきちんと見たチームが有利になるようにしています」。この部分が盲点となりスコアがなかなか上がらないチームが続出するなかで、制作者の意図にいち早く気付いた「isucon_friends」をはじめとする数チームは、着実にハイスコアをマークしていきます。

そして迎えた夕食時間、食事もそこそこに自室に戻っていく競技者たちが目立ちます。全チームのスコアと自チームの順位は常に確認できる環境での勝負なので、他チームの奮闘ぶりに焦りを覚えるチームも多かったのかもしれません。


浴衣でくつろぎつつも手を止めない参加者たち

貫録勝ちの「isucon_friends」

3人の新卒メンバーで構成されるチーム「村八分」は、当然ながら今回が初参加のチームです。2日目朝の時点では2,000点台に到達したところでした。「1年目ということもあり、ここを直せば速くなるという勘所が養われていないのかもしれません」と同チームの松尾裕幸さんは自己分析。「解析ツールを使うと、プログラムの中でこのあたりが重そうだという大雑把な当たりはつけられるのです。でも、そのあとでどう絞り込んでいくのかが難しく、実務経験の浅さが露呈しているのかもしれません」と松尾さんは続けます。

さらに「他のチームはアプリケーション、ミドルウェア、インフラといったレイヤーごとに効率よく役割分担をしていると思います。僕たちはまだそれほどの専門性がないので、同じ問題をみんなで考えています。専門性を身に付けることの重要さをこのR-ISUCONで学んだ気がします」と苦戦をしながらも前向きに語っていました。


チーム村八分のメンバーたち

チーム「ぱるちざん」も若手中心のメンバーを揃えました。「僕個人では3度目の参加になるのですが、毎回難しいですね」と語るのは、メンバーの河野晋策さん。「研修などでR-ISUCONの過去問に挑んだこともあるのですが、研修の時はどこが悪そうなのか当たりもつけられずに終わりました。今回は当てはあるけれども、それをどう手元で切り崩していくか迷っています。着実に進んではいるのですが」と語ります。


2日目は疲労困憊になっているチームも少なくなかった

チーム「マエダケッセキ」の加藤慶之さんは2日目朝の時点で「ずっと詰まっていたものが解消されて動くようになりました。謎のバグを取り除いたり、データベースの仕様の意味を理解したりして『やっと始まった』という感じです」と確かな手ごたえを感じているようです。


ホワイトボードには戦略がびっしり

各チームが悪戦苦闘するなか、ぶっちぎりのハイスコアをはじき出したチームがありました。優勝候補筆頭のチーム「isucon_friends」です。2日目の朝9:30の時点で6万点越えをマークし、他の追随を許さない独走態勢を固めます。そして正午にランチタイムに入り、競技は終了。「isucon_friends」は14万6,804点という圧倒的なスコアで優勝を飾りました。

上位10チームとその獲得スコアは次のとおりです。

順位 チーム名(スコア)
第1位 isucon_friends(146,804点)
第2位 明智と愉快な仲間たち(73,097点)
第3位 コアラ課長(39,476点)
第4位 シーランド公国選抜(22,085点)
第5位 帰ってきた「あのギャル」(20,948点)
第6位 ルーターマンと愉快な仲間たち2019夏(18,429点)
第7位 養殖のタピオカガエル(16,667点)
第8位 わかもの(14,747点)
第9位 ゲームは遊びじゃないんで(6,212点)
第10位 ぴぎまる水産(5,867点)

ご覧のとおり、「isucon_friends」が2位にダブルスコアの差をつけました。これには参加者からも「強すぎる。『isucon_friends』は解体すべきだな(笑)」といった声が聞かれました。その「isucon_friends」にコメントをいただくことができましたので、いくつか紹介したいと思います。

勝因は「ちゃんと計測したこと」

――今回のお題の印象についてお聞かせください。

iscon_friends(以下、if):よく練られた問題だったと思います。特に今まではindexを貼れば高得点になるような問題、N+1をJOINすれば高得点になるような問題が多いなかで、非正規化まで必要で、なおかつQRコードの最適化まで必要となる問題は面白かったです。インフラ面では、こちらが過去にやりたいと思っていた構成やスペックがマシンごとに異なるケースがあって、非常にエキサイティングな問題でした。

――いちばん大きな勝因は何だったと思いますか。

if:メンバーの仲が良かったことでしょうか(笑)。アプリケーションで不具合が少ない実装をしてくれたことと、インフラの罠にいち早く気づけたことは非常によかったと思いますね。真面目に答えるなら「ちゃんと計測したこと」が勝因でしょうか。

――ISUCONイベントを勝ち抜くコツがあれば教えてください。

if:結局、正しくボトルネックを計測すること以上に勝ち抜くコツはなく、僕らも本家のISUCONでは正しいボトルネックが見つけられなくて泣いたことが何度もあります。ボトルネックを調査すること自体にもコツはあるし、さらにボトルネックは見つけられていても正しい打ち手がないこともあるので、それはコツというよりも何度も戦った経験が功を奏しているのかもしれませんね。

 


優勝したチームisucon_friendsのメンバー(左から與那城有さん、古川陽介さん、宮地克弥さん)

恐れずに参加しよう

優勝者が決まり、順位が発表され、それで終わり…ではありません。R-ISUCONの大きな特徴は、「振り返り」と「ナレッジシェア」です。

競技後には参加者がみんなで集まり、運営側が出題の意図を説明して振り返りを促すので、記録が伸びなかったチームも納得感を持って会場を後にすることができます。また運営側だけでなく上位入賞者も登壇し、競技中に行ったチューニングのポイントを共有する学びの場を設けています。そのポイントには目から鱗が落ちるものや、実業務に直結するものなどがあります。R-ISUCONで多くのエンジニアが短期間のうちに成長できるのはこのためなのです。

これを読まれているみなさんの中には、R-ISUCONをはじめとするISUCONイベントに敷居の高さを感じる方もいるかもしれません。この点に関して、運営サイドのメンバーである松山さんは次のように語ります。
「ISUCONイベントは、凄腕のエンジニアだけが戦うものと思う方もいらっしゃるかもしれません。R-ISUCONは、経験の浅い人でも楽しめるように問題を作っています。また、制限時間を精いっぱい頑張ることで、これまで見落としていた気づきがあったり、できなかったことが色々できるようになったりもします。多くのリクルートのエンジニアに参加してもらいたいですね」
実際、新卒メンバーだけで構成されたチーム「村八分」の松尾さんは、「ボトルネックの特定に苦戦しましたが、ソースコード自体がわからなくて読めないということはありませんでした」と語り、「僕らにとってもちょうどいいレベル感になっていると思います」と続けます。


大会の大成功を祝して記念撮影

取材の最後に松山さんに、R-ISUCONで優勝するとどんな良いことがあるのかを聞いてみました。
「優勝者には名誉とトロフィー、次回の運営に携わる役目が与えられ(笑)、さらには社内でのプレゼンスが上がるという特典があります」
「あ、R-ISUCONで勝った人だ」と注目され、社内でも一目置かれる存在になるのだそう。

ちなみに、先日実施された本家ISUCONである「ISUCON9」では、R-ISUCONに参加したチームのうち3チームが予選を通過しました。R-ISUCONは、様々なレベルのエンジニアが楽しみながら挑める一方で、社外においてトップレベルで通用するスキルも磨くことができる場なのだということがわかります。

目標を同じくする仲間たちとの切磋琢磨、そしてなにより自分自身のレベルアップのため、様々なエンジニアが集って磨かれていくR-ISUCON。早くも次回の開催が楽しみです!