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
ライブ視聴を支える配信基盤の話をざっくりと / livestreaming-dogenzak...
Search
Taro Hirose
October 19, 2016
Technology
2
1.5k
ライブ視聴を支える配信基盤の話をざっくりと / livestreaming-dogenzakabeerbash
道玄坂BeerBash#2 秋のLT収穫祭
「ライブ視聴を支える配信基盤の話をざっくりと」
http://dogenzaka-beerbash.connpass.com/event/39352/
Taro Hirose
October 19, 2016
Tweet
Share
More Decks by Taro Hirose
See All by Taro Hirose
令和の時代におけるライブ動画サービスの作り方 / How to build your Live video streaming service in Reiwa era
uorat
0
100
Amazon IVS ROCKS!
uorat
1
340
ECS Events & Lambda でカジュアルにはじめるコンテナスケジューラー / 20171212_jawsug-container-lt
uorat
2
1.4k
OPENREC.tv におけるライブ動画およびメッセージ配信基盤の全貌 / 20170601_aws_devday_tokyo_openrec
uorat
4
4.9k
AWS re:Invent 2016 参加レポート / reinvent2016_report
uorat
0
2k
構成管理ツール Ansible 実践 / ansible-seminar-20160715
uorat
0
1.1k
ライブ視聴を支えるリアルタイムメッセージ配信基盤の話 / GunosyBeerBash #6
uorat
0
4.4k
Ansible 入門 #01 (初心者向け) / ansible-entry
uorat
1
210
Other Decks in Technology
See All in Technology
ロールが細分化された組織でSREは何をするか?
tgidgd
1
200
Contributing to Rails? Start with the Gems You Already Use
yahonda
2
120
20250707-AI活用の個人差を埋めるチームづくり
shnjtk
6
4.1k
ポストコロナ時代の SaaS におけるコスト削減の意義
izzii
1
280
敢えて生成AIを使わないマネジメント業務
kzkmaeda
2
510
大量配信システムにおけるSLOの実践:「見えない」信頼性をSLOで可視化
plaidtech
PRO
0
290
助けて! XからWaylandに移行しないと新しいGNOMEが使えなくなっちゃう 2025-07-12
nobutomurata
2
140
Operating Operator
shhnjk
1
650
CDKTFについてざっくり理解する!!~CloudFormationからCDKTFへ変換するツールも作ってみた~
masakiokuda
1
200
OpenTelemetryセマンティック規約の恩恵とMackerel APMにおける活用例 / SRE NEXT 2025
mackerelio
3
1.6k
SREのためのeBPF活用ステップアップガイド
egmc
2
920
DatabricksにOLTPデータベース『Lakebase』がやってきた!
inoutk
0
150
Featured
See All Featured
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
510
Producing Creativity
orderedlist
PRO
346
40k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
357
30k
Git: the NoSQL Database
bkeepers
PRO
430
65k
Optimising Largest Contentful Paint
csswizardry
37
3.3k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
108
19k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
48
2.9k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Transcript
ϥΠϒࢹௌΛࢧ͑Δ ৴ج൫ͷΛ ͬ͘͟Γͱ
ࣗݾհ ኍ ଠ @ CyberZ ▸ OPENRECࣄۀ෦ ▸ Πϯϑϥ &
αʔόαΠυΤϯδχΞ ▸ લ৬: IT Consulting Firm / SIer ▸ ಘҙྖҬ: ߏཧ/ࣗಈԽ, ࢹ ▸ Twitter: @uorat ▸ Blog: http://uorat.hatenablog.com/
OPENREC.tv ήʔϜʹಛԽͨ͠ಈը৴αʔϏε https://www.openrec.tv/ ϓϨΠಈըͷߘɺϥΠϒ৴ / ॴҦe-sportsࢢ 3
OPENREC.tv ৴ྫ: Shadowverse 4
ຊͷ༰ ͜ͷ෦ 5
Live Streaming ಈը৴ج൫
ϥΠϒ৴ͷجຊ ετϦʔϛϯά৴ ▸ ϑΝΠϧͷμϯϩʔυΛඇಉظͰ ߦ͍ͳ͕Βɺಈըͷ࠶ੜΛߦ͏ ▸ ܰྔͳϑΝΠϧΛ৴͢Δ͜ͱͰɺ࠶ੜ· ͰͷͪΛ͘͢Δ ▸ ΦϯσϚϯυϥΠϒجຊతʹετϦʔ
ϛϯάͰ৴͢Δͷ͕σϑΝΫτ ▸ ख๏ʢϓϩτίϧʣ৭ʑ ▸ ϥΠϒ৴ͷ؊ ▸ มͱ৴ʹཁ͢Δ࣌ؒͷॖ ▸ ෛՙରࡦ
ϥΠϒ৴ͷجຊ RTMP ▸ AdobeʹΑΓ։ൃ͞ΕͨFlash Video༻ͷετϦʔϛϯάϓϩτ ίϧ ▸ ࣋ଓଓͰಈըσʔλΛ৴͢Δ ͨΊɺҰൠతʹEdgeΛେྔʹ ༻ҙ͢Δඞཁ͕͋Δ
▸ Statelessͳ௨৴Ͱͳ͍ͨΊ৴ଆ ͷScaling͕େมɺඅ༻͔͔Δ ▸ ࠶ੜʹFlash Player͕ඞཁ
ϥΠϒ৴ͷجຊ HLS (HTTP Live Streaming) ▸ AppleʹΑΓ։ൃ͞ΕͨHTTP ϕʔεͷετϦʔϛϯάϓϩτ ίϧ ▸
ಈըσʔλΛඵʙॏඵͷϑΝ Πϧʹׂ͠ஞ࣍Download͠ ͯ࠶ੜ͢Δ ▸ HTTPͷԸܙΛڗडͰ͖Δ ▸ ಛघͳPlayerෆཁ ▸ Caching͍͢͠ ▸ Scaling͍͢͠
ϥΠϒ৴ͷجຊ HLSͳϥΠϒ৴γεςϜྫ ▸ ਤΛషΓ͚Δ
Live Streaming ߏհ
͏ͪͷετϦʔϛϯάᶃ CloudFront + Wowza Streaming Engine + ElasticTranscoder ▸ ਤΛషΓ͚Δ
͏ͪͷετϦʔϛϯάᶃ ϙΠϯτ: ʮ͋͑ͯʯAWSʹ࠷దԽ ▸ CloudFrontʹΑΔHLS৴ͷলΤωԽ ▸ CacheઓུʹΑΔOriginαʔόͷෛՙݮ ▸ EC2 +
CloudFrontͷΈ߹ΘͤʹΑΔԸܙ ▸ CDN Edge - OriginؒͷLatency࠷খԽ ▸ Origin → CDN Edgeؒͷσʔλసૹૹ৴ྉ Free ▸ GPUΠϯελϯεͷ׆༻ ▸ EC2 API ʹΑΔෛՙʹԠ֦ͨ͡ுॖୀ੍ޚ
Messaging νϟοτ
νϟοτͷجຊ ۭؒڞ༗ ▸ ؍ઓ࣌ͷྟײΛΦϯϥΠϯͰମݧ ▸ ྫ: RAGE ▸ ίϛϡχέʔγϣϯखஈ ▸
ϓϨΠϠʔɿࢹௌऀ ▸ ࢹௌऀɿࢹௌऀ ▸ ྫ: ϚΠϯΫϥϑτ ग़య: http://tappli.org/column-detail.php?id=1166
νϟοτͷجຊ ࣄྫ: Minecraft
νϟοτͷجຊ ϦΞϧλΠϜϝοηʔδ৴ج൫ ▸ ϦΞϧλΠϜ ▸ Ԇ = e-sportsಛ༗ͷྟײΛڞ༗Ͱ͖ͳ͍ ▸ ৴ऀɿࢹௌऀؒͷରखஈͰ͋Δ
▸ શࢹௌऀʹରͯ͠Ұ੪ʹϝοηʔδ৴͢Δඞཁ͋Γ ▸ ߴ֦ுੑ ▸ ಉ࣌ࢹௌऀ͕૿͑ͯεέʔϧΞτͰ͖Δ ▸ ਓؾ৴ສਓҎ্ͷϢʔβ͕ࢹௌ͢Δ ▸ ෳ৴͋Γɺ৴ʹूத͢Δ ▸ ࢹௌऀ͕ेສ, ඦສਓͱ૿͑ͯϝοηʔδ৴ʹࢧো Λ͖ͨ͞ͳ͍͜ͱ
ࠓ 2िؒͰ࡞ͬͨνϟοτج൫ ▸ Node.js + Socket.IOϕʔεͷ WebSocketΞϓϦέʔγϣϯ ▸ MessageHubʹRedis (Pub/Sub)
▸ ELB(Classic) ͕WebSocketඇରԠͷ ͨΊɺΞϓϦέʔγϣϯଆͰόϥϯ γϯάॲཧ࣮
ࠓ 2िؒͰ࡞ͬͨνϟοτج൫ ▸ Node.js + Socket.IOϕʔεͷ WebSocketΞϓϦέʔγϣϯ ▸ MessageHubʹRedis (Pub/Sub)
▸ ELB(Classic) ͕WebSocketඇରԠͷ ͨΊɺΞϓϦέʔγϣϯଆͰόϥϯ γϯάॲཧ࣮
None
Messaging 改
͏ͪͷετϦʔϛϯάᶄ ઈࢍϦϓϨʔεத
͏ͪͷετϦʔϛϯάᶄ ઈࢍϦϓϨʔεத ▸ WebSocketରԠͨ͠ELB - ALBΛಋೖ ▸ ϑϧϚωʔδυʹΑΔӡ༻ෛՙݮΛૂ͏ ▸ Nginx
+ SerfͰྑ͍Μ͚ͩͲ ▸ Content-Based RoutingΛ׆༻ͨ͠खܰͳγϟʔσΟϯά ▸ ͦͷଞॾʑͷϝεೖΕ ▸ Node.js / Socket.IO version up ▸ AutoScaling
Summary ·ͱΊ
·ͱΊ ϓϥοτϑΥʔϜ࠷దԽ ≠ ϩοΫΠϯ ▸ ʮ͋͑ͯʯͦ͜ʹ࠷దԽ͢Δ͜ͱͰੜ·ΕΔϝϦοτ͋Δ ▸ අ༻ ▸ ӡ༻༰қੑ
▸ ϨΠςϯγ ▸ γϯϓϧ ▸ దࡐదॴͳٕज़࠾ͱઃܭ େࣄ ▸ ϑϧϚωʔδυ or ࣗྗ࣮ ▸ େࣄͳ͜ͱ ϏδωεඪΛୡ͢ΔͨΊͷಓےΛඳ͘͜ͱ ▸ εϐʔυ ▸ ίετ
ࠂ RAGE vol.3 Shadowverse ▸ ༧બ: 2016/10/22 () - 10/23
() ▸ ܾউ (GRAND FINAL): 2016/11/23 (ਫɾॕ) https://rage-esports.jp/