Como a Amazon Prime Video Para Servir Milhares De Eventos ao Vivo
Disclaimer Este texto foi inicialmente concebido pela IA Generativa em função da transcrição de uma live do canal Dev Eficiente. Se preferir acompanhar por vídeo, é só dar o play. Introdução Em sistemas de grande escala, o gerenciamento de tráfego e a alocação eficiente de recursos são desafios cruciais para garantir performance e estabilidade. Neste post, discutiremos como a equipe da Prime Video desenvolveu soluções para lidar com a publicação e atualização de milhares de eventos ao vivo, e quais lições podemos extrair dessas abordagens para nossos próprios sistemas. O Desafio: Inbound Requests Imprevisíveis A Prime Video, como plataforma de streaming, precisa lidar com a transmissão de diversos eventos ao vivo, como jogos de futebol, NFL e outros esportes. Em 2017, o volume era pequeno, mas em 2018 surgiu a necessidade de suportar a publicação de temporadas inteiras de diferentes ligas esportivas. Um dos maiores desafios encontrados foi o chamado "inbound requests" - que, no caso deles, refere-se à quantidade de eventos que precisam ser preparados para transmissão ao vivo. Diferente do que normalmente pensamos quando falamos de requisições (tráfego de usuários), o problema aqui era gerenciar o agendamento e publicação de milhares de eventos esportivos. O Problema do Burst Traffic Outro desafio significativo é o que eles chamaram de "Burst Traffic Problem". Cada evento exige recursos computacionais que variam enormemente de um para outro. Por exemplo, a final do Super Bowl demanda muito mais recursos do que um jogo menos popular. O desvio padrão da utilização de recursos para fazer streaming de diferentes eventos é muito alto, tornando extremamente difícil o provisionamento adequado. Se você provisiona para o pior caso, acaba gastando recursos desnecessários quando eventos menores são transmitidos. Esse é um problema diferente de picos previsíveis como declarações de imposto de renda ou Black Friday, onde você pode se preparar com antecedência baseado em padrões históricos. Algoritmos de Controle de Tráfego Para lidar com esses desafios, a equipe da Prime Video estudou algoritmos clássicos de controle de tráfego de rede: Leaky Bucket Um dos algoritmos adotados foi o Leaky Bucket, que funciona como uma cancela de pedágio. Esse algoritmo recebe requests (no caso, eventos a serem publicados) e os processa em uma taxa constante, independentemente da velocidade com que estão chegando. A analogia é um balde com um furo no fundo: a água (eventos) pode entrar em rajadas, mas sai em um fluxo constante e controlado, evitando sobrecarga dos sistemas downstream. Token Bucket Outro algoritmo mencionado é o Token Bucket, que usa o conceito de "tokens" como permissões para processar requisições. Cada evento consome uma quantidade de tokens proporcional ao seu custo de processamento. A Solução Implementada A solução adotada pela equipe da Prime Video foi implementada usando Amazon Simple Queue Service (SQS) e AWS Lambda. Os componentes principais da solução incluem: Filas SQS: Funcionam como implementação do algoritmo Leaky Bucket, onde os eventos são enfileirados e processados de forma controlada. AWS Lambda: Utilizado para processar os eventos da fila, respeitando as características de cada um. Filas de Prioridade: Divididas em alta e baixa prioridade: Alta prioridade: Para atualizações de eventos já publicados (mudanças de horário, por exemplo) Baixa prioridade: Para o fluxo padrão de publicação de novos eventos Sistema de "Custo Virtual": Criaram uma abstração onde cada evento tem um "custo" de publicação (como uma moeda virtual). Um Super Bowl, por exemplo, pode custar "10 moedas", enquanto um jogo menos popular custaria "1 moeda". Scheduler com Teto de Gasto: O scheduler tem um limite de "moedas" que pode gastar por ciclo, controlando assim a carga total do sistema. O Problema da Starvation Um problema comum em algoritmos de agendamento com filas de prioridade é a "starvation" (inanição). Se muitos eventos de alta prioridade continuam chegando, os de baixa prioridade podem nunca ser processados. É semelhante a um hospital onde pacientes com pulseiras vermelhas (emergência) são sempre atendidos antes daqueles com pulseiras amarelas. Se o fluxo de emergências não para, os casos menos urgentes nunca são atendidos. Embora existam soluções para isso (como garantir que eventos na fila de baixa prioridade sejam processados após um número máximo de ciclos de espera), a equipe da Prime Video considerou que este não era um problema crítico para eles no momento. Conclusão O gerenciamento eficiente de recursos computacionais para eventos imprevisíveis é um desafio significativo para sistemas de grande escala. A abordagem da Prime Video mostra como algoritmos clássicos de controle de tráfego podem ser aplicados em contextos modernos. A combinação do Leaky Bucket (implementado via filas) com

Disclaimer
Este texto foi inicialmente concebido pela IA Generativa em função da transcrição de uma live do canal Dev Eficiente. Se preferir acompanhar por vídeo, é só dar o play.
Introdução
Em sistemas de grande escala, o gerenciamento de tráfego e a alocação eficiente de recursos são desafios cruciais para garantir performance e estabilidade. Neste post, discutiremos como a equipe da Prime Video desenvolveu soluções para lidar com a publicação e atualização de milhares de eventos ao vivo, e quais lições podemos extrair dessas abordagens para nossos próprios sistemas.
O Desafio: Inbound Requests Imprevisíveis
A Prime Video, como plataforma de streaming, precisa lidar com a transmissão de diversos eventos ao vivo, como jogos de futebol, NFL e outros esportes. Em 2017, o volume era pequeno, mas em 2018 surgiu a necessidade de suportar a publicação de temporadas inteiras de diferentes ligas esportivas.
Um dos maiores desafios encontrados foi o chamado "inbound requests" - que, no caso deles, refere-se à quantidade de eventos que precisam ser preparados para transmissão ao vivo. Diferente do que normalmente pensamos quando falamos de requisições (tráfego de usuários), o problema aqui era gerenciar o agendamento e publicação de milhares de eventos esportivos.
O Problema do Burst Traffic
Outro desafio significativo é o que eles chamaram de "Burst Traffic Problem". Cada evento exige recursos computacionais que variam enormemente de um para outro. Por exemplo, a final do Super Bowl demanda muito mais recursos do que um jogo menos popular.
O desvio padrão da utilização de recursos para fazer streaming de diferentes eventos é muito alto, tornando extremamente difícil o provisionamento adequado. Se você provisiona para o pior caso, acaba gastando recursos desnecessários quando eventos menores são transmitidos.
Esse é um problema diferente de picos previsíveis como declarações de imposto de renda ou Black Friday, onde você pode se preparar com antecedência baseado em padrões históricos.
Algoritmos de Controle de Tráfego
Para lidar com esses desafios, a equipe da Prime Video estudou algoritmos clássicos de controle de tráfego de rede:
Leaky Bucket
Um dos algoritmos adotados foi o Leaky Bucket, que funciona como uma cancela de pedágio. Esse algoritmo recebe requests (no caso, eventos a serem publicados) e os processa em uma taxa constante, independentemente da velocidade com que estão chegando.
A analogia é um balde com um furo no fundo: a água (eventos) pode entrar em rajadas, mas sai em um fluxo constante e controlado, evitando sobrecarga dos sistemas downstream.
Token Bucket
Outro algoritmo mencionado é o Token Bucket, que usa o conceito de "tokens" como permissões para processar requisições. Cada evento consome uma quantidade de tokens proporcional ao seu custo de processamento.
A Solução Implementada
A solução adotada pela equipe da Prime Video foi implementada usando Amazon Simple Queue Service (SQS) e AWS Lambda. Os componentes principais da solução incluem:
Filas SQS: Funcionam como implementação do algoritmo Leaky Bucket, onde os eventos são enfileirados e processados de forma controlada.
AWS Lambda: Utilizado para processar os eventos da fila, respeitando as características de cada um.
-
Filas de Prioridade: Divididas em alta e baixa prioridade:
- Alta prioridade: Para atualizações de eventos já publicados (mudanças de horário, por exemplo)
- Baixa prioridade: Para o fluxo padrão de publicação de novos eventos
Sistema de "Custo Virtual": Criaram uma abstração onde cada evento tem um "custo" de publicação (como uma moeda virtual). Um Super Bowl, por exemplo, pode custar "10 moedas", enquanto um jogo menos popular custaria "1 moeda".
Scheduler com Teto de Gasto: O scheduler tem um limite de "moedas" que pode gastar por ciclo, controlando assim a carga total do sistema.
O Problema da Starvation
Um problema comum em algoritmos de agendamento com filas de prioridade é a "starvation" (inanição). Se muitos eventos de alta prioridade continuam chegando, os de baixa prioridade podem nunca ser processados.
É semelhante a um hospital onde pacientes com pulseiras vermelhas (emergência) são sempre atendidos antes daqueles com pulseiras amarelas. Se o fluxo de emergências não para, os casos menos urgentes nunca são atendidos.
Embora existam soluções para isso (como garantir que eventos na fila de baixa prioridade sejam processados após um número máximo de ciclos de espera), a equipe da Prime Video considerou que este não era um problema crítico para eles no momento.
Conclusão
O gerenciamento eficiente de recursos computacionais para eventos imprevisíveis é um desafio significativo para sistemas de grande escala. A abordagem da Prime Video mostra como algoritmos clássicos de controle de tráfego podem ser aplicados em contextos modernos.
A combinação do Leaky Bucket (implementado via filas) com um sistema de custo virtual semelhante ao Token Bucket oferece um controle granular sobre o processamento de eventos, permitindo utilizar os recursos de forma mais eficiente.
Vale destacar a importância de conhecer os pontos fracos da sua arquitetura. É uma coisa implementar uma solução sem conhecer suas limitações; outra é implementá-la sabendo exatamente onde estão seus pontos fracos e decidir conscientemente lidar com eles ou não.
Este caso da Prime Video nos mostra que, para problemas de tráfego imprevisível, existem mecanismos eficientes que permitem que nossos sistemas continuem operando de forma estável mesmo sob condições variáveis de carga.
Referência
O artigo original podia ser lido em https://www.primevideotech.com/cloud-and-scale/shaping-live-sports-publishing-traffic-through-a-distributed-scheduling-system (aparentemente mudaram o endereço e não deixaram um redirect que preste, ou eu não que fui capaz de seguir)
Conheça a Jornada Dev + Eficiente
A Jornada Dev + Eficiente é um treinamento focado em fazer você crescer na carreira como uma pessoa cada vez mais especializada em Entregar Software que Gera Valor com o Máximo de Qualidade e Fluidez.
A Jornada pavimenta este caminho através de uma abordagem integrada, trabalhando diversos aspectos que influenciam na qualidade da entrega final, tais como: Engenharia de Requisitos, Design de Código, Arquitetura, Testes etc.
É o único local que você vai encontrar que é 100% focado em fazer você crescer como uma pessoa desenvolvedora de software completa.
Para conhecer mais, acesse https://deveficiente.com