Penpen7のブログ

Penpen7のエンジニアブログ

🚅 ISUCONでやることを簡単に紹介

ISUCONとは?

  • ISUCONとはLINEヤフー株式会社が運営窓口となって開催している、お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトルです

  • 動作の遅いwebアプリケーションをあの手この手でチューニングし、一番速くできたチームが優勝です!

昨年の内容

  • これまで13回行われており、前回は2023年11月25日に行われました
  • ISUPipeと呼ばれる動画配信サービスのパフォーマンスチューニングを行っていきました

https://www.youtube.com/watch?v=OOyInZbM85k

  • 参加者数
    • 参加チーム数 694組(学生 78組)
    • 参加者合計 1662名(学生 253名)

今回の内容の要約

  • 開催日と場所:
    • 2024年12月8日(日)
    • オンラインとオフラインのハイブリッド形式
    • 昨年と同様、本戦のみ
  • 主催と運営:
    • ISUCON運営実行委員会
    • 運営窓口はLINEヤフー株式会社
  • 優勝賞金: 100万円
  • 問題提供と協賛:
    • 出題企業: ポケットサイン株式会社
    • 運営協力: 株式会社カケハシ

基本的なレギュレーション

  • 禁止
    • webアプリケーションの見た目を変更すること
      • 画面に表示するデータの数を減らすなど
      • あまりフロントエンドをいじることはない
      • 基本的には入力と出力を変えずに、それを達成するための実装を変えて高速化することになります
    • 外部のコンピューティングリソースに委託して処理を行わせること
    • 他チームとの結託

流れ

競技開始後

10:00-11:00

  • 運営から配布されるCloudFormationのYAMLファイルを使って自分のAWS環境にサーバ構築

  • アプリケーションマニュアルを読む

https://github.com/isucon/isucon13/blob/main/docs/isupipe.md

  • 当日マニュアルの確認

https://github.com/isucon/isucon13/blob/main/docs/cautionary_note.md

  • 初期実装の動作確認・ボトルネックを把握する
    • 初期実装の言語を変更

    • アクセスログとスロークエリを吐き出すように設定を変更

    • ISUCONのポータルサイトでベンチマークを実行しスコアを確認

    • ログを解析し、ボトルネックを把握

チューニング(11:00~17:00)

  • 計測→チューニング→計測→…を繰り返す
  • DBにインデックスをはる
  • N+1問題の改善
  • オンメモリキャッシュの導入
  • などなど

終盤(構成変更・ログ出力停止・再起動試験対策)

  • 再起動してもアプリケーションがうまく動作するかチェックする
  • 少しでも速くするために、ログ出力を停止する
  • 構成を変更する(負荷分散)

競技までの流れ

参加申し込み

  • 今回ISUCON14では以下の日程で参加者募集が行われる
    • 2024/09/18 10:00-
    • 2024/09/24 20:00-
    • 2024/09/28 12:00-
  • 参加申し込みだけは死守しておく

競技の準備

  • 公式が行う事前講習に参加する(任意)
  • 個人・チームで過去問練習しておきます
    • ISUCON本に登場するprivate-isuを解くと良いでしょう

https://github.com/catatsuy/private-isu

  • ISUCON12、ISUCON13の過去問で練習を行う場合は、ISUNARABEというサービスを使用するのが便利です
  • 競技中の便利ツールやチームの動きを整理しておく
    • 特にデプロイが不便なので、デプロイフロー
      • ISUCONではEC2インスタンスで作業する必要があるので、デプロイが辛くなる
      • 競技中はチューニングに集中できるような環境を作っておく
© Penpen7