はじめに
こんにちは,光岡です.2本目の記事になります.
前回はGo言語を使ったソートアルゴリズムに関して書き,今回も当初はアルゴリズム関連の予定でした.しかし2本目にして早速路線変更することにしました.(綺麗なシリーズ化はできそうにないので,アルゴリズムを学んで,また書きたくなったら書こうと思います..)
今月何があったかな..と振り返った時に思い出したのが,
"無事に"ISUCON12の参加登録ができた!
ってことですかね.
ISUCONとは?については後述しますが,3回あった申し込みのうち,1回目は2分44秒で220枠が埋まってしまい,2回目で無事に参加登録できました.ちなみに2回目は1分10秒で予約215枠が埋まったそうです💦
まるで,有名なアーティストのライブチケットの争奪戦のようでした...
ということで,今回はISUCONについて,その中でも先日の事前講習座学&ハンズオンにも参加してきたので,座学で学んだことについて書いていこうと思います.
ISUCONとは
ISUCONとは,お題となるWebサービスを決められたレギュレーション内で,高速化を行いその点数を競う大会になります. ISUCONの名称は,Iikanjini(いい感じに)SpeedUp Contest から取られています.この名称の由来を聞いたら緩そうな大会に感じるかもしれませんが,中身はガチな大会となっています.
年一回で行われており,1チーム3人まで,最近は約600チームが参加しています.有名企業がスポンサーを務め,予選大会で上位30チームまで絞られ,本戦で優勝したチームには賞金100万円です!前述しましたが,今年のISUCONはまず参加するのが一苦労でした. つまり,Webエンジニアにとってはロマンあふれる大会ということですね!
私は去年初めて参加しましたが,正直な感想は難しすぎて何が何だか分からないっていうのが本音でした.結局SQLの最適化・インデックスを貼ったぐらいで全然戦力になりませんでした. ということで,今年もチャレンジです!
事前講習座学編の学び
事前講習座学編の資料に関しては,既に公開されているため,気になる方は下記を見てみてください!
今回の記事では,本当に一部を抜粋して書いています.
「やっていいこと」は明言されていない
ISUCONはレギュレーションに禁止事項がしっかりと書かれており,開始直後にまずそのルールを確認することがとても大事です.反対にやっていいことに関しては,特に制限がありません.挙動が変わらず,禁止事項に触れていなければ基本的には何をやっても大丈夫です.3台のサーバーが渡されますが,役割も自由です.ある年ではサーバー2台をDBにあてることで良いパフォーマンスが出ることもあったそうで,その時々のお題のサービスの特徴を掴んで対応する力が必要になります.
ISUCONではクライアント以降全てが対象領域
ISUCONでは,対象となる技術領域がとにかく広いです.サーバーもEC2が渡されるため,OS等の知識がもちろん必要です.最近はECSばかり触れていた自分は楽をしていたなという気持ちにさせられます笑.そしてnginxからアプリケーションコード,RDB,KVS,Cacheなどてんこ盛りです.その分学びもたくさんあり楽しいですが..
デプロイに1分以上かけない
改善した内容を反映するデプロイは,脳死でできるように準備しておきましょう.改善して負荷試験をしてログを見て次の改善ポイントを探す一連の流れが制限時間内で何回行えるかが大事になります.そのため繰り返し行う手順はとにかく素早く行えるように準備しておこうとのことでした.
ISUCONから学べること:世界中にクライアントが増えていく
座学も面白かったのですが,個人的にその後の,「世界中にクライアントが増えていく」というお話がとても興味深かったです. IoT化が進み,いつか日本世帯全ての炊飯器が通信すると5000万台がサーバーに,「ご飯が炊けましたよ」の時代が来るかもねというお話でした.この大量の通知でサーバーが死ぬかもしれません.こういった時代が来るのであれば,性能改善の重要性はますます高まります.危機的なお話ですが,ワクワクしながら聞いてました!将来そういった部分も担当したいなと思ったり..
さいごに
だいぶかいつまんで書いてしまいましたが,ISUCONの雰囲気が少し分かる感じならいいかなと思います.まだまだ2回目のISUCON初心者なので,予選までに練習を重ね,色々知見を深めたいなと思います.