正の点数記録されてほしい #isucon
— うたがわきき (@utgwkk) 2016年10月22日
チーム 😇*1 として参加しましたが、ざっくり言って完敗でした。やはり本戦の問題は難しかった……。
問題の詳細やら、やったことやらはチームメイトの2人が書いてくれるだろうし、そもそも酔っ払った状態でまともな文章が書けるとは思えないので、ここではざっくりと書いていきます。
ここから追記 (2016/10/26 20:09)
チームメイトの記事が出ました!!!!!
https://www.wass80.xyz/blog/2016/10/24/isucon6-final/www.wass80.xyz
寿司とビール問題知らなかった……。
ここから追記 (2016/10/27 19:34)
チームメイトの記事が出ました!!!!!!
当日の様子がしっかり書いてあってすごい!!
ここまで追記
ようは pixiv Sketch っぽいサービスを最適化するという問題でした。React.js や Docker や SSL や Server-sent Events など、過去問にはなかったようなモダンな技術をふんだんに使った設定で、これがかなり曲者でした。
まず、お絵描きアプリは Node.js の実装しか与えられていませんでした。JSON を返すサーバーのみ各種言語で実装されていて、それらは Docker で管理されていました。MySQL も Docker 上で稼動していました。じつはここがポイントで、不必要な Docker 化をやめなければいけなくて、実際に問題を作られた方からもそのようにうかがったので、なるほどなあと思いました。
なぜか見たいポートが開いてなくて、どうしてだろう、iptables はおかしくないし、ufw も切ったのに、と思っていたところ、Azure にそのようなフィルタリングの設定があり、ずっと引っかかっていました。うーむ。
あと、なぜエンドポイントが HTTPS なのかずっと分からず、とりあえず nginx で HTTP2 対応させたりしていたのですが、SSL のセッションキャッシュなどを Node.js でやると重いということを聞き、これもなるほどと思いました。
とりあえず絵の情報を Redis でキャッシュしようという作戦に出ましたが、Redis のライブラリの仕様をちゃんと把握していなくてずっとはまったり、Node.js 上だと型が変わってしまってよくないことが起こったり、などにずっとはまっていて、結局断念……。ここは練習が足りないという感じでした。
けっきょくサーバーが複数台与えられているのを何も活かせなかったのはさすがにどうにかしたかった……。
予選はなんとかなっても、さすがに本戦は一筋縄でいかなかった、完敗、来年に期待、正の点数が記録されてよかった、という感じなので、これから勉強していきたいです。
#isucon 本戦に備えて nginx 実践入門を買いました!!! pic.twitter.com/0mvsU4vh3u
— うたがわきき (@utgwkk) 2016年10月21日
ちょうど nginx 実践入門を購入したので。
運営のみなさま、楽しいイベントをありがとうございました。勉強になりました。来年も参加したいです。
*1:チーム :innocent: としてエントリーしたら、なんとわざわざ絵文字に変換していただき、standings にずっと 😇 が出ていておもしろい感じになっていました(すみません)