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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
gree_tech
PRO
April 19, 2019
Technology
510
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
大規模ライブ配信の苦労ポイント
「Kubernetes Meetuo Tokyo #13」で発表された資料です。
https://k8sjp.connpass.com/event/100842/
gree_tech
PRO
April 19, 2019
More Decks by gree_tech
See All by gree_tech
変わるもの、変わらないもの :OSSアーキテクチャで実現する持続可能なシステム
gree_tech
PRO
0
4.6k
マネジメントに役立つ Google Cloud
gree_tech
PRO
0
60
今この時代に技術とどう向き合うべきか
gree_tech
PRO
3
2.7k
生成AIを開発組織にインストールするために: REALITYにおけるガバナンス・技術・文化へのアプローチ
gree_tech
PRO
0
420
安く・手軽に・現場発 既存資産を生かすSlack×AI検索Botの作り方
gree_tech
PRO
0
420
生成AIを安心して活用するために──「情報セキュリティガイドライン」策定とポイント
gree_tech
PRO
1
2.2k
あうもんと学ぶGenAIOps
gree_tech
PRO
0
530
MVP開発における生成AIの活用と導入事例
gree_tech
PRO
0
560
機械学習・生成AIが拓く事業価値創出の最前線
gree_tech
PRO
0
440
Other Decks in Technology
See All in Technology
Claude Code の Sandbox 機能を Anthropic Sandbox Runtime(srt) で試そう!/lets-play-anthropic-sandbox-runtime
tomoki10
1
540
AWSシリコン最前線 〜AI時代のチップ選択を読み解く〜
htokoyo
2
470
ルールやカスタム機能、どう活かす?ハンズオンで体感するIBM Bobの出力コントロール
muehara
1
130
Claude Code×Terraform IaC テンプレート駆動開発
itouhi
1
490
ACE-Step-1.5で見る 音楽生成AIのしくみと“破綻だけ直す”Retake機能の開発【zennfes spring 2026 登壇資料】
personabb
1
130
10倍の生産性を実現するAI駆動並列エージェントのすべて
kumaiu
5
1.3k
How Timee Delivers Day 1 Production Ready LLM Features
tomoyks
0
140
脆弱性対応、どこで線を引くか
rymiyamoto
1
370
Socrates × Looker 〜セマンティックレイヤーで進化するデータ分析エージェント〜
hanon52_
3
2.1k
MIERUNE JCT 発表資料「宇宙から伊能忠敬ごっこ」
syuchimu
0
210
機械学習を「社会実装」するということ 2026年夏版 / Social Implementation of Machine Learning June 2026 Version
moepy_stats
4
1.5k
Bucharest Tech Week 2026 - Reinventing testing practices in the AI era
edeandrea
PRO
1
140
Featured
See All Featured
Technical Leadership for Architectural Decision Making
baasie
3
400
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
400
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
610
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
1
1.3k
Product Roadmaps are Hard
iamctodd
PRO
55
12k
WENDY [Excerpt]
tessaabrams
11
38k
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
160
Practical Orchestrator
shlominoach
191
11k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
200
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
The SEO Collaboration Effect
kristinabergwall1
1
480
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