Select Language : English 日本語

NTTコミュニケーションズ

法人のお客さま: English / 日本語
個人のお客さま: English / 日本語

NTT Ltd.

グローバルサイト English
中国本土: English / 日本語 / 簡體中文
フィリピン(DTSI): English
2020.04.15

「N-ISUCON 2019」 エンジニア121人が参加
仕込まれたボトルネックを見つけて短時間で改善せよ!

※この記事は2019年10月の情報です。

NTTコミュニケーションズ(以下、NTT Com)グループのソフトウェアエンジニアが一斉に集う 社内コンテスト「N-ISUCON 2019」の競技本番が2019年9月10日に本社(東京都千代田区)で開催された。主催したのはNTT国際通信の岩瀬義昌さん(N-ISUCON運営事務局)。NTT Comの恒例イベント「DigiCom 2019」とコラボレーションしての初開催となった。

今回のN-ISUCON 2019には、46チーム121人(NTT Comグループ100人、NTTグループ16人、NTTグループ以外5人)が参加。本記事では、競技本番の模様、出題問題・代表的なボトルネック、参加者からの声について、岩瀬さんからご紹介する。

参加者がパフォーマンスと真剣に向きあう競技模様

N-ISUCON運営事務局の岩瀬(NTT国際通信)です。

N-ISUCONとは、LINE株式会社が主催するチューニングバトル「ISUCON」をNTT Com内製版にアレンジした競技です。最大3人でチームを組み、お題となるWebサービスを決められたレギュレーションの中で自由に改変し、限界まで高速化するコンテストです。出題者が用意したベンチマークで最も優れたスコアを叩き出したチームが優勝となります。

ソフトウェアエンジニアリングを軸とする競技であるため、参加者はひたすらコンソールやエディターに向かい、ボトルネックを見つけアプリケーションのコード変更やミドルウェアの設定変更などのパフォーマンスチューニングを施していきます。

競技中は、会場前方のプロジェクターにリアルタイムスコアボードを表示しており、スコアが跳ねた瞬間などは参加者からどよめきが上がりました。

出題問題について

今回は初回の開催ということもあり、シンプルなブログサイトをテーマに掲げました。某プログラマーのための技術情報共有サービスに似せた機能を実装しています。たとえば、ユーザー登録・削除、記事の登録・削除、コメントの付与、記事に対する“いいね”の付与などです。

一見すると単なるブログサイトにしか見えませんが、なんとトップページの表示に30秒程度かかります。

なぜ極端に遅いのか、その代表的なボトルネック

N-ISUCONの問題では、実際の業務で実装してしまうとお客さまのUXが悪くなる箇所が多く含まれています。本セクションでは、多く仕込まれているボトルネックのうち、代表的なボトルネックを一つご紹介しましょう。

それは、JaywalkというSQLアンチパターンの実装。データベースに何らかのデータを格納したい場合、本来は正規化された状態でデータを格納し、レコードが増えていくように実装します。しかし、Jaywalkではカンマといった何らかの区切り文字で、1つのレコードのデータを挿入していきます。たとえば、"hoge,fuga,foo,bar"のような実装です。

N-ISUCONの出題では、このJaywalkが"いいね"をしたユーザー名の格納に使われていました。実際にN-ISUCONで提供される問題のトップページにアクセスすると、"いいね"の多い順に記事を描画する機能が実装されています。全記事の"いいね"数をカウントするためには、"hoge,fuga" を全てカンマで分割して、配列の長さを調べる必要があり、非常に遅い実装となっていました。

競技参加者は短時間でJaywalkのようなボトルネックを複数見つけ、適切な改善策を打つ必要がありました。

大好評だった参加者の声

N-ISUCON終了後に参加者からいただいた生の声をいくつかご紹介します。

  • そもそもの、この企画がよかったです。こういう機会がないと、世の中のあらゆるものがソフトウェア寄りになっても、学びチャレンジする機会が社内ではない。身近な職場で、スキルアップを志すエンジニアにとって、素晴らしい企画だと思いました。
  • 楽しかった。練習会があり初心者でも参加しやすい。グループ会社のこういうイベントに興味を持つエンジニアと交流できた。本戦の感想など話しかけるネタがあって良い。
  • WEB系のシステム開発に携わる人は参加必須にすべきと思うほどよい内容だと思います。事前に勉強すること(過去のISUCON問題解き)を通じ、WEBシステムの基礎的なところから応用分野までを自分の意志で調べるきっかけになるため。
  • 規模が小さい/アンチパターンがひとつだけ/言語に縛りがある、などでもよいので、隔月や毎月や毎週など短い期間で定期開催してほしい。

N-ISUCON運営事務局より

N-ISUCONの当初の目的で掲げていた、「Fun to Work」「ソフトウェア人材の育成・強化」「エンジニアのコミュニティーの強化」の全てに関する感想を多くいただきました。

今回の結果を受けて、次年度以降も継続開催していきたいと思いますので、技術スキルを高めたい方は是非参加してください。また、「作問側で参加してみたい」という要望があれば、N-ISUCON事務局まで連絡をお願いします。

こちらの開発者ブログもご覧ください。

社員メッセンジャー

NTTコミュニケーションズヒューマンリソース部

岩瀬 義昌

ソフトウェアエンジニアとしてプラットフォーム開発に携ったのち、人事ニアとしてエンジニアのスキルアップやコミュニティ強化などを目的に、勉強会やコンテストなどを開催しています。NTT Comグループのエンジニア達の技術力や取り組みをお届けします!