Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
スケールアウト再考
Search
Daisuke Yamazaki
February 28, 2016
Technology
1
270
スケールアウト再考
Scaleout手法とは何かを再考します。
Daisuke Yamazaki
February 28, 2016
Tweet
Share
More Decks by Daisuke Yamazaki
See All by Daisuke Yamazaki
ノートラブルシステムへの道
yamaz
22
7.8k
RWC2019 rubyによる超大量データ配信
yamaz
0
130
学び実践してきたこと
yamaz
1
260
RTB 30 min
yamaz
0
74
RailsとCで広告システムを作って起業した話
yamaz
0
180
robust logprocessing
yamaz
0
36
adserver 30min
yamaz
0
54
Other Decks in Technology
See All in Technology
AWSサービスアップデート 2024/12 Part3
nrinetcom
PRO
0
140
Docker Desktop で Docker を始めよう
zembutsu
PRO
0
170
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
6
54k
Reactフレームワークプロダクトを モバイルアプリにして、もっと便利に。 ユーザに価値を届けよう。/React Framework with Capacitor
rdlabo
0
130
AWSの生成AIサービス Amazon Bedrock入門!(2025年1月版)
minorun365
PRO
7
470
技術に触れたり、顔を出そう
maruto
1
150
シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 #RSGT2025 / Shift Right
nihonbuson
3
2.1k
深層学習と3Dキャプチャ・3Dモデル生成(土木学会応用力学委員会 応用数理・AIセミナー)
pfn
PRO
0
460
生成AI × 旅行 LLMを活用した旅行プラン生成・チャットボット
kominet_ava
0
160
自社 200 記事を元に整理した読みやすいテックブログを書くための Tips 集
masakihirose
2
330
comilioとCloudflare、そして未来へと向けて
oliver_diary
6
450
FODにおけるホーム画面編成のレコメンド
watarukudo
PRO
2
280
Featured
See All Featured
Six Lessons from altMBA
skipperchong
27
3.6k
The Cost Of JavaScript in 2023
addyosmani
46
7.2k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Docker and Python
trallard
43
3.2k
KATA
mclloyd
29
14k
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
38
1.9k
Typedesign – Prime Four
hannesfritz
40
2.5k
Practical Orchestrator
shlominoach
186
10k
Keith and Marios Guide to Fast Websites
keithpitt
410
22k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Speed Design
sergeychernyshev
25
740
Transcript
スケールアウト再考 〜数千億アクセスへの道〜 Supership 山崎大輔(@yamaz)
山崎大輔(@yamaz) Supership 取締役 (旧Scaleout代表) Scaleoutはnanapi, Bitcellerと合併して Supershipになりました。 広告システムと検索システム作ってます。
広告システムについて システム : インターネット広告システム アクセス : 月間数千億〜 サーバ台数: 1000台程度 レスポンス
: 〜100msec ユーザ数 : 数億UU〜 上記のシステムを安定運用するための考え方 について話したいと思います。
現在のインターネット 広告配信の仕組み 4 DSP メディア側広告サーバ(SSP) DSP DSP ③ビッディング ①広告Request ②オークション
開催 ブラウザ ④広告Result 広告1配信(1imp)ごとにオークションを行う
(参考)弊社採用のソフトウェア群 配信系: nginx, apache, 独自エンジン(C++) KVS: memcached, 独自KVS(tokyocabinetベース) 集計: hadoop,
hive, spark, vertica 管理画面: Ruby On Rails DB : PostgreSQL ほぼオンプレ
いきなりですが、質問です。
いつも10人並んでるATMが1台があります. ここで新たにATMを1台足すと行列の数はどうな るでしょう? ATM ATM ATM
答え だいたい0人に近づいていく
いつも10人並んでるATMとは → 単位時間に到着する人数とATMが 処理できる人数が釣り合ってるということ いつも10人 ATM
ATMが1台増えると? → ATMが処理できる人数の方が多くなる → 行列の数がどんどん減っていく → 最終的に0人になる ATM ATM
ATMの処理性能 < 到着数の時 処理が間に合ってないってことな ので、行列がどんどん増えて 最終的にめちゃくちゃ遅くなる
ATMの処理性能 > 到着数の時 処理が間に合ってるってことなの で、行列がどんどん減って最終的 には0に近づく
リトルの公式(Little’s formula) 平均の待ち行列の数 L = λ * W L: システムの平均待ち行列数
λ: システムの平均到着率 W: システムの平均待ち時間
ここまでのまとめ イイネ! システムの処理性能 > アクセス ヨクナイネ! システムの処理性能 < アクセス
スケールアップとスケールアウト
スケールアップとスケールアウト どちらも システムの処理性能 > アクセス を維持するための手法
スケールアップとスケールアウト スケールアップ: システムの処理性能 > アクセス になるまでサーバをパワーアップ スケールアウト: システムの処理性能 > アクセス
になるまでサーバを増やす
スケールアウトという手法 システムの処理性能 > アクセス になるまでサーバを増やす ではなく システムの処理性能 > アクセス になるまで1台あたりのアクセスとデータ量を減らす
と考えてみる
(おさらい)システムの処理性能 < アクセス → 待ち行列がどんどん増えていく → システムはどんどん遅くなる ATM
システムの処理性能 < アクセス 1%しか超えてなくても、この状態が ずーっと続く限りは待ち行列は永遠に 増える →システムは無限に遅くなる
スケールアウトあるある 応答速度が10倍遅くなった! えぇっ?10倍サーバを足す必要があるの?? →必要ありません システムの処理性能 > アクセス を満たせばいいので、大抵の場合数割の増強で 事足りるはず
逆を言うと? 1台あたり数割の性能劣化が10倍以上の速度 低下をもたらす可能性がある!!
ミドルウェアの選定基準 ピーク性能ではなく、性能の安定度(分散の小 ささ)に着目する パフォーマンスが不安定なものはピーク性能が 良くても良くないものだと考える
性能の分散が小さい =制御しやすい ソフトA ソフトB 性能高 性能低 品質工学の考え方: ソフトBのほうがよいと考える
ミドルウェアの選定基準 1. 複雑な機構を持ったものを避け、単純なもの を採用する 2. GCやデータリバランスなどコントロールしにく い挙動のものを避ける 「やかんは壊れない」の心意気
スケールアウトあるある システムは設計を端折ったところからほころび 始める。 あらゆる箇所が現在の100倍になっても大丈夫 か確認しましょう。
スケールアウトあるある 処理能力を超えると一気にダメになる 対策: - ピークアクセス時の予兆を見逃さない - カナリアサーバの準備 - アクセスの強制的な平滑化
スケールアウトあるある 処理能力を超えると一気にダメになる 対策: - ピークアクセス時の予兆を見逃さない - カナリアサーバの準備 - アクセスの強制的な平滑化
スケールアウトあるある 処理能力を超えると一気にダメになる 対策: - ピークアクセス時の予兆を見逃さない - カナリアサーバの準備 - アクセスの強制的な平滑化
スケールアウトあるある 処理能力を超えると一気にダメになる 対策: - ピークアクセス時の予兆を見逃さない - カナリアサーバの準備 - アクセスの強制的な平滑化
それでもダメなら スケールアップも積極的に検討しましょう。 SSDには随分と助けられました。 なおネットワーク帯域はスケールアップしにくい 領域なので、極力ネットワーク負荷の低いシス テム設計にしましょう。
最後に 1. 「システムの処理性能 > アクセス」の維持を強く意識 しましょう 2. 普通をきちんと積み重ねるだけで数1000億のアクセ スは十分対応可能 3.
とはいえ、大量アクセスを浴び続けることで養われる ものもある そんなシステムを取り回してみたい方はぜひ弊社に! http://recruit.supership.jp/