SlideShare uma empresa Scribd logo
1 de 29
Baixar para ler offline
Plataforma de vídeos UOLMais
Load Balacing + Proxy + Cache de Arquivos
George Vieira Jr – gvieira@uolinc.com
Plataforma de Vídeos UOLMais 22/04/2012
Agenda
•O que é o UOLMais
•Problemas do passado
•Soluções avaliadas
•Premissas e desafios para o sistema
•Solução UOL
●
Resultados
●
Croupier
●
Balaio
Plataforma de Vídeos UOLMais 22/04/2012
UOLMais
• Plataforma de conteúdo multimídia do UOL
●
Vídeo, Fotos, Áudio, Slides, Texto
• mais.uol.com.br
●
Administração/visualização do conteúdo
●
Usuários comuns (assinantes e visitantes)
●
Usuários editoriais (internos e parceiros)
• tvuol.uol.com.br
●
Conteúdo editorial do UOL
• Parceiros UOL
●
band.com.br, folha.com, TV Caras, TV Trama, etc.
Plataforma de Vídeos UOLMais 22/04/2012
Plataforma de Vídeos UOLMais 22/04/2012
•Arquitetura antiga
●
Apache + Squid
Plataforma de Vídeos UOLMais 22/04/2012
Características do Sistema
•Variações de tamanhos de arquivos de 5 MB a 4 GB
•Perfil de clientes por tipo de mídia
●
Banda dos usuários heterogênea
●
Conexões de longa duração em um protocolo sem suporte inerente a
falhas de conexão
•Acesso em grande parte do acervo diariamente
•Longtail
•Thundering herd
- Vídeos repentinamente populares
•Interface com o storage é HTTP / DAV
Plataforma de Vídeos UOLMais 22/04/2012
O slide obrigatório sobre Longtail
Plataforma de Vídeos UOLMais 22/04/2012
Problemas – Longtail
•Longtail acentuado
●
64% das mídias são chamadas apenas 1 vez por dia
●
73% dos requests se concentram nas 350 mídias mais vistas.
73%
27%
Plataforma de Vídeos UOLMais 22/04/2012
0
10000
20000
30000
40000
50000
60000
70000
80000
90000
Quantidade de Requests
Meses
QuantidadedeMídias
Problemas – Imprevisibilidade sazonal
Plataforma de Vídeos UOLMais 22/04/2012
Soluções Avaliadas
●
Disk Cache grava em hash
Nginx
●
Seek não funciona com proxy
●
Arquivo precisa ser copiado inteiro antes de ser lido
Lighttpd
●
Seek não funciona com proxy
●
Apresentou degradação na taxa de transferência com proxy
●
Content-Lenght falhava com proxy
•Bom
●
Boa experiência com cache de imagens
●
Na versão 3 só faz 1 fetch com backend
Varnish
•Ruim
●
Não performa em disco
●
Vídeos entram todos em arquivos binários (heap)
Plataforma de Vídeos UOLMais 22/04/2012
Premissas e Desafios
•Não deixar vídeo “quente” sair do cache
•Aliviar carga no storage (uso máximo 60% capacidade)
•Seek
•Vídeos HD (720p, 1080p)
•Melhorar experiência do usuário
•Concluir os pontos acima com o menor custo possível
•Cache eficiente (hit-rate)
Plataforma de Vídeos UOLMais 22/04/2012
Solução UOL
Por que não agrupar as boas
características de cada solução em
uma única?
Plataforma de Vídeos UOLMais 22/04/2012
Resultados
•Queda de IO nos storages
Início da migração ->
(Fevereiro 2012)
Hoje ->
Resultados
Plataforma de Vídeos UOLMais 22/04/2012
Resultados
•Hit Rate Alto
Antes da migração ->
(Agosto 2011)
Hoje ->
Resultados
Plataforma de Vídeos UOLMais 22/04/2012
Resultados
•Clientes
●
Assistem a todos os tipos de mídia com qualidade
•Produção
●
Melhor aproveitamento dos hardwares
●
Redução de incidentes (~2.000 mensais para 0)
●
Crescimento de tráfego em mais de 120%
●
Melhor uso da capacidade de storage
●
Flexibilidade para lidar em tempo real com
balanceamento e thundering herd
Resultados
Plataforma de Vídeos UOLMais 22/04/2012
Olhando debaixo do capô
Revelando a “mágica”
Plataforma de Vídeos UOLMais 22/04/2012
Roteiro
croupier
Plataforma de Vídeos UOLMais 22/04/2012
Storage 1
(Spare)
Cenário Inicial
browser
Squid 1 Squid 2 Squid 3
...
DNS
Storage 1 Storage 2 Storage N
storage.mais.uol.com.br
Autorização
e distribuição
round robin DNS Request pelo id da midia
* Tradução de mídia por file
* Validação de visibilidade
* Distribuição e esparsamento
no file system
Proxy reverso dos files
nos storagesStorage 2
(Spare)
Storage N
(Spare)
Plataforma de Vídeos UOLMais 22/04/2012
Croupier – Mudança na arquitetura
browser
Cache 1 Cache 2 Cache N
...
API do player requisita
qual servidor de cache
a mídia se encontra.
Croupier
Usando a regra de distribuição,
informa diretamente o domínio
do servidor a ser acessado.
videoN.mais.uol.com.br
Storage 1
(Spare)
Storage 1 Storage 2 Storage N
Storage 2
(Spare)
Storage N
(Spare)
Autorização
e distribuição
Plataforma de Vídeos UOLMais 22/04/2012
Regra de distribuição
• Permite configurar distribuição da carga por máquina (nó)
• Busca estatísticas de carga de cada servidor
• Permite segmentar tipo de vídeo x hardware específico
●
Máquinas com muita capacidade de disco, recebem cache
heterogêneo
●
Máquinas capacidade de CPU recebem “seek” e “SSL”
●
Máquinas com muita RAM e rede 10G recebem os vídeos
“bombados”
• Capacidade de reação
●
Vídeos populares se espalham em vários nós
●
Vídeos longtail são estimulados a ir sempre no mesmo nó
●
Remoção de servidores em estado crítico
Plataforma de Vídeos UOLMais 22/04/2012
Plataforma de Vídeos UOLMais 22/04/2012
Roteiro
balaiobalaio
Plataforma de Vídeos UOLMais 22/04/2012
-Problema do “cobertor curto” com as demais soluções tentadas
●
Experiência para combinar o que funciona em 1 único server
-Limite de banda de cada máquina (1Gb)
●
Limite de download por cliente / evasive.
●
Bloqueio de user-agents / referers.
-Aumento da média de tamanho individual dos vídeos (vídeos HD)
-Balanceamento / Monitoração.
-Regras específicas para lidar com longtail e thundering herd.
●
Níveis de cache conforme a audiência do vídeo.
-Minimização de chamadas de fetch para o backend
●
Segmentação de arquivos
●
Fetch “colapsado” / download preventivo do segmento.
-Foco em vídeos (conexões longas e arquivos grandes)
-Ponto fraco do Java (CPU + GC) não exerce fator limitante (zero-copy).
-Toda arquitetura da aplicação é assíncrona: Java NIO.2 + Netty.
Plataforma de Vídeos UOLMais 22/04/2012
Balaio – Níveis de cache
Old
Young
Popular
HD
RAMDISK
RAMDISK
video.mp4.seg1
video.mp4.seg1 1 hit
x hits
y hits
Plataforma de Vídeos UOLMais 22/04/2012
Internet
Balaio – Segmentação de arquivos
video.mp4
file server
(apache)
video.mp4.seg1
balaio
video.mp4.seg2
video.mp4.segN
HTTP GET video.mp4
HTTP GET
(Range-Request)
Plataforma de Vídeos UOLMais 22/04/2012
Balaio – Screenshot
Balaio – Interface de monitoração (por máquina)
Plataforma de Vídeos UOLMais 22/04/2012
Balaio – Screenshot
Balaio – Vantagens
• Requests de cliente “colapsados” pro backend
• “Seek” com custo de processamento muito baixo
●
Primeiro acesso cria tabela de keyframes
●
Demais acessos remontam header e custo de CPU é o custo de um
http range-request
• Redirect (HTTP 302) pra outro server, em caso de servidor
em estado critico, ou servidor vir direto via Round-Robin
DNS
• Baixa latência – novo paradigma + arquivos pequenos
• Alta escalabilidade horizontal
• Quanto maior o thundering heard, melhor
• Controle de banda adaptativo por bitrate
Perguntas?

Mais conteúdo relacionado

Semelhante a Plataforma de vídeos do UOL : Desenvolvimento de Cache+Proxy de alta performancePlataforma videosuol mais

Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17Leandro Moreira
 
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Symantec Brasil
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122Bruno Souza
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsRafael Salerno de Oliveira
 
Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpressDaniel Paz
 
Introdução ao Windows Server 2012
Introdução ao Windows Server 2012Introdução ao Windows Server 2012
Introdução ao Windows Server 2012Danilo Augusto Leite
 
Apresentação SpagoBI
Apresentação SpagoBIApresentação SpagoBI
Apresentação SpagoBIGrendene S/A
 
Adcut's presentation (Master's Assignment)
Adcut's presentation (Master's Assignment)Adcut's presentation (Master's Assignment)
Adcut's presentation (Master's Assignment)Leonardo Pereira
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Leandro Nunes
 
LPUG #16 - Agenda e Community Updates - 2022-06-15.pdf
LPUG #16 - Agenda e Community Updates - 2022-06-15.pdfLPUG #16 - Agenda e Community Updates - 2022-06-15.pdf
LPUG #16 - Agenda e Community Updates - 2022-06-15.pdfFernando Fernández
 
planejamento pre-instalacao win server 2012
 planejamento pre-instalacao win server 2012 planejamento pre-instalacao win server 2012
planejamento pre-instalacao win server 2012Yan Ferrari Ferreira
 
Apresentação Joomla! Day Brasília
Apresentação Joomla! Day BrasíliaApresentação Joomla! Day Brasília
Apresentação Joomla! Day Brasíliarafaelberlanda
 
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeAndré Abe Vicente
 
Palestra Drupal
Palestra DrupalPalestra Drupal
Palestra Drupalwesleypb
 

Semelhante a Plataforma de vídeos do UOL : Desenvolvimento de Cache+Proxy de alta performancePlataforma videosuol mais (20)

Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17Escalando uma plataforma poliglota - QConSP 17
Escalando uma plataforma poliglota - QConSP 17
 
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
Be Aware Webinar Symantec - O que há de novo? Data Loss Prevention 14.5
 
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
ALM Open Source Ponta a Ponta - Minicurso Globalcode MC-122
 
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOpsComo automatizar Sistemas Legados utilizando ferramentas de DevOps
Como automatizar Sistemas Legados utilizando ferramentas de DevOps
 
Performance e otimização no wordpress
Performance e otimização no wordpressPerformance e otimização no wordpress
Performance e otimização no wordpress
 
Introdução ao Windows Server 2012
Introdução ao Windows Server 2012Introdução ao Windows Server 2012
Introdução ao Windows Server 2012
 
DivX
DivXDivX
DivX
 
Apresentação SpagoBI
Apresentação SpagoBIApresentação SpagoBI
Apresentação SpagoBI
 
Adcut's presentation (Master's Assignment)
Adcut's presentation (Master's Assignment)Adcut's presentation (Master's Assignment)
Adcut's presentation (Master's Assignment)
 
Vídeo digital ass
Vídeo digital  assVídeo digital  ass
Vídeo digital ass
 
Lightning Talk: Webdev who?
Lightning Talk: Webdev who?Lightning Talk: Webdev who?
Lightning Talk: Webdev who?
 
Video na web
Video na webVideo na web
Video na web
 
LPUG #16 - Agenda e Community Updates - 2022-06-15.pdf
LPUG #16 - Agenda e Community Updates - 2022-06-15.pdfLPUG #16 - Agenda e Community Updates - 2022-06-15.pdf
LPUG #16 - Agenda e Community Updates - 2022-06-15.pdf
 
planejamento pre-instalacao win server 2012
 planejamento pre-instalacao win server 2012 planejamento pre-instalacao win server 2012
planejamento pre-instalacao win server 2012
 
01 planejamento pre-instalacao
01 planejamento pre-instalacao01 planejamento pre-instalacao
01 planejamento pre-instalacao
 
Consultoria WinVideo
Consultoria WinVideoConsultoria WinVideo
Consultoria WinVideo
 
Apresentação Joomla! Day Brasília
Apresentação Joomla! Day BrasíliaApresentação Joomla! Day Brasília
Apresentação Joomla! Day Brasília
 
Codando com PHP e JQuery
Codando com PHP e JQueryCodando com PHP e JQuery
Codando com PHP e JQuery
 
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a QualidadeERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
ERES 2018 - Microserviços: Desafios para Lidar com a Qualidade
 
Palestra Drupal
Palestra DrupalPalestra Drupal
Palestra Drupal
 

Plataforma de vídeos do UOL : Desenvolvimento de Cache+Proxy de alta performancePlataforma videosuol mais

  • 1.
  • 2. Plataforma de vídeos UOLMais Load Balacing + Proxy + Cache de Arquivos George Vieira Jr – gvieira@uolinc.com
  • 3. Plataforma de Vídeos UOLMais 22/04/2012 Agenda •O que é o UOLMais •Problemas do passado •Soluções avaliadas •Premissas e desafios para o sistema •Solução UOL ● Resultados ● Croupier ● Balaio
  • 4. Plataforma de Vídeos UOLMais 22/04/2012 UOLMais • Plataforma de conteúdo multimídia do UOL ● Vídeo, Fotos, Áudio, Slides, Texto • mais.uol.com.br ● Administração/visualização do conteúdo ● Usuários comuns (assinantes e visitantes) ● Usuários editoriais (internos e parceiros) • tvuol.uol.com.br ● Conteúdo editorial do UOL • Parceiros UOL ● band.com.br, folha.com, TV Caras, TV Trama, etc.
  • 5. Plataforma de Vídeos UOLMais 22/04/2012
  • 6. Plataforma de Vídeos UOLMais 22/04/2012 •Arquitetura antiga ● Apache + Squid
  • 7. Plataforma de Vídeos UOLMais 22/04/2012 Características do Sistema •Variações de tamanhos de arquivos de 5 MB a 4 GB •Perfil de clientes por tipo de mídia ● Banda dos usuários heterogênea ● Conexões de longa duração em um protocolo sem suporte inerente a falhas de conexão •Acesso em grande parte do acervo diariamente •Longtail •Thundering herd - Vídeos repentinamente populares •Interface com o storage é HTTP / DAV
  • 8. Plataforma de Vídeos UOLMais 22/04/2012 O slide obrigatório sobre Longtail
  • 9. Plataforma de Vídeos UOLMais 22/04/2012 Problemas – Longtail •Longtail acentuado ● 64% das mídias são chamadas apenas 1 vez por dia ● 73% dos requests se concentram nas 350 mídias mais vistas. 73% 27%
  • 10. Plataforma de Vídeos UOLMais 22/04/2012 0 10000 20000 30000 40000 50000 60000 70000 80000 90000 Quantidade de Requests Meses QuantidadedeMídias Problemas – Imprevisibilidade sazonal
  • 11. Plataforma de Vídeos UOLMais 22/04/2012 Soluções Avaliadas ● Disk Cache grava em hash Nginx ● Seek não funciona com proxy ● Arquivo precisa ser copiado inteiro antes de ser lido Lighttpd ● Seek não funciona com proxy ● Apresentou degradação na taxa de transferência com proxy ● Content-Lenght falhava com proxy •Bom ● Boa experiência com cache de imagens ● Na versão 3 só faz 1 fetch com backend Varnish •Ruim ● Não performa em disco ● Vídeos entram todos em arquivos binários (heap)
  • 12. Plataforma de Vídeos UOLMais 22/04/2012 Premissas e Desafios •Não deixar vídeo “quente” sair do cache •Aliviar carga no storage (uso máximo 60% capacidade) •Seek •Vídeos HD (720p, 1080p) •Melhorar experiência do usuário •Concluir os pontos acima com o menor custo possível •Cache eficiente (hit-rate)
  • 13. Plataforma de Vídeos UOLMais 22/04/2012 Solução UOL Por que não agrupar as boas características de cada solução em uma única?
  • 14. Plataforma de Vídeos UOLMais 22/04/2012 Resultados •Queda de IO nos storages Início da migração -> (Fevereiro 2012) Hoje -> Resultados
  • 15. Plataforma de Vídeos UOLMais 22/04/2012 Resultados •Hit Rate Alto Antes da migração -> (Agosto 2011) Hoje -> Resultados
  • 16. Plataforma de Vídeos UOLMais 22/04/2012 Resultados •Clientes ● Assistem a todos os tipos de mídia com qualidade •Produção ● Melhor aproveitamento dos hardwares ● Redução de incidentes (~2.000 mensais para 0) ● Crescimento de tráfego em mais de 120% ● Melhor uso da capacidade de storage ● Flexibilidade para lidar em tempo real com balanceamento e thundering herd Resultados
  • 17. Plataforma de Vídeos UOLMais 22/04/2012 Olhando debaixo do capô Revelando a “mágica”
  • 18. Plataforma de Vídeos UOLMais 22/04/2012 Roteiro croupier
  • 19. Plataforma de Vídeos UOLMais 22/04/2012 Storage 1 (Spare) Cenário Inicial browser Squid 1 Squid 2 Squid 3 ... DNS Storage 1 Storage 2 Storage N storage.mais.uol.com.br Autorização e distribuição round robin DNS Request pelo id da midia * Tradução de mídia por file * Validação de visibilidade * Distribuição e esparsamento no file system Proxy reverso dos files nos storagesStorage 2 (Spare) Storage N (Spare)
  • 20. Plataforma de Vídeos UOLMais 22/04/2012 Croupier – Mudança na arquitetura browser Cache 1 Cache 2 Cache N ... API do player requisita qual servidor de cache a mídia se encontra. Croupier Usando a regra de distribuição, informa diretamente o domínio do servidor a ser acessado. videoN.mais.uol.com.br Storage 1 (Spare) Storage 1 Storage 2 Storage N Storage 2 (Spare) Storage N (Spare) Autorização e distribuição
  • 21. Plataforma de Vídeos UOLMais 22/04/2012 Regra de distribuição • Permite configurar distribuição da carga por máquina (nó) • Busca estatísticas de carga de cada servidor • Permite segmentar tipo de vídeo x hardware específico ● Máquinas com muita capacidade de disco, recebem cache heterogêneo ● Máquinas capacidade de CPU recebem “seek” e “SSL” ● Máquinas com muita RAM e rede 10G recebem os vídeos “bombados” • Capacidade de reação ● Vídeos populares se espalham em vários nós ● Vídeos longtail são estimulados a ir sempre no mesmo nó ● Remoção de servidores em estado crítico
  • 22. Plataforma de Vídeos UOLMais 22/04/2012
  • 23. Plataforma de Vídeos UOLMais 22/04/2012 Roteiro balaiobalaio
  • 24. Plataforma de Vídeos UOLMais 22/04/2012 -Problema do “cobertor curto” com as demais soluções tentadas ● Experiência para combinar o que funciona em 1 único server -Limite de banda de cada máquina (1Gb) ● Limite de download por cliente / evasive. ● Bloqueio de user-agents / referers. -Aumento da média de tamanho individual dos vídeos (vídeos HD) -Balanceamento / Monitoração. -Regras específicas para lidar com longtail e thundering herd. ● Níveis de cache conforme a audiência do vídeo. -Minimização de chamadas de fetch para o backend ● Segmentação de arquivos ● Fetch “colapsado” / download preventivo do segmento. -Foco em vídeos (conexões longas e arquivos grandes) -Ponto fraco do Java (CPU + GC) não exerce fator limitante (zero-copy). -Toda arquitetura da aplicação é assíncrona: Java NIO.2 + Netty.
  • 25. Plataforma de Vídeos UOLMais 22/04/2012 Balaio – Níveis de cache Old Young Popular HD RAMDISK RAMDISK video.mp4.seg1 video.mp4.seg1 1 hit x hits y hits
  • 26. Plataforma de Vídeos UOLMais 22/04/2012 Internet Balaio – Segmentação de arquivos video.mp4 file server (apache) video.mp4.seg1 balaio video.mp4.seg2 video.mp4.segN HTTP GET video.mp4 HTTP GET (Range-Request)
  • 27. Plataforma de Vídeos UOLMais 22/04/2012 Balaio – Screenshot Balaio – Interface de monitoração (por máquina)
  • 28. Plataforma de Vídeos UOLMais 22/04/2012 Balaio – Screenshot Balaio – Vantagens • Requests de cliente “colapsados” pro backend • “Seek” com custo de processamento muito baixo ● Primeiro acesso cria tabela de keyframes ● Demais acessos remontam header e custo de CPU é o custo de um http range-request • Redirect (HTTP 302) pra outro server, em caso de servidor em estado critico, ou servidor vir direto via Round-Robin DNS • Baixa latência – novo paradigma + arquivos pequenos • Alta escalabilidade horizontal • Quanto maior o thundering heard, melhor • Controle de banda adaptativo por bitrate