Page 1
A plataforma de vídeos da globo.com
Page 2
Analisando apenas um evento de
2018
Page 3
> 500K Usuários simultâneos
(live)
Page 4
POP SPPOP RJ
*intervalo
Page 5
422K req/s
*só na cdn live de vídeos
Page 7
84.2Gbps
*pico de uma máquina
Page 13
1Bi minassistidos por mês
(vod)
Page 14
Usuárioconsumidor Usuário
produtor
datastore
Player CDN Ingest
Plataforma de vídeos
Page 15
datastore
Player IngestCDN
Page 16
CDN :: principais componentes
Page 17
CDN :: o quê?
player
CDN
GET /v
ideo1.
mp4
Page 18
CDN :: load balancing
player
CDN
?
Least conn
Round robin
Hash IP
...
Page 19
CDN :: distribuição por região
SPRJ
Page 20
ISPx
ISPyISPk
SPBGP announcement 186.192.81.0/24
ISPx ISPy
ISPk
RJ
186.192.81.2
BGP announcement 186.192.81.0/24
PoPPoP
Page 21
CDN :: transbordo para CDN de terceiros
SPRJ
3rd party CDN A
3rd party CDN B
Page 22
CDN :: distribuição por audiência
1k
videos.globo.com
v0.videos.globo.com
v1.videos.globo.com
v2.videos.globo.com10k
1m
Page 24
CDN :: cachingfront-end back-end
1.mp41.mp4
1.mp4
Page 25
CDN :: estratégia para aumentar o hit
1k
videos.globo.com
v0.videos.globo.com
v1.videos.globo.com
v2.videos.globo.com10k
1m
Page 26
CDN :: caching multi levels
https://
1st Browser
2nd RAM
3rd SSD
4th HDD
Page 27
CDN :: caching priorizado
+ vistos
- vistos
Page 28
CDN :: IO bounded
NODE
Page 29
CDN :: caching escalar IO
NODE
Page 30
CDN :: caching escalar IO
proxy_cache_path /mnt/disk1/cache keys_zone=disk1:100m ...;proxy_cache_path /mnt/disk2/cache keys_zone=disk2:100m ...;proxy_cache_path /mnt/disk3/cache keys_zone=disk3:100m ...; split_clients $request_uri $cache { 33% disk1; 33% disk2; * disk3;}
Page 32
CDN :: seja statelessstateful stateless
1x
Caminho crítico
Page 34
FE BE DS
CDN :: identificar serviços mínimos
*serviços importantes mas auxiliares
Page 35
CDN :: melhorias constantes
Hardware (NIC, CPU …)
Kernel (Network, IO…)
Application (nginx, lua…)
Page 36
CDN :: não compre antes de testar
TRY BEFORE YOU BUY
Page 37
CDN :: roteia X % para o nó em teste
Page 38
CDN :: métricas base
latência
503, 403...
taxa de erros
bandausuários
Page 40
CDN :: monitorar e aletar
Page 41
datastore
CDN IngestPlayer
Page 42
Player :: principais componentes
Page 43
Player :: plugins
Page 44
Player :: plugins
Page 46
Player :: fluxo
API's
CDNads
analytics
Page 47
datastore
Player CDN Ingest
Page 48
Ingest / encoding :: principais componentes
Page 49
Ingest / encoding
upload
packager
encoding
segmenter
security
metadata
Ingest / encoding :: desafios
Page 50
Ingest / encodingIngest / encoding :: macro visão
Entrada
Fila
Saída
Data store
CDN
Encoder
Page 51
Ingest / encodingIngest / encoding :: sanitização de entrada
Regras:
CodecResolução
AspectoBitrate
Frame rate...
Page 52
Ingest / encodingIngest / encoding :: múltiplas saídas
1080p 720p 648p 504p 360p 144p
1080p 720p 648p 504p 360p 144p
1080p 720p 648p 504p 360p 144p
0-5s
5-10s
10-15s
Page 53
1 video
N resoluções x M formatos x K segmentos de X segundos x Y dispositivos
Page 55
Obrigado,Perguntas?
Github @leandromoreira