「Web Speed Hackathon 2022」という「非常に重たいWebアプリをチューニングして、いかに高速にするかを競う競技」があります。 リモート参加で11月1日から27日まで開催されています。 ここで言う「高速」とはCore Web Vitalsのスコアが高いことを言い、Lighthouseのスコアをベースにした500点満点の争いです。 ISUCONのフロントエンド版ですね。 以前にも同じ課題で「学生向け」と「社内(サイバーエージェント)向け」が行われたらしく、まだ500点を出した人はいません。 そこで僕は「満点を出したい」と思い、初日から、いやむしろフライングしていたからその前から頑張ってきました。 そして、先日(17日)、ついに500点満点を出しました! たぶん、レギュレーションはクリアしている、はずです(もし違反してたらすいません…)。 自動で行われる「Visual Re
こんにちは、ぬこすけです。 近年、Webフロントエンドではサイトのパフォーマンスの重要性が高まっています。 例えば、GoogleはCore Web Vitalというパフォーマンスに指標を検索結果のランキング要因に組み込みました。 また、近年の某企業が「パフォーマンスの改善に取り組んだ結果、セッション数〇%アップ、CVR〇%アップ...」などの事例は枚挙にいとまがないでしょう。 パフォーマンスチューニングするためには、定量的に計測してボトルネックを探すようなトップダウンなアプローチもあります。 しかしながら、時には千本ノック的にハウツーを片っ端から試していくボトムアップなアプローチも有効になることもあったり、日々のコーディングでパフォーマンスを意識したコードを書くことは大切でしょう。 この記事ではパフォーマンス最適化のハウツーを紹介します。 パフォーマンス改善の施策が思い浮かばない時やフロン
IT系に身を置いていると、つい新しい知識ばかりを追いかけがちになるけど、CS的な基礎知識や、Linuxのコマンドとかの(もちろんソラでコマンド10個のオプションを言える必要は、無い)も当然大事なわけです。というか、土台となる知識が無いと、新しい知識がちゃんと身につきません。 だけど、普段使わない、手を動かさない分野のスキルはどんどん忘れていきます。歳をとると加速度的に忘れていきます。 そしてヤバいのは、分かっていることと、分かっていないこと、できること、できないことの区別がつかなくなることです。 人は分かる範囲でしか物事を理解しないので、「分かっていないことを知る」という行為を行なって「分かる範囲」を広げる、または最低でも維持する営みを続けていかないとどんどん判断する時に必要な材料が狭まっていきます。 Java 1.5の知識で、Java17時代の判断はできないですよね、10倍以上違うんだか
「達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践」という本を6名の共著で執筆しました。技術評論社さんから、2022年6月4日発売予定です。電子版もでます。 gihyo.jp Amazon はこちら。 達人が教えるWebパフォーマンスチューニング 〜ISUCONから学ぶ高速化の実践 作者:藤原 俊一郎,馬場 俊彰,中西 建登,長野 雅広,金子 達哉,草野 翔技術評論社Amazon タイトルの通り、ISUCON で出題されるようなWebサービスを例にして、Webサービスのサーバーサイドパフォーマンスチューニングを指南する内容です。通称「ISUCON本」と呼んでください。 2020年の末に、技術評論社さんからWebサービス高速化 × ISUCONに関する書籍を執筆しませんか、と藤原までお誘いをいただいたのが発端でした。 書きたい気持ちはあったものの、内容的にとて
ABEMA で Web フロントデベロッパーとして活動している 宮代 @3846masa です。CyberAgent Advent Calendar 2021 4 日目は、Web パフォーマンス改善のコンテストについてお話します。 TL;DR Web パフォーマンス改善コンテスト “Web Speed Hackathon 2021 mini” を開催します! 改善する対象は https://web-speed-hackathon-2021.herokuapp.com/ です オンライン開催で、12 月 4 日から 1 月 3 日までの 1 ヶ月間、好きなときに誰でも参加できます 記事の後半は、課題となる「重たい短文投稿サイト」を作るまでの開催記です はじめに CyberAgent では、Web パフォーマンス改善を競うコンテスト “Web Speed Hackathon 2020” を昨年
9月8日(日)に開催された ISUCON9 予選の2日目に1人チーム「 nil 」として参加し、全体1位となり本選出場が決まりました。 最終スコアは 52,440 イスコイン (ベストスコアは 53,460 イスコイン) でした。 このエントリーでは主に参加するまでにやってきたことと、当日やったことについて書こうと思います。 参加するまでにやってきたこと# 練習 (去年)# ISUCON には去年の ISUCON8 で初めて参加し、今年で2回目です。 去年は ISUCON8 に向けて毎週のように過去問の練習をしていました。 1年以上前の記憶ではありますが、今年はあまり練習することができなかったので、この経験や知恵が今回の優勝にも影響したと考えています。 練習 (直前)# 今年は他のことで忙しく ISUCON の練習をする時間が確保できませんでした。 そのため練習できたのは5日(木)から前日
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 追記] 運営の対応につい
はじめまして、田籠聡(@tagomoris)です。現在はフリーランスのソフトウェアエンジニアとしていくつかの会社で技術顧問をしつつ、個人的なプロジェクトの開発をしたりしています。これまでのキャリアとしてはISPやSIerで働いたのち、livedoor(およびその後のLINE)や、Treasure Dataといった会社で働いてきました。また、みなさんがご存じかもしれないものだと、ISUCONというイベントを始めたり、データ分析基盤関連の技術やFluentdをはじめとしたOSSプロダクトの開発に関わったりしています。 自分のキャリアを振り返ると、これまでいろいろと面白いプロダクトやサービスに関われてきました。一方で、自分にとって面白いプロダクト・面白い開発とは何かということが、経験を積むにつれて変化してきたとも思います。この記事では、何を面白いと思うか? どうやって面白いものに関わり続けていく
こんにちは、はじめまして。さくらインターネット株式会社の長野雅広(@kazeburo)です。Webの業界に入ったのは学生だった2000年頃で、キャリアは20年以上になります。おそらくこの業界でも長い方ではないでしょうか。20年の間にmixiやlivedoor、メルカリといった企業で働く機会を得て、どの職場でもサービスの裏側にあるインフラや、Webアプリケーションの運用を支える仕事、今ではSREと呼ばれるような業務に携わってきました。 そして今年の1月から、さくらインターネットにてクラウドを中心にサービスの開発を行っています。つまり、インフラやクラウドを利用して一般のお客様向けにサービスを作るという仕事から、クラウドを作ることを仕事にする、という選択をしました。 この記事では、どのような経験からSREとして働くようになったのか、また現職に至る選択をした経緯について語りたいと思います。加えて、
過去のISUCONで出題された問題をシンプルに環境構築できるページなどを紹介します。 初めてISUCONにチャレンジするという方は、事前講習のスライドや動画でISUCONの競技の流れをまとめています。2021年と2022年とそれぞれありますので参考にしてみてください。 AWS環境で構築するConoHaのVPSで構築するさくらのクラウドで構築するDocker環境があればすぐに構築できるVagrantとVirtualBoxがあれば構築できるWSL2があれば構築できるVirtualBoxがあればすぐに構築できるAppleシリコン搭載のMac上で構築する AWS環境で構築するmatsuu/aws-isucon: ISUCON過去問をAWS環境で構築するための一式ISUCON5 予選ISUCON6 予選ISUCON7 予選ISUCON8 予選ISUCON9 予選ISUCON9 本選ISUCON10
ISUCONとはLINEヤフー株式会社が運営窓口となって開催している、お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトルです ISUCON12 予選の解説 (Node.jsでSQLiteのまま10万点行く方法) こんにちは、面白法人カヤックのacidlemonです。例年ISUCONに参加するたびにとても長い「やったこと」ブログを書いているので、もしかしたらそちらを読んだことがある人もいるかもしれません。 ISUCONの公式サイトに記事を書くのは ISUCON3の予選の解説 以来でしょうか。今回もacidlemonが解説、fujiwaraが講評を書く予定ですので、お楽しみに。あ、そういえば先日掲載していただいた 面白法人カヤックからの応援メッセージ の脳内インタビューも私が書いていますのでよく考えたらそれ以来ということになるのかもしれません。予選
参考:チームメイトの記録です 本番前に行ったこと 競技環境の把握 重要文献を読んでおく 盆栽(本番で使用する ansible role)に手を入れる チーム練習をする 本番で行ったこと 初期状態の把握 初回のベンチマーク実行 初期セットアップ 各種マニュアルを読む モニタリングツールを実行しながらのベンチマーク実行 pprof 導入後のベンチにおいて 完走しないベンチマーク 収集する 順位表を確認する ボトルネックの再調査とそれを潰す作業 複数台構成を考え始める 平文保存はダメです Index 関連の作業が終わり、二度目の質問 getSimpleUserByID のデバッグをする 例のアレ 再収集 再起動試験 ログを全部切る 最終ベンチを実行する 以上が純粋な競技記録です ここから先は競技終了後の話です 失格の根拠について 失格取り消しの根拠について 運営チームの取れる・果たせる責任につい
DB は以下のコマンドで確認できる通り、MariaDB 10.3 でした。$ mysqld --version mysqld Ver 10.3.31-MariaDB-0ubuntu0.20.04.1 for debian-linux-gnu on x86_64 (Ubuntu 20.04) 当日マニュアルに記載の通り、各言語実装は systemd で管理されているため、systemd に関する知識があると良いと思います。特に、アプリケーションを編集しビルドした後、 systemctl restart isucondition.go.service を実行しないと編集が反映されないことに注意しましょう。 他にも例えば、isucondition がどのように環境変数を読み込んでいるかを調べるには以下のような手順で行えます。 当日マニュアルの参考実装の項目を読み、サービス名が isucondit
インフラにもアプリケーションにも最適化の余地あり。多様化するISUCONの出題傾向 「過去問に出ていないボトルネック」をいかに作るか。知られざる「ISUCONの問題」の作り方 工数管理、設計ミス……挽回すべきISUCON4の後悔 言語特性を考慮するのか?作問プロセスと、そこから見える「やるべき対策」 変化するISUCON。学生参加者はなぜ躍進したのか ISUCONは「学ぶ必要性」を作り出す場 インフラにもアプリケーションにも最適化の余地あり。多様化するISUCONの出題傾向 ── チーム白金動物園はISUCON常連チームのひとつですが、前回のISUCON9が初めての優勝なんですね。 mirakui はい。チーム白金動物園はISUCON3で参加者として初参加し、それから毎年ISUCONに顔を出していますが、優勝は前回が初めてです。ISUCONでは、予選を勝ち抜いたチームが本選に出場できること
リクルートアドベントカレンダーの20日目の記事です。 adventar.org 最初にこの疑問を思ったのは、今も忘れない R-ISUCON 2021 というリクルートの社内ISUCONの運営で炎上していた時の話です。 ちなみに R-ISUCON 2021 は劇的な結果で終わっているので、興味のある方は見てみてください。 blog.recruit.co.jp R-ISUCON 2021 では、 Node.js (TypeScript), Go, Java の3パターンの実装が出てくることが通例になっていまして、今回は Java の実装から Node.js, Go に適用していた時に一緒に実装していたメンバーからの疑問が『例外には色々な議論があるけれど、「例外を初めて実装した言語」ってどういう気持ちで実装したんだろう』という話が挙げられたので、そのネタを持ってきました。 ちなみにここで指してい
11月25日に開催されたISUCON13でチームNaruseJunとして参加し優勝しました。 メンバーはここ4年同じで、大学時代のサークル仲間の@sekai・@takashi・とーふとふの三人です。 昨年のISUCON12でも優勝したので、チームNaruseJunは二連覇となります。 最終スコアは468,006点でした。 スコアの推移は以下の通りです。 かなり順調にスコアを伸ばしていますね。後述しますが17時直後にめちゃくちゃ伸びているのは、ログを止めた結果です。 その他のスコアは↓ ISUCON13 受賞チームおよび全チームスコア : ISUCON公式Blog 事前準備 今年はチーム全員が忙しかったので、チームで最初に集まったのは11/14でした。 その日は30分くらいで今年の流れの確認と、素振りの日(11/18)を確定して解散しました。 ありがたいことに過去優勝チームとしてLodgeで
本記事は WebアプリWeek 最終日の記事です。 🌀 4日目 ▶▶ 本記事 🌴 はじめに 負荷試験は何のために? どんな負荷試験を実施すればいいのかを考えてみる 負荷試験の種類 負荷試験で確認したいこと どの負荷試験を実施するか おわりに 参考 はじめに はじめまして、WebアプリWeek5日目を担当しますNTシステム事業部の勝浦です。 みなさん、負荷試験してますか? システムの特性上そんなに負荷かからないし、性能も求められないし、、 と負荷試験を実施しない場合もあるかと思いますが、負荷試験をしてみると意外な箇所に落とし穴があったりすることに気づくものです。 私自身、今まで何度か負荷試験を実施する機会がありました。 本記事では負荷試験を実施するにあたって、私がはじめに考えていることを書き出してみたいと思います。 負荷試験は何のために? 「負荷試験やっておいてね」と言われたとき、まず何
こんにちは!ISUCONの運営をしている櫛井です。 タイトルの通りなんですが、ISUCONに参加される方やISUCON的な状況において使えるLINEスタンプを作りましたのでお知らせいたします。 というわけで、どんなスタンプか紹介していきたいと思います。ISUCONライフのお供に是非お使いください。 思わず椅子を投げたくなった時にお使いください 計測が必要な時にお使いください 誰と組むべきか悩んだ時にお使いください ISUCONの前日にお使いください 起床に成功した時にお使いください 残念ながら起床に失敗した時にお使いください 本選出場が決まった時や、本選で会いたくなった時にお使いください Failした時にお使いください やれることがない時にお使いください お茶を汲むくらいしか出来ることがない時にお使いください 神々の遊びだなぁと思った時にお使いください N+1だと思った時にお使いください
遊撃エンジニアの @anoworl です。最近はメンバーを巻き込みつつ転職ドラフトで指名をして指名承諾率1位になったり、SaaSをReactやReduxと戯れながら開発してちょっとだけSPAが分かった気になったりしました。 この記事では「CM放映期間にサーバを落とさない方法」と題して、昨年12月〜今年の1月のCM放映時行っていたことを紹介したいと思います。↓このCMです。 CM放映期間は記事に書いてあることを実践し、事前の負荷試験では元の10倍の負荷に耐えられるようにしました。 その結果、5xx皆無とか99パーセンタイルレスポンスタイム完璧!とまではいきませんが大きな障害も無く、分かりやすい値だとNew Relicで測定しているUptimeは期間中100%を記録しました。 Uptime 100% ! 注意事項 この記事は、私自身CMを放映することになった際まとまった情報がインターネット上に
ISUCONとはLINEヤフー株式会社が運営窓口となって開催している、お題となるWebサービスを決められたレギュレーションの中で限界まで高速化を図るチューニングバトルです ISUCON10 予選において発生していた、競技開始の遅延をはじめ、ベンチマーカーの不具合、ポータルの 50x エラー等、度重なるトラブルについて詳細を説明させていただきます。 運営チーム一同として、様々な要因から複合的なトラブルに発展させてしまったという認識です。これらの反省点を踏まえ、同種のトラブルを起こさぬよう、次の運営チームへ反省点やデータを引き継いでいきたいと考えています。その観点において、以下に ISUCON10 予選で発生していた各種トラブルの背景・原因について振り返ります。 競技時間の延期についてまずは ISUCON10 予選の競技時間が、当初予定の 10:00 開始から 12:00 、さらに延期して 1
使用した言語 解析ツールの準備 本番前 一ヶ月前 一週間前 本番 開始前 00:00 開始 01:00 - 様々なツールの整備が完了 01:30 最初の気づき bcryptは遅い 03:00 平文保存のコードが一応完成 03:30 バグが取れる 03:30 ベンチ走らせまくり 04:00 第2の気づき: getNewCategoryListが遅い 04:00 第3の気づき: MySQLのチューニングが効きそう 04:20 大量に平文パスワードをかきあつめおわる + MySQLのチューニングをしたりする 04:30 getCategoryByIDをバグらせる 04:35 getCategoryByIDが直る 04:40 getSimpleUserByIDのオンメモリ化に取り組む 05:00 第4の気づき: getNewCategoryList内のクエリは非効率的 05:00 第5の気づき:
ISUCON12 オンライン予選の利用言語比率を公開します。オンライン予選は698チームの参加があり、運営で利用言語を把握できたのは568チームとなりました。 ※最後のベンチマーカー実行で初期化リクエストに失敗したチームは利用言語が不明となっています オンライン予選 利用言語比率利用率の全体ランキングは以下の通りです Go 402組 70.8% Ruby 43組 7.6% Nodejs 43組 7.6% Python 34組 6.0% Rust 19組 3.3% PHP 16組 2.8% Perl 5組 0.9% Java 5組 0.9% その他(Go2) 1組 0.2% ※言語名はチームによる自己申告となっています 本選出場が決まった30チームに限定すると以下となります。 Go 26組 86.
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く