インタビュー

ISUCON11優勝チームfujiwara組の3人 fujiwara acidlemon macopy の技術力に迫る

この記事を読むのに必要な時間:およそ 7 分

今年も開催された,エンジニアのチューニングスキルを競うコンテンストISUCON11。今回優勝したチームはfujiwara組です。リーダーの藤原氏fujiwaraは今回で4回目の優勝。そして,このチームとしては初優勝を飾りました。

今回,藤原氏,メンバーの川添氏acidlemon⁠,谷脇氏macopyに,ISUCON11優勝の振り返り,そして,これまでの三者三様のISUCON,そして,技術への取り組みについて伺いました。fujiwara組がISUCON11を勝ち取った技術力すべてに迫ります。

ISUCON11,予選~本選の心持ち

Q:予選終了後の順位,また,他チームの結果を見て感じたこと,本選に向けてチームとして意思確認したことがあれば教えてください。

藤原氏: 今回は予選は通過できれば良いぐらいのリラックスした気持ちで参加しました。

そして,予選17:00の時点でISUCON11 オンライン本選スコアボードが凍結され,その時点で私たちのチームは1位でしたので,少し余裕を持っていました。結果的に予選突破できたので,順位(4位)はあまり気になりませんでした。

川添氏: 前回のISUCON10もこの3名で参加し予選落ちをしていたので,とにかく予選突破はしたい,という気持ちが強くありました。また,11の予選課題はスコアが大きく上がりやすい書き込み型の問題だったため,最終的には100万点を超えるチームが出てくることは予想していました。自分たちは残念ながら100万点を超えることができませんでしたが,予想通り,100万点を超えたチームが2チームありました。

谷脇氏: 3人の中では,最後の1時間,おそらく自分がいちばん不安を持ちながら進めていたと思います。結果的に,予選突破が決まったときは心底ホッとしました。

藤原氏: 無事予選通過しましたが,その後,決勝に向けて特段みんなで準備したことはなかったですね。

川添氏: 私はISUCON7以来となる久々の本選進出だったので,個人的に予選の振り返りをしました。とくに,各チームの予選ブログを読んで,自分たちのチームで見落としていたことをピックアップし,⁠れもんが本番中にいつも忘れる細かい改善チェックポイントリスト」⁠通称:ISUCONとらのまき)として,A4サイズ1枚にまとめました。

たとえば「認証のある静的ファイルはX-Accel-Redirect!」⁠JSON生成遅いのでgoccy/go-jsonを使う!」⁠Thundering Herd対策にsingleflight!」といったものです。

ざっと書き出して,写真に撮ってチームSlackに共有しておきました。

fujiwara組が優勝できた理由はこれだ!方針決めと実行の内容

Q:お話を伺っていると,お三方とも予選後半から手応えを感じ,また,本選が決定してからも普段どおりの日常を過ごしていたように思います。そのリラックスも優勝につながったのかもしれませんね。

さて,本選の課題「ISUCHOLAR」の高速化の出題を受け,最初に話し合ったことは何でしょうか? また,どのような役割分担で進めることにしましたか。

藤原氏: まず,履修登録という課題を見て「予約型か」と思いました。これまでも,ISUCON2,8でもあったようにISUCONでは予約ネタは頻出していたので,驚きはなかったです。チューニングのポイントとしては「ロックの取り合い」を想定しました。

川添氏: 藤原さんが「履修登録,予約型か」とつぶやいたのを聞いて,同じく「ロック」を強く意識しました。また,予選のISUCONDITIONでは書き込みが激しい課題だったので,本選もまた書き込みが激しくなることも想像しました。

一方で,本選のレギュレーションではキャッシュ禁止となったため,書き込みが激しい場合の対策をどうしよう,とも思いましたね。

谷脇氏: 2人と同様の感想で,さらに藤原さんもコメントしたようにISUCON2の課題を思い出しました。一方で,予選の問題とも違うと感じ,課題が出てすぐにアプリケーションのコードを読み始めました。

Q:それぞれが課題の第一印象を捉え,そして,動き出したわけですが,実際に本選が始まった際,どのように方針を決めたのか,また,注意したことや自分たちのチームとして工夫したこと,エピソードがあれば教えてください。

藤原氏: まず,大きな役割分担として,私がまずインフラ全般を担当し,川添・谷脇両名にはコードを読む作業に専念してもらいました。

その体制で,本選開始直後からインフラの見直し,初期でできる設定を終わらせてみてスコアを確認したところ,それほど点数が上がりませんでした。なので,これ以上はインフラチューニングに時間をかけず,自分も含め3人でコードを読もう,と切り替えました。

川添氏: 私たちのチームの初期スコアが30,000点で,他チームでは早い時間で70,000点出ているところもあって,足の早い課題だと感じました。ここで,優勝の前にまず特別賞(最初に80,000点を超えたチーム)を狙っていたので,そこを最初の目標に設定して動きました。

一方で,Indexはきれいに張られていてDB周りで高速化するネタはほとんどないと判断しました。ですので,このタイミングで,コードかクエリに手を加えなければいけない,という大きな方針に注力できました。

この分析は他チームも同様で,おそらくデータベースを切り分けた複数台構成への変更をするところが出てくるだろう,と,藤原さんに複数台構成への変更をお願いしました。11:00ぐらいには完了しましたかね。

結果,スコアが上がり午後には80,000点を超えました。ただ,残念ながら2番目で特別賞は取れませんでしたが,特別賞を獲得したチーム焼肉ジャンボチキンのブログエントリを読むかぎり,方向性や初動はほぼ同じでしたね。

その後は,N+1クエリをなくしていく作業に専念し,アプリケーション・DB双方の負荷を確実に下げることを目指しました。修正するエンドポイントが谷脇さんと被らないように打ち合わせて分担しました。

私はGPAのsingleflight化を行いました。実際にやってみて点数はあまり上がりませんでしたが,データベースやCPUの負荷は下がったため手応えはありました。

著者プロフィール

馮富久(ふぉんとみひさ)

株式会社技術評論社クロスメディア事業室部長代理。

1975年生まれ。横浜市出身。1999年4月株式会社技術評論社に入社。入社後から『Software Design』編集部に配属,同誌編集長(2004年1月~2011年12月)や『Web Site Expert』編集長を歴任。その後,2008年9月に設立したクロスメディア事業部(現クロスメディア事業室)の責任者として,イベントやWeb・オンライン企画を統括。現在は,技術評論社の電子出版事業を中心に,デジタル・オンライン事業を取りまとめる。社外活動として電子書籍を考える出版社の会の代表幹事やWebSig 24/7のモデレーター,TechLIONプロデューサーなども務める。過去にIPAオープンソースデータベースワーキンググループ委員やアックゼロヨン・アワード他各賞審査員などの経験を持つ。

Twitte ID:tomihisa(http://twitter.com/tomihisa/

バックナンバー

2021

  • ISUCON11優勝チームfujiwara組の3人 fujiwara acidlemon macopy の技術力に迫る