Com um acervo de mais de 80.000 mídias, é necessário que todas as informações estejam em ordem. Além disso, o trabalho de aproximadamente 10 editores de conteúdo precisa ser atualizado com o menor atraso possível. Nesta palestra, contarei sobre as soluções para processamento paralelo utilizado na Globosat, passando também pela infraestrutura das API's dos aplicativos Telecine Play e Globosat Play.
DBA BRASIL 1.0 - O Futuro do DBA em um universo as a Service.
Como a Globosat usa Python e RQ para distribuição de conteúdo
1. DEFINIÇÃO DE PÚBLICO-ALVO
IX Encontro PythonRio
Como a Globosat utiliza Python
para distribuição de conteúdo
Marcos Cardoso
2. DEFINIÇÃO DE PÚBLICO-ALVO
MARCOS CARDOSO
Bacharel em Ciência da
Computação - UFRJ
Desenvolvedor Backend
@ Globosat
Entusiasta de Tuning,
Backend, Game Dev,
VR, Mobile
facebook.com/vrcmarcos
github.com/vrcmarcos
linkedin.com/vrcmarcos
vrcmarcos@gmail.com
slideshare.net/vrcmarcos
IX ENCONTRO PYTHONRIO
5. DEFINIÇÃO DE PÚBLICO-ALVO
A Globosat
● 33 canais
● Mais de 80 mil mídias
● Programação linear e não-linear
IX ENCONTRO PYTHONRIO
6. DEFINIÇÃO DE PÚBLICO-ALVO
A Globosat
● 33 canais
● Mais de 80 mil mídias
● Programação linear e não-linear
● Atendimento interno: VODs (Produtos Play)
IX ENCONTRO PYTHONRIO
7. DEFINIÇÃO DE PÚBLICO-ALVO
A Globosat
● 33 canais
● Mais de 80 mil mídias
● Programação linear e não-linear
● Atendimento interno: VODs (Produtos Play)
● Atendimento externo: Operadoras
IX ENCONTRO PYTHONRIO
11. DEFINIÇÃO DE PÚBLICO-ALVO
Cenário
● Possui um banco de dados próprio (MySQL/Percona)
● Precisa notificar as API’s a cada edição no cadastro de
mídia ( Globosat Play, Telecine Play )
IX ENCONTRO PYTHONRIO
12. DEFINIÇÃO DE PÚBLICO-ALVO
Cenário
● Possui um banco de dados próprio (MySQL/Percona)
● Precisa notificar as API’s a cada edição no cadastro de
mídia ( Globosat Play, Telecine Play )
● Aproximadamente 13 mil edições/dia
IX ENCONTRO PYTHONRIO
13. DEFINIÇÃO DE PÚBLICO-ALVO
Cenário
● Possui um banco de dados próprio (MySQL/Percona)
● Precisa notificar as API’s a cada edição no cadastro de
mídia ( Globosat Play, Telecine Play )
● Aproximadamente 13 mil edições/dia
IX ENCONTRO PYTHONRIO
15. DEFINIÇÃO DE PÚBLICO-ALVO
PythonRQ - http://python-rq.org/
● Cria uma fila usando o Redis (Armazém de dados
usado como BD/Cache/Broker) para enfileirar e
consumir Jobs
IX ENCONTRO PYTHONRIO
16. DEFINIÇÃO DE PÚBLICO-ALVO
PythonRQ - http://python-rq.org/
● Cria uma fila usando o Redis (Armazém de dados
usado como BD/Cache/Broker) para enfileirar e
consumir Jobs
● Fornece um Worker para consumir os Jobs através de
linha de comando
IX ENCONTRO PYTHONRIO
17. DEFINIÇÃO DE PÚBLICO-ALVO
PythonRQ - http://python-rq.org/
● Cria uma fila usando o Redis (Armazém de dados
usado como BD/Cache/Broker) para enfileirar e
consumir Jobs
● Fornece um Worker para consumir os Jobs através de
linha de comando
● Fácil de implementar
IX ENCONTRO PYTHONRIO
18. DEFINIÇÃO DE PÚBLICO-ALVO
PythonRQ - http://python-rq.org/
● Cria uma fila usando o Redis (Armazém de dados
usado como BD/Cache/Broker) para enfileirar e
consumir Jobs
● Fornece um Worker para consumir os Jobs através de
linha de comando
● Fácil de implementar
● Suporte à Django, Heroku, Supervisor e Sentry (Log
das Exceptions)
IX ENCONTRO PYTHONRIO
24. DEFINIÇÃO DE PÚBLICO-ALVO
PythonRQ no CMS
● As notificações são processadas em lote (Até 10
edições por lote)
● Servidor isolado, rodando 8 workers para consumo
das notificações
IX ENCONTRO PYTHONRIO
25. DEFINIÇÃO DE PÚBLICO-ALVO
PythonRQ no CMS
● As notificações são processadas em lote (Até 10
edições por lote)
● Servidor isolado, rodando 8 workers para consumo
das notificações
● Desenvolvido para suportar picos de 40 mil lotes/dia
IX ENCONTRO PYTHONRIO
28. DEFINIÇÃO DE PÚBLICO-ALVO
PythonRQ no CMS
● Integrado ao Django
● Comando para rodar o worker via manage.py
● Interface web para visualizar o andamento das
tarefas
IX ENCONTRO PYTHONRIO
29. DEFINIÇÃO DE PÚBLICO-ALVO
PythonRQ no CMS
● Integrado ao Django
● Comando para rodar o worker via manage.py
● Interface web para visualizar o andamento das
tarefas
● Usamos a biblioteca ZDaemon para “daemonizar” os
workers
IX ENCONTRO PYTHONRIO