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
77
Amazon IVS ROCKS!
uorat
1
290
ECS Events & Lambda でカジュアルにはじめるコンテナスケジューラー / 20171212_jawsug-container-lt
uorat
2
1.3k
OPENREC.tv におけるライブ動画およびメッセージ配信基盤の全貌 / 20170601_aws_devday_tokyo_openrec
uorat
4
4.7k
AWS re:Invent 2016 参加レポート / reinvent2016_report
uorat
0
1.9k
構成管理ツール Ansible 実践 / ansible-seminar-20160715
uorat
0
1k
ライブ視聴を支えるリアルタイムメッセージ配信基盤の話 / GunosyBeerBash #6
uorat
0
4.3k
Ansible 入門 #01 (初心者向け) / ansible-entry
uorat
1
190
Other Decks in Technology
See All in Technology
Engineer Career Talk
lycorp_recruit_jp
0
120
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
120
Oracle Cloud Infrastructureデータベース・クラウド:各バージョンのサポート期間
oracle4engineer
PRO
28
12k
社内で最大の技術的負債のリファクタリングに取り組んだお話し
kidooonn
1
550
元旅行会社の情シス部員が教えるおすすめなre:Inventへの行き方 / What is the most efficient way to re:Invent
naospon
2
330
ExaDB-D dbaascli で出来ること
oracle4engineer
PRO
0
3.8k
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
120
IBC 2024 動画技術関連レポート / IBC 2024 Report
cyberagentdevelopers
PRO
0
110
ドメインの本質を掴む / Get the essence of the domain
sinsoku
2
150
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
37
12k
AWS Lambdaと歩んだ“サーバーレス”と今後 #lambda_10years
yoshidashingo
1
170
AIチャットボット開発への生成AI活用
ryomrt
0
170
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.3k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
860
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Designing on Purpose - Digital PM Summit 2013
jponch
115
7k
Making the Leap to Tech Lead
cromwellryan
133
8.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
28
2k
Being A Developer After 40
akosma
86
590k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
The Art of Programming - Codeland 2020
erikaheidi
52
13k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.2k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
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/