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
69
Amazon IVS ROCKS!
uorat
1
280
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.2k
Ansible 入門 #01 (初心者向け) / ansible-entry
uorat
1
180
Other Decks in Technology
See All in Technology
Difyを活用した「内省支援」エージェント開発の所感
gmoriki
0
160
APIファースト、そしてTime To First Call削減への道筋
nagix
1
110
スタッフエンジニアの道: The Staff Engineer’s Path
snoozer05
PRO
44
15k
Mocking in Rust Applications
taiki45
2
420
不動産tech Product Night#2_AIことはじめ_GA橋本
takehikohashimoto
0
190
可視化により内部品質をあげるAIドキュメントリバース/20240910 Hiromitsu Akiba
shift_evolve
0
230
2024年のナビゲーション・フォーカス対応:Composeでキーボード・ナビゲーションをサポートしよう
tahia910
0
120
Jetpack Compose Modifier 徹底解説 / Jetpack Compose Modifier
wiroha
0
210
なにもしてないのにNew Relicのデータ転送量が増えていたときに確認したこと
tk3fftk
2
230
サーバー管理しないサーバーサービスManaged DevOps Pool
kkamegawa
0
140
『GRANBLUE FANTASY Relink』ソフトウェアラスタライザによる実践的なオクルージョンカリング
cygames
0
180
AI前提のサービス運用ってなんだろう?
ryuichi1208
3
1.2k
Featured
See All Featured
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
248
20k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
1
57
Ruby is Unlike a Banana
tanoku
96
11k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
166
48k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
36
1.7k
[RailsConf 2023] Rails as a piece of cake
palkan
48
4.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.9k
Optimising Largest Contentful Paint
csswizardry
31
2.8k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
363
22k
The Art of Programming - Codeland 2020
erikaheidi
48
13k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Being A Developer After 40
akosma
84
590k
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/