VOYAGE GROUPのエンジニア向け大規模サービス構築インターン Sunrise 2018でサポーターをしました
Sunriseってなんやねん?
Webサービスを作るインターンや個人でWebサービスを作る開発者が増えてきましたが、実際にサービスを作って利用者が増えてくると必ずと言っていいほどパフォーマンス問題にぶち当たります。
ある程度まではWebサーバのスケールアウトやDBのスケールアップなど、お金で殴って凌げますがその戦略は割と早めに限界を迎えます。さてそうなったときに次の一手はどう打てば良いでしょう?というのを体得するインターンになります。
今回のSunrise2018のテーマ:
1秒間に数万リクエストを捌くアドテクエンジニア陣からのミッション。 『大規模リクエストを捌きつつ安定して価値を出し続ける広告プラットフォームを構築せよ!』 広告配信システムの安定運用に携わるエンジニアから、大規模リクエストを捌くために必要な設計・構築について学べます。 手を動かしながらWebサービスを作りはじめ、スケールしながら安定して価値を出せるシステムを設計していきましょう!
ざっくり言うと、月間数百億リクエストをさばく弊社アドテク事業部のエンジニア直伝の座学 + アドバイスくれたり相談に乗ってくれるサポーター付きのISUCON、といったところでしょうか
どんなことをしたの?
まずは数人でチームを組んで、チームごとにお題アプリスタックをdeploy。 まるでDDoS攻撃のようなベンチマークリクエストが来るので、それをいい感じに捌けるようにアーキテクチャを見直したり、アプリやミドルウェアをチューニングしていきます。
#infosec team dealing with #cyber attacks pic.twitter.com/RuThPYZMCe
— Leron Zinatullin (@le_rond) 2016年10月3日
間違えました!
基本的にはパフォーマンスチューニングのセオリー通りに
- ログやメトリクスを見ながらボトルネックを突き止める
- 改善案を考える
- 改善策を講じる
- ベンチマークをかけて、改善したか確認する
といったサイクルをたくさん繰り返す感じになります。
▼ こんな感じでリクエストがガバっと飛んできます
サポーターのお仕事は?
各チームには、だいたい一人サポーターがついています。たまに別チームのサポーターが来て違う視点からのアドバイスをくれたり、うんちくを披露してくれたりもします。
サポーターのお仕事は、ボトルネックの特定を手伝ったり、設計や実装の相談に乗ったり、AWSや各種ツールの使い方を教えたり、応援したりすることです。
所感的な何か
無事大きな事件・事故なく終わってよかった 🎉
Sunriseは毎年ネタを考え直したり作り直したりするので想定外の事件が起きる可能性があるのですが、無事に大きな事件とかは無かったように思います(いい話)。
みんながパフォーマンスチューニングの基本を習得出来ていてよかった 🎉
限られた時間でパフォーマンスを改善するには、推測ではなくちゃんとアプリケーションログやメトリクスを見ながらボトルネックを特定し、改善していくことが大事です。
AWSやGolangの使い方、プラクティスも大事ですが、それよりも上記パフォーマンスチューニングの考え方、流れを理解することが一番価値があると思います。このことを抑えずに雰囲気でチューニングを進めると、工数の割に結果が出なくてとてもつらい思いをすることになります。。。(経験者は語る)
パフォーマンスチューニングは楽しいぞ 💪
1年半ほど前に所属チームが変わって仕事でパフォーマンスを意識することは正直減ってきてるんですけど(おやおや?w)、代わりに個人でISUCONに出たりして遊んでいますがパフォーマンスチューニングは楽しいですね。人が改善する様子を見ていると自分もプレイヤーとしてガリガリやりたくなってきます...w
そんな感じですね。
この内容を読んで「おもしろそう」と思った学生のかたは、ぜひ次のSunriseへエントリーしてみてください。
P.S. 分かる人向け
カレーを食べるたびに思い出してください...w