ISUCON7 予選通過反省会

ISUCON7 の予選に @amaya382, @spring_raining とチーム名「チーム名を考えるのが苦手すぎる」で参加しました. 私自身は初参加です. 最終スコア 89,047 で学生枠 2 (3) 位通過でした.

私がやったこと

ほぼ完全にアプリケーション (Node.js) だけを担当しました.

  • ESLint 導入
    • 治安維持のためと思ってとりあえず導入したけど潜在バグ見つけられたりしてよかった
    • ICONS_FOLDER という未使用の定数が見つかって, アイコンをファイルに書き出してほしそうな顔をしていたのでそのようにした (実際速い)
  • JS のパフォーマンス改善
    • CPU プロファイル見て遅そうなところに小細工を加えた
    • といってもアプリケーション側で改善できるところはほとんど見つけられず, ほぼ誤差の範囲だと思われる
  • ごめんなさい, それ Node v8 からなんですよ
  • ですからごめんなさい, それも Node v8 からなんですよ
  • あとは大体 @spring_rainingペアプロめいたことをしていた
  • 実はほとんど何もしてなくないか

チーム全体でやったことは他のメンバーの記事を参照ください.

よかったこと

  • 多少とはいえ MySQL と Redis の予習をしていてよかった, 言葉が通じなくては話にならない
  • とりあえず足を引っ張りまくって予選落ちという最悪の事態だけは避けられた
  • プリントデバッグの亜種として 418 I'm a teapot を返すという体験をした

反省点

  • サーバーの設定とかデプロイなんかは他のメンバーに任せっきりで何もできなかった
  • とりあえず目についたところから作業にとりかかってしまった, まず問題点をちゃんと書き出してやるべきことを考えてから分担とかした方が良さそうだった
  • まともに問題を見つけたり解消したりするための知識経験がとにかく不足していた
    • キャッシュがどうとかトランザクションとか全て
    • そもそも JavaScript は書けても Node.js で Web アプリを書くことに慣れていないのがやばい
  • ホワイトボードまで歩くのがめんどくさくて使わないという怠惰の極みみたいな行動をしたので開始前に近くに置いておきたかった
  • メンバー間の連絡は全員その場にいたので会話してたけど, 聴き逃したり忘れてしまったりするので, 重要な情報は Slack とかに書いたほうが良かった