3K Views
March 13, 24
スライド概要
この資料はISUNARABE LT#1の発表資料です。
ロシア企業VK(mail.ru)が主催する、「HighLoad Cup」や「All Cups」というコンテストの紹介です。 これらのコンテストは、ISUCONとは異なり、約2週間の長期的なもので、競技中に常時サーバを用意する必要はなく、参加者はDockerイメージを提出する仕組みです。過去問(sandbox)は開催後いつでもチャレンジ可能で、参加者が頑張ってフルスクラッチで制作する必要があります。また、参加者はあらかじめ用意された参考実装はなく、ロシア語(+英語)の仕様書とテストデータが用意されているため、翻訳精度が低いことが学びの1つでした。ランキング上位の解法が異次元であるなど、大変な経験になることがわかりましたが、和や英語への翻訳の問題点もあるなど、多様な学びがありました。
海外のISUCONっぽい コンテストの紹介 ISUNARABE LT#1 matsuu
自己紹介 matsuuです 好きな過去問 ISUCON13 ISUCON13の結果 49,344(30位) 最後の散髪から4年経過
おことわり 今回紹介するのはロシア企業が主催し ているサービスですが、ロシアの国内 事情や政治的な立場に対して賛同す る意図はありません。
HighLoad Cup / All Cups ロシア企業VK(mail.ru)が主催する高負荷コンテスト 2017年、2018年にHighLoad Cupが開催 2021年にAll Cupsに場所を移してGold Rushが開催 HighLoad Cup https://highloadcup.ru All Cups https://cups.online ※All Cupsはアルゴリズム、ML、AIなどのコンテストも開催しているが現在はロシアからの み参加可能
出会い 2018年にHighLoad Cupの存在を知ったが、既に2018年分は終了していた 過去問が公開されており、いつでもチャレンジできる仕組みになっていた (現在は新たなアカウント作成ができず過去問にチャレンジできません) 2021年のAll Cupsには実際に参加、参加者197人中33位 参加記はこちら→ https://matsuu.hatenablog.com/entry/2021/04/10/221403 「gold rush write-up」でググれば出てくると思います
どのような問題だったかざっくり説明 HighLoad Cup 2017 https://highloadcup.ru/en/round/1/ 旅行者のための情報登録/検索サイト(HTTPサーバ実装) HighLoad Cup 2018 https://highloadcup.ru/en/round/6/ マッチングアプリサイト(HTTPサーバ実装) All Cups Gold Rush https://cups.online/en/contests/goldrush 高さx幅x深さ10マスを掘って金塊を探す(HTTPクライアント実装)
ISUCONと異なるところ ● 8時間耐久ではなく約2週間の長期戦 ○ ● 競技中に常時サーバを用意する必要はない ○ ● Dockerイメージを提出する(詳しくは後述) あらかじめ用意された参考実装はない ○ ○ ● 過去問(sandbox)は開催終了後にいつでもチャレンジ可能だった(ランキングあり) ロシア語(+英語)の仕様書とテストデータが用意されているので頑張って実装する Telegramで随時質問できる(ロシア語が飛び交ってたが英語で okだった) あらかじめ用意されたデータベースも当然ない ○ ベンチマークの際に大量のデータ流し込みがあり、その後大量の検索がくる
学び ● 仕様書とテストデータからフルスクラッチで作成するのは大変 ○ ○ ● ロシア語から日本語(もしくは英語)への翻訳精度は低い ○ ○ ● ISUCONのリファレンス実装のありがたみを知る でもいい経験になった Telegramのチャット内容を Google翻訳しても意味をうまくつかめない 口語だからかな? ランキング上位の解法が異次元だった(gold rush) ○ ○ 乱数の発生パターンを予測して金塊を無駄なく探索 ロシアの技術者レベルの高さを思い知った
ベンチマークまでの流れ ● 手元でコンテナイメージを作成する ○ ● コンテナレジストリに指定されたアカウントでログイン ○ ● docker tag myimage registry.example.com/accounts/アカウント名 コンテナイメージをコンテナレジストリにpush ○ ● docker login registry.example.com 手元で作成したコンテナイメージに指定されたタグを付与 ○ ● docker build -t myimage <Dockerfileが存在するパス > docker push registry.example.com/accounts/アカウント名 pushをキックとしてサーバ側でベンチマーク実行、結果反映
この仕組みの嬉しいところ ● 競技者はDocker環境さえあれば参加できる ○ ● クラウドサービスとの親和性が高い ○ ○ ○ ● コンテナイメージがあれば環境構築も容易 AWSであればECR+ECS+Fargateとか AzureであればACR+AKSとか Google CloudであればContainer Registry+Cloud Runとか 低コストで一貫したスコア計測環境を用意できるかも ○ 運営側でベンチマークを動かしてランキング生成することも夢ではない
ISUNARABEのような サービスを新たに構 築する際には参考に してみてね
終劇