uzullaがブログ

uzullaがブログです。

ISUCON11 予選敗退しました!

isucon.net

タイトル通り!今年は予選敗退です!!!去年のようなミラクル(?)は無し!夏が終わった!!!

f:id:uzulla:20210823213545p:plain

最終は63000点でした!最後のプルリクマージしたかったなー!それでバーン!と10万!(希望が現実的すぎる)やりたかったな〜!できなかったが!

ぶっちゃけ、あんまり書く事がないな!と思ってるんですが、やっぱりイベントって感想を書くことが一番の感謝だと思うので、やはりエントリかかないといけないし、エントリ書きます。

導入

まず、CFで一発で起動するので、起動中にマニュアル読めるのがよかった。

そこからも(予選問題が素直なのもありますが)ちゃんと素振りをしていたので、課題を探すこと自体はスムーズでした。

いつもと違って(?)13時くらいまで「どうするか」みたいなのをさぐりつつそこからバーンって実装していったのが「あれ!?これ順調じゃねえ!?」みたな感じでよかったです、すくなくともその瞬間は。

あと、最後まで「もうなにもやることがない…」にならず、「ここだ!!」みたいに見つかっていくのはヒリヒリした楽しさを感じましたね。(最後の5分までコードかいてた、マージできなかったけど!w)

(当時のISSUE、まあ最後は更新されていないが) github.com

力不足!!

「実装しきれなかった」というのは単純に実力不足でしたねー…いやでもそれが解るってのは個人的には成長かなって思うので(この歳でいうセリフか?)「後は頑張ればいいんだな」って感じでよかったです。

なんだかんだ普段からN+1をやっつけていますが、昨今は「無理にN+1やっつけなくていい、読みやすさ重視」という場面も多く、ヌルくなっていました。集計系のSQLをもっともっと素振りしておくべきだったなと反省しております。

チームメイトのonkさんと「これSQLあってるの?」「あってます!(あってない)」みたいな会話を3回くらいはしたので本当に反省です。

(しかし、ベンチマの整合性チェックをどうやってエスパーしていくか、永遠の課題じゃないか??)

使ったツール

若者から聞かれたので一応かいておきます

  • alp
  • pt-query-digest
  • pprof
  • dstat
  • htop

以上です!結局デバッガも使わんかったな(Print debugだけ)

なんだかんだで素振りしていくと、予選くらいの複雑度ならここらへんのツールに収束していく気がします。 (ただ、これらの情報はダイジェストなので、コードを見ての予想の答え合わせみたいな所があり、「答え」はでてきません>聞いてきた人へ)

事前ではSplunkのリアルタイムさ(秒で反映される)に感動し、使おうかなと色々調べていたんですが、Goに色々仕込んだり外したりする手間をかんがえてあきらめてしまいました。とはいえ、サーバーの負荷系を見るためだけに入れるのはよかったのかもしれないな、なんともいえないが。 (ISUCONは負荷が1分で、30分で仕込んで30分で外せないと困る、という異常な世界観なので、Splunkが現実において不便とかそういうことではないです)

くやしい凡ミス

一番やらかした所は、初盤〜中盤あたり、デプロイスクリプトをちょっと改変したとき、IPアドレスを直書きしている箇所でミスってしまい、2番のサーバーにデプロイしているつもりで、ずっと3番にデプロイしている!というひどいやらかしがありました。

どうやってもログがでてこないからおかしいおかしいと散々なやんでjournaldまわりやミドルウェアの調査をしてしまっていた…。

これなかったら最後のプルリクとおせたんちゃうか?もう二度と間違えんぞとなりました。

チームメイトには「ついにおかしくなったか」とおもわれていたらしい、まあ実際スクリプトがおかしくなっていました。

そういえばGoでした

ウチのチームがPHPじゃなくてGoで行くと決めたのは私なんですが、大した理由はなくて、直接聞いてくれればはなしますけど多分聞かれないので端折ります!

実際ISUCONとツール作成くらいにしかつかってないんですが(少なくとも「ウェブアプリ」はGoでつくってない)、積み上げてきた知識が普通に使える所はいいですね、『便利機能なんて無いぞ』というストロングスタイル。

一応書いておくと別にGo企業にはいったとかないです、これからもPHP書きます。 (今回のPHP実装後で見ましたが、すごかったですね)

来年に向けて

単純にコードを書く速度をもっと上げないといけないのと、そろそろSQLは全部勉強しなおさなきゃダメですね。手癖でやっていることを痛感しました。Redis今回つかわなかったんですが、多分Redisもそんな気がします。

つまりは単なる実力不足でしかないので、次回に向けては色々シンプルにやっていけそうだな!という感じです。

イベントとして感動した点

今回の予選運営は素晴らしくて困る所はゼロでした。たまにポータルとDiscordみてれば間違いがないので、不安がゼロです。過去最高のオンボーディングと思います。

当日もCFのおかげでワンタッチで起動でき、終了もボタン一発なのは寂しさが生まれるほどに便利で素晴らしい。素振り環境もこれでやりたすぎるなという気分です(AMIの維持代だれが払うんだ?という話はさておき)

同様に(?)インフラ担当をやってくれたmoznionが、あらゆることを自動化でシュッっとやっていて、本当に時代は自動化だなーーって思います。 いや、自分も自動化してないかといえばそうでもないんですが、N回くらいまでなら手でもいいかと日和ってしまうのを改めないとなという感じですね。

時間をつくればその分コードが書けるし、もっとやっていきたい。

まとめ

やっぱりISUCONはたのしいですね。普段泥臭いことばっかりやってるので(いやISUCONも泥臭いのだが)比較対象がないんですよね。別に絶対的なものさしではないことを前置きしつつも、それでも「わかりやすい」目標にむかって何かするのはたのしい。

運営、スポンサー、参加者、チームメイト、その他諸々の皆様に感謝しつつ、次回を楽しみにしたいと思います。ありがとうございました!