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
gree_tech
PRO
April 19, 2019
Technology
0
370
大規模ライブ配信の苦労ポイント
「Kubernetes Meetuo Tokyo #13」で発表された資料です。
https://k8sjp.connpass.com/event/100842/
gree_tech
PRO
April 19, 2019
Tweet
Share
More Decks by gree_tech
See All by gree_tech
LLM翻訳ツールの開発と海外のお客様対応等への社内導入事例
gree_tech
PRO
0
890
ヘブンバーンズレッドのレンダリングパイプライン刷新
gree_tech
PRO
0
900
ヘブンバーンズレッドにおける、世界観を活かしたミニゲーム企画の作り方
gree_tech
PRO
0
900
「魔法少女まどか☆マギカ Magia Exedra」のグローバル展開を支える、開発チームと翻訳チームの「意識しない協創」を実現するローカライズシステム
gree_tech
PRO
0
880
「魔法少女まどか☆マギカ Magia Exedra」での負荷試験の実践と学び
gree_tech
PRO
0
980
「魔法少女まどか☆マギカ Magia Exedra」の必殺技演出を徹底解剖! -キャラクターの魅力を最大限にファンに届けるためのこだわり-
gree_tech
PRO
0
900
ヒューリスティック評価を用いたゲームQA実践事例
gree_tech
PRO
0
890
ライブサービスゲームQAのパフォーマンス検証による品質改善の取り組み
gree_tech
PRO
0
890
コミュニケーションに鍵を見いだす、エンジニア1年目の経験談
gree_tech
PRO
0
150
Other Decks in Technology
See All in Technology
Vibe Coding Year in Review. From Karpathy to Real-World Agents by Niels Rolland, CEO Paatch
vcoisne
0
130
"プロポーザルってなんか怖そう"という境界を超えてみた@TSUDOI by giftee Tech #1
shilo113
0
180
防災デジタル分野での官民共創の取り組み (2)DIT/CCとD-CERTについて
ditccsugii
0
250
AWS Top Engineer、浮いてませんか? / As an AWS Top Engineer, Are You Out of Place?
yuj1osm
2
210
能登半島災害現場エンジニアクロストーク 【JAWS FESTA 2025 in 金沢】
ditccsugii
0
560
AI駆動開発を推進するためにサービス開発チームで 取り組んでいること
noayaoshiro
0
260
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
11
80k
OpenAI gpt-oss ファインチューニング入門
kmotohas
2
1.2k
社内お問い合わせBotの仕組みと学び
nish01
1
580
AIAgentの限界を超え、 現場を動かすWorkflowAgentの設計と実践
miyatakoji
1
170
JAZUG 15周年記念 × JAT「AI Agent開発者必見:"今"のOracle技術で拡張するAzure × OCIの共存アーキテクチャ」
shisyu_gaku
1
160
Simplifying Cloud Native app testing across environments with Dapr and Microcks
salaboy
0
140
Featured
See All Featured
Rails Girls Zürich Keynote
gr2m
95
14k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Optimizing for Happiness
mojombo
379
70k
jQuery: Nuts, Bolts and Bling
dougneiner
65
7.9k
Code Reviewing Like a Champion
maltzj
526
40k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
9
590
Automating Front-end Workflow
addyosmani
1371
200k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
The Invisible Side of Design
smashingmag
302
51k
Six Lessons from altMBA
skipperchong
28
4k
GitHub's CSS Performance
jonrohan
1032
470k
How to train your dragon (web standard)
notwaldorf
96
6.3k
Transcript
⼤規模ライブ配信 の苦労ポイント
• 堀⼝真司 • Kubernetes半年ぐらい • インフラ7年ぐらい • ゲーム業界15年ぐらい • GAMECUBE
〜 PS3 あたり • MMORPG やソシャゲ • AWS や CEDEC 系に出没 • ちかごろ → → → • GCP 全般 • ライブ動画配信担当
今⽇のはなし • エンコーダーの負荷分散をどうやって検討〜実装したか • サーバ側で動画を再エンコードしてます(してないケースもあります) • 誰でも配信できます(来⽉リリース予定) • 遅延は2〜15秒ぐらい、⽤途や雰囲気でちょいちょい調整してる
構成 Kubernetes cluster GAE Microservices LB RTMP Logging Cloud Storage
GAE Media API GAE User API GKE Encoder GKE Chat LB RTMP GKE Encoder • Public User • Social & Streaming • Developer • Operator • Official Studio • Live streaming Cloud SQL Monitoring • Viewer Encoding Live Event Recording Internal Access Ingress / HTTPS websocket tool on IAP GKE Support Cloud SQL • PagerDuty • Slack GKE Chat GKE Redis GKE Dashboard GKE Certificate Manager GKE api GAE batch Cloud DNS *.wrightflyer.net Cloud Datastore 今⽇のはなし︕
負荷分散⽅法 • 新しいリクエストが来ないようにヘルスチェックを落とす • エンコードが始まったら readinessProbe を false にさせる •
念のため終わったら liveness も落として再起動させる • readiness → 新しいリクエストを受け付けたくない • liveness → 機能しなくなったので再起動したい • 実装が簡単で、概ね期待通りに動作した • Sidecar のいずれかの readiness が落ちていればオッケー • 全 Pod の readiness が落ちたままだと TCP 的にも繋がらなくなる • 503 とかそういうエラーも返せない • チャットサーバにも導⼊予定 • ⼊室すると⻑居するので random では先に起動した Pod に偏りすぎてしまう Pod Pod Pod Pod free free busy busy
ボツ案1 • Proxy-mode: ipvs 使う。 • round-robin や least-connection がある
• LC 設定する • 常に Pod の数を Encoder より多く • しかし GKE では ipvs 使えず︕ • iptables なので random のみ • 有⼒案だっただけにがっかり • オンプレ環境では ipvs 多い… https://kubernetes.io/docs/concepts/services-networking/service/#proxy-mode-ipvs
ボツ案2 • ⼤量の Service を作る。増減させる。 • 社内では node k8s.js |
kubectl create -f - として、 yaml を使わずに json を作り出 すパターンがちょいちょいある • helm よりお⼿軽だったのと、⾃由度が⾼くて AWS 構成管理でもよく使ってた • なので増やしたり減らしたりは結構かんたん • 1Service (LoadBalancer) 1Pod の構成が狙い • けど流⾏って数千⼈とか来てしまったらおそらく耐えられない • IP アドレス⾜りなくなるよねたぶん • お⾦もかかりそう(かからない︖)
没案3 • ロードバランサーのパスルールで振り分けられるようにする • Amazon ECS + Application Load Balancer
で特定のコンテナに WebSocket を振り 分けるのに使ったことがある • ただし、映像が送られてくるのは RTMP というプロトコルで HTTP ではない • RTMP にも URI のようなものはパケットの中に⼊っているので HTTP トンネルのよ うなもので振り分けられそうだけど、スマホからのアップロードに懸念があった Cloud Load Balancing Container Engine Container Engine Container Engine
課題 • HPA と相性があんまりよくないかも • 関⼼対象は CPU とか Mem じゃないので、そのままの仕組みが使えなかった
• Available な Pod の数を維持するような仕組みを開発・利⽤ • GKE で⼀般的な HTTP じゃない案件なので情報不⾜ • MMO とか MO も好きなんだけど Kubernetes では運⽤できる気がしない… • VTuber 関連技術エンジニア不⾜ • Unity, UE4, mocap, Streaming, GCP • C#, C++, swift, kotlin, gae-go, nodejs