nri_logo

2022.01.22

NRIで社内ISUCONを開催。
コンテストによる濃密な学習機会の創出

人物

熊崎 晃
Akira Kumasaki

はじめに

 ユーザに受け入れられ、幅広く利用されるサービスを作るためのUX面の考慮や工夫は、DX推進を目指すプロダクト開発においては一般的になりつつあります。

 bitLabsが支援するアジャイル開発案件でもユーザにプロダクトを見せた際に、UX改善に関するフィードバックを頂くことは度々ありますが、中でも「処理がちょっと遅い」「もっさりしている」等の速度面の使用感に関するフィードバックは珍しくありません。

 性能問題は原因事象や業務要件に応じて、処理単位・タイミングの変更やリソース拡充など様々な解決策が検討できますが、真正面から速く軽い仕組みに改善する修正(リファクタリング)も、CI環境が整えられた状況下では非常に有用です。

 性能対策の知見を持ったエンジニアを確保でき、そもそも性能劣化が起きにくい設計ができている状況下では、性能問題は発生し辛いですが、以下のような背景から性能改善スキルは自主的に座学で学び辛い能力であるため、性能改善エンジニアの育成について課題感をもっている開発組織は少なくないのではないでしょうか。

性能対策を自発的に学習する上での課題例

  • 性能問題はボトルネックによって発生するため、対応には幅広い技術知見が必要になる(アプリ、インフラを跨いだ知見が必要)
  • 自己研鑽したくても、リアルな性能課題を持ったシステムを再現するのが難しい(インフラ環境準備、データの仕込み 等)

 上記のような課題感に応えつつ、性能改善について集中的に学び鍛えられる場としてNRI社内で「NRI-ISUCON ※1」を開催しましたので紹介します。

ISUCON、NRI-ISUCONとは

 ISUCONとは、お題となるサービスを定められたレギュレーション下で限界まで高速化を図る「性能チューニングコンテスト」です。2011年にライブドア社(現LINE社)が主催となって開催したことから始まり、公式大会は2020年で10回目を迎えています。
(公式サイト:http://isucon.net

 参加者は、性能面に問題を持ったサービス(仮想マシンとその上で稼働するサービス)を与えられ、定められた制限時間の中で、アプリケーションのロジック、SQL、データベース、WebサーバやOSのチューニングなどを行い、サービスの高速化に挑戦します。
 時間的な制約やプレッシャーの中、集中して高速化を学ぶことの出来る場として、昨今、多くの企業で社内ISUCONが開催されていますが、NRIにおいてもbitLabsメンバー含む有志で、2021年2月に社内ISUCON(NRI-ISUCON)を開催しました。

 当該大会は、性能改善のエンジニアを増加させる狙いで初級・中級者にも門戸を開くべく、

  • InputDay(性能対策についての代表的な手法や考え方を紹介する学習セッション)
  • ContestDay(性能対策のコンテスト)

 の二段構成で企画され、InputDayは100名超の、ContestDayは70名のグループ社員がフルリモートで参加しました。

 コンテスト当日は、IsuEatsという架空のフードデリバリーサービスの性能改善をテーマに、参加者は3台のAWS EC2インスタンス上にあるWebアプリ(Go/Python/JavaのREST API)の性能改善に挑戦しました。
 最終的に、首位チームは初期実装の10倍以上の処理リクエストを捌けるほどにシステムが高速化され、 どのチームも試行錯誤、時に苦戦をしながら性能対策に取り組んでいました。

画像 画像

(上.時間経過毎の性能スコアの推移。コンテスト中はポータルページでリアルタイムに掲示された)

 8時間超の長丁場にもかかわらず「一瞬だった」「ご飯を食べるのも忘れて集中していた」「疲れたが楽しかった」といった声が参加者からは上がり、集中して取り組んでいたのが伝わってくる大会でした。

コンテストへの参加から得られる学習効果

 NRI-ISUCONでは、コンテストの実施前後にアンケートを取り、学習効果についても計測をしました。
 一部抜粋すると、性能対策の自信度については大会前後で以下のように推移しています。

画像

ポイント

  • 一概に性能対策の自信度が上がったという訳でなく、全然自信が無いという人が減った一方、性能には自信がある、という人も減っています
  • これはダニング-クルーガー効果(※2)の一種の表れで、試される場があることで、自信と経験のバランスをとる機会になったようにも見えます
画像

 OS、Webサーバ、アプリ等レイヤー毎の理解度もアンケートで調査しましたが、基本的にいずれも上記性能対策に関する自信度のグラフと同様の中庸に寄っていくような推移となりました。

 一方で、性能対策に関する知識や経験に関し参加して何か得られたものはあったか、という問いについては95.4%から新たに学ぶことがあったという回答で、また、NPS(※3、同僚など他者に紹介したい活動か、という質問から算出する指標)は+24.7と高水準で、参加者にとって他者に勧められる活動となったようです。定性的にインタビューで伺った生の声でも、皆一様に「必ず次も参加する」という言葉があったのが特徴的でした。

 ISUCONのようなコンテストの開催は、課題の作成から実行環境の構築まで幅広く技術力が求められるため、運営側の学習効果も大きい活動です。運営サイドでも、以下などは非常に学びになった、という話が上がっていました。

  • AWS BatchとAWS Fargateを組み合わせた状況を可視性高く実行できるベンチマーク基盤
  • 複数言語でのミニマムなREST APIの実装(Go/Python/Java)
  • 性能的に劣った実装を意図的に埋め込む能力(≒逆説的に怪しい箇所を発見する能力)

おわりに

 DXが進む最近においても性能改善は基礎として重要であり続ける技術要素なので、ISUCONのような機会を社内で創出し、エンジニアが模擬的に経験を積んで、成長していける機会や環境を整えることは重要です。
 コンテスト型の学習イベントは、後に尾を引かず決まった期限で集中的に経験を積むことができる、という参加者に嬉しい特徴を持っているので、ぜひ皆さまの周りでも性能対策に限らずコンテスト型の学習イベントを開いてみてはいかがでしょうか。

 bitLabsでは、アジャイル開発の伴走支援やコーチング以外にも、サービスデザインやアジャイル関連の教育プログラムをご提供しており、ワークやハンズオンで手を動かしながら経験を積める研修コンテンツを多く用意しています。ぜひお気軽にお問い合わせください。

リファレンス

  1. ISUCON公式: http://isucon.net(※「ISUCON」はLINE株式会社の商標または登録商標です)
  2. ダニング=クルーガー効果: https://www.semanticscholar.org/paper/Unskilled-and-unaware-of-it%3A-how-difficulties-in-to-Kruger-Dunning/f2c80eef3585e0569e93ace0b9770cf76c8ebabc?p2df
  3. NPS®: https://www.netpromotersystem.com/
熊崎 晃

熊崎 晃Akira Kumasaki

専門領域:アジャイルディベロップメント

幼少期からITに魅了され、個人でネットゲームやコミュニティを開発運用する中で感じた「素敵なITでもっと世を変えたい」という想いが今に至る原体験。NRIではエンジニア、またはITコンサルタントとして、業務分析や技術調査から、システム企画、開発、移行導入に至るまでの幅広い業務を主導してきた。世を変えるITを現実的、持続的に提供する優れた思想と感じているアジャイルを広めるため、2019年よりbit Labsに参画。
趣味はリアル脱出ゲームなどの謎解きゲーム("分からない"が消えると快感)