ISUCON公式Blog

ISUCONとはさくらインターネット株式会社が運営窓口となって開催している、お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトルです

ISUCONの過去問に
チャレンジするための
シンプルな環境構築
商標「ISUCON」利用の
ガイドラインはこちら

ISUCON9 レギュレーション違反の対応について [追記あり]

9/12 22:00 自己申請による失格について再度検討を行った結果を追記しました
9/12 18:00 平文での格納について一部表現を変更しました
9/11 21:38 本選出場の取り消し無効にする対応を追記しました
9/11 17:30 bcrypt についての一部表現を訂正しました
9/11 17:09 経緯についての追記を行いました

ISUCON9 予選においてレギュレーション違反があり、本選出場者の繰り上がり対応を行いました。

経緯としては、マニュアルの制約事項にあった「パスワードを平文で保存すること禁止する」が該当しました。パスワードの保存の規定については、ISUCONの競技の性質上すべてをチェックすることは難しく、参加者の申告に基づき判断をしております。そのため、競技終了後すぐに判断することは出来ずこのタイミングとなりました。

[9/11 17:30 追記]
運営の対応についていくつかのポイントで説明責任があると考え、追記いたします。

◾️ 問題作成の経緯について
課題アプリケーションのパスワード保存にbcryptを採用した経緯ですが、参考実装を提供する各言語で実装があり、saltの付与やストレッチングが可能であり安全なアルゴリズムとして広く利用されていると判断し、採用しました。

ベンチマークの試行中において、キャンペーン機能による大量の購入リクエストを行うため、ログインが多く発生するようになっています。その結果として課題アプリケーションに問題作成者自ら取り組んだところでも、bcryptによるCPU使用率が目立つことは認識しておりました。

bcryptによる負荷の対処方法として、サーバを追加、軽量なハッシュ関数での代替、あるいは平文での保持を開発チームにおいて想定しましたが、現実の問題として、パスワードなどの情報流出などの事件が発生しており、安全性の高くないアルゴリズムの利用、平文での格納は一般的に推奨されない実装方法だという認識を同時に持ちました。
※9/12 18:00 一部表現を変更しました

ISUCONの課題アプリケーションとして、bcrypt の負荷を解決し高いスコアを出す方法がサーバの追加の一つだけであることは避けたく、bcryptの変更禁止ではなく軽量なハッシュ関数での代替を可能とする、「平文での格納を認めない」という文言をマニュアルに追加しました。例え、bcryptの維持であってもそれを検証することは難しく、参加者からの申告をもって失格の判定を行えば十分であろうと想定しておりました。
Read more...

ISUCON9 予選問題の解説と講評

予選の問題作成を担当したメルカリのkazeburoです。

ISUCON9の予選に参加していただいた皆さま、ありがとうございました。
お楽しみいただけましたでしょうか。

また、主催の941さんをはじめとするLINEの皆様、ポータルの作成と運用をやっていただいたさくらインターネットの皆様、問題作成と事前回答に協力にいただいた皆さま、サーバ環境を提供していただいたアリババクラウドの皆さま、本当にありがとうございました。

問題の公開

今回の予選問題のソースコード、データ、およびプロビジョニングに使用した設定ファイルなどは以下のリポジトリで公開しております。アプリケーション、ベンチマーカーを起動する手順もありますので、手元で挑戦することもできるかと思います。

https://github.com/isucon/isucon9-qualify

蛇足ですが、本リポジトリのコミット数は1,700以上、PRも400件以上あり、これまでのisuconのコードの中でも規模の大きなものとなっています。

課題アプリケーション

今回課題となったアプリケーションは、椅子を売りたい人/買いたい人をつなげるフリマアプリ「ISUCARI」です。
a1

参加者より「弊社の椅子が勝手に売られている!」などの声も上がった商品画像は、941さんより提供していただきました。

新着商品タイムライン、カテゴリ・ユーザごと商品一覧、取引をしている商品一覧や商品詳細といったページがあり、購入や売れた商品の配送に関わる機能もあります。ソースコード中の webapp/docs/APPLICATION_SPEC.md にアプリケーションの使い方を簡単にまとめてあります。予選に参加したけど見ていない方、これから問題にチャレンジする方も参考にしてもらえると良いかと思います。

アプリケーションの参考実装のソースコードとは別に、2つの外部サービスである「決済サービスAPI」「配送サービスAPI」があり、購入や配送の際にアプリケーションからこれらのAPIと通信を行います。
Read more...

ISUCON9 オンライン予選 関連エントリまとめ

・10/3 18:00 更新終了

オンライン予選にご参加いただいた皆さん、ありがとうございました!
こちらでは感想エントリや何をしたかに言及されたエントリをまとめていきます。見つけた順ですが後で何かしらのルールで並び替えます。もしここに載っていないものがある場合は ISUCON9 オンライン予選のブログ書いたよ!フォームで教えていただけると助かります。重複はこちらでチェックしますのでドシドシお願いします。

ブログを書くまでがISUCON予選です!

予選のTweetはこちらでまとめています
▼ISUCON9 オンライン予選 Tweet まとめ #isucon - Togetter

運営
・ISUCON9予選の出題と外部サービス・ベンチマーカーについて - catatsuy - Medium
・mercari.goで「ISUCONのベンチマーカーとGo」というタイトルの発表をしました - catatsuy - Medium
・ISUCON9予選でフロントエンド周りの実装を担当した話 - はらへり日記
Read more...

↑このページのトップヘ