はじめてのISUCON
2015-09-28に「お前それ糖質警察の前でも同じこと言えんの?」チームの一員としてISUCON5に出場してきました。
経緯
去年くらいからISUCONに興味はありましたが、
- ISUCON出場者怖い
- ぼっちなので一緒に出る人がいない
という問題により出場していませんでした。
ところが、今回知り合いのチームに欠員が出たということで声がかかり、軽い気持ちで「出て良いなら出ます!」的な返事をしたら出ることになりました。流れとはいえ、一歩踏み出すの大事。
やったこと・結果
さらっと思い出せるあたりだと、以下の様なことをしました。
- Nginx -> UnicornをUnix Domain Socketに
- SQLのチューニング
- インデックス貼ったりOR削ったり
- get_userのクエリ削減
- 横着してmemcached使ったけどダメだった。
- my.conf
- バッファ量変えたり
- commentsにカラム追加
- NginxとUnicornのworker数変更したり
- メンバーが持ってきてくれたカルパスを貪り食った。
スコア
最終的なスコアは2896でした。
正直、「もっと頑張れただろ!」という悔しさが残る点数です。本当に悔しい。
反省点
- 過去問やるとか言っておきながらやってなかった。
- プロファイリングが甘かった。
- 優先順位がいろいろ間違ってた気がする。
- 横着せずちゃんとN+1を消すべきだった。
- initialize時にもっといろいろできた。
- メモリを1.7GBくらい遊ばせていてもったいなかった。
- 会場のwifiパスワードとかは事前に調べておいてもらうべきだった。
- テザリングで戦ったが、精神衛生上よろしくなかった。
所感
全然スコア取れてないのにこんなこと言うのもアレですが、非常に良い問題だったと思います。奇をてらわずに真面目にチューニングしたら、それだけで10000くらいは出そう。ベンチマークツールも公開されたようなので、もう一度挑戦したい。
事前のチーム内での予想だと「HTTP2とか来るのかなー」「Elasticsearchかなー」みたいな話をしてたけど、終わってから思うと@tagomorisさんの「もはやISUCONは予選で落ちる人の方が多くなった。その人達にとっては予選こそがISUCONなのだ」*1という発言がそのまま問題になっていた気がする。
500系を大量に返すと確実にスコアが伸びないというレギュレーションも、現実からあまりにも乖離した「ISUCONでしかしないこと」を減らす方向に働いて個人的には好きです。
関係者のみなさま、ありがとうございました。
さいごに
大事なことなのでもう一度書いておきます。
めっちゃ悔しい
僕が「エンジニア」と名乗らない理由
はじめに
徹頭徹尾ポエムです。
いくつかの小さな理由
決定的な要因ではないにせよ、僕がエンジニアと名乗らないのには以下のようないくつかの理由がある。
- 工学の学位を持っていない。
- 「エンジニア」はソフトウェアエンジニアだけじゃない。
- 変圧器を作る人だってエンジニアだし、ロケットを飛ばす人だってエンジニアだ。
- 「プログラマ」の方が1語で端的に表現できる。
本当の理由
「エンジニア」の定義はいろいろあると思うけど、個人的には「技術を用いて問題を解決する人」だと思っている。
そういう定義のもとに自分を見たときに「問題を解決しているか」という点に自信が持てない。まったく解決していないということはないと思うが、エンジニアと名乗るに足る成果を上げられているかというと、かなり懐疑的である。
また、ソフトウェアエンジニアに限らずエンジニアというのは尊い職業だと思っているので、自分のような者が軽々に名乗ってはいけないという思いがある。
一方、「プログラマ」であれば、超一流ハッカーから入門者まで「コードを書く人」一般を指す言葉だと思っているので、自ら名乗るのに抵抗がない。
ただし、「プログラマ」が幅広いレベルの人を含んでいるからといって、その中のどの位置にいても良いと思っているわけではない。そのせいか、コーダーとかPGとか言われると少しムッとする。
とはいえ
会社からは「エンジニア」という肩書きをもらっているので、会社の人間として名乗るときは「エンジニア」と名乗っていきます。 また、いつか胸を張ってソフトウェアエンジニアと名乗ることができるよう頑張っていこうと思います。