同僚の@oinume@oranieと参加してきました。結果は予選落ち。予選くらいはいけるんじゃねーかな…と思ってたけど全然甘かった。



感想

また参戦(リベンジ)したい。普段の仕事では味わえないおもしろさがあった。運営の皆さまありがとうございました: )
試合当日までは「もし惨敗しそうになったらCassandra入れよう」みたいな話を冗談でしていたんだけど、ネタに走る余裕すらなかった。おもしろかったので一年後にまた参加したいね(一年後また開催されると勝手に思っている)。コンテスト対象外でいいから本戦やらせてくれないかな?w 本戦はおそらくサーバも複数台構成だろうしきっとおもしろいんだろうな、と思う。

やったこと

チーム全体としてやったことは@oinumeさんのブログに書いてあるとおり。んで、以下フロント担当となったおれがやったこと。

  • Apacheのログをapachetopにかけて解析。
  • 静的コンテンツをWebサーバから返すように変更。これは当然やるよね、ということで一番最初に実施。そこそこスコアに寄与あり。
  • jquery-1.10.2.min.mapが404だったので、touch /var/www/html/js/jquery-1.10.2.min.mapする。
  • Webサーバをnginxに変更。リソース使用量はApacheより軽減できたがこの時点ではスコアにはそれほど寄与せず。
  • コンテンツは圧縮はしないようにする。今回はローカルからのベンチだしトラフィック負荷の軽減には寄与しないハズ。実際効果なかった。無駄にCPU食うだけ。
  • そろそろ担当を崩すか、という話になってアプリケーションの修正(キャッシュできそうなものをmemcachedにいれるなど)をちょっと手伝い始める。
  • スコアが伸びないので、ちょっとやってみようかと思ってnginxの前段にvarnish導入。failが出まくってScoreは0になる。んで慣れないことはやるものじゃないと思ってvarnishはあきらめる(あきらめなければ良かった)。
ダメだった点
  • チームとしての連携不備が多かった
    • 担当を決めてそれぞれの領域でがんばるという作戦が有効に作用することもあると思うが、おれらの場合それは当てはまらなかった。それぞれの領域に固執しすぎた。3人で参加したのに1+1+1が1.5くらいになってしまったイメージ。変に担当を決めずに、ボトルネックを見つけたらそこを2人、場合によっては全員で攻める、というような方針の方が良かったのではないかな、と…。一つ一つ確実に問題を潰していくというか。
    • んで、担当を崩したら崩したで、「order byのところ直してますよね?」「えっ?やってないっすよ」みたいな”(誰か)やってるよね?”的な普段の仕事でもやったらNGなパターンも発生。これはガチ反省。
  • ブラックボックス的に解析していた
    • 目の前にソースがあるというのに、ベンチとってログやリソースを見る、というようなやり方ばかりだった。これはこれで間違ってはいないと思うが、たかだか300行程度のソース+テンプレートなので、まずはソースをじっくり読めばよかった。
  • できそうなことからやってしまった
    • 大きなボトルネックとなっている個所からではなく、気がついたところから攻めてしまった。「カウントとるSQLが無駄だね」「あ、じゃあなおしますよー」といった”気がついたらとりあえずやる”みたい動きは良くなかったな。もっと重要度の高い問題から攻めるようにしないと…。
良かった点
  • 刺激になった。自分がカスだということがわかった。
自分的に

フロントを任されたのにも関わらずその技術力が全然足りない。特に動的コンテンツのキャッシュとか。トップ層の人のブログでnginxで頑張れば万単位のスコアが出ることを知って凹んだ。上述したけど最後までvarnishをがんばってもよかったかもしれない。failしたとはいえ結構なスコアが出せそうだったので。なぜあきらめてしまったのか…。終わった後の反省会が本当の反省会になった。

おわり

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Set your Twitter account name in your settings to use the TwitterBar Section.