今までどおり、 @gaooh, @froncool の2名と。
今回のお題は、ログインのアカウントロックですね。
- n回連続で失敗したらそのアカウントをロックする
- n回連続で失敗したらそのIPアドレスをロックする
みたいなの。
役割が被って残念なのは今までに経験してるので、流れでこんな感じの分担に。
- @gaooh -> 実装
- @froncool -> ミドルウェア
- @iszk -> 悪知恵、ロジック
言語は、@gaooh が一番実装しやすいRubyで。
今回の悪知恵としては、
- usersテーブルが20万件しかなくて実質 login と password しかなかったので、それをプログラム内に静的なhashとして持ってしまったこと
- / へのアクセスが4種類(ログイン前、ログイン失敗時のエラーメッセージ3つ)なので、エラーを /?err1 みたいな感じへのリダイレクトにして、前段のキャッシュを効かせたこと
後者に関してはベンチマークさんの挙動がちょっとおもしろくて、 /err とかに飛ばすと「そんなURLにアクセスしてんじゃねーよ」ってfailになるんですが、 /?err とかに飛ばすと見逃してくれたんですね。なのでその挙動を利用させてもらいました。
この悪知恵を入れたのと、あとmysqlに持っていたログイン履歴のデータを必要な部分だけ最適化してmemcachedにする、と言う内容でした。
結局。
最後までレポートが合わないバグが取れずに初期スコアでの送信になりました。
参考スコアとしては、workload=8で4万くらいだった気がします。
@gaooh「ほかのブログをみると私の実装力があれば決勝いけましたねorz うぐぐ」
ということなので、惜しかった…と言うことにしておきます。