Migramos nosso vídeo do Bunny para a Rehelios: o problema nunca foi a velocidade média
Migramos a hospedagem de vídeo da LearnBase do Bunny Stream para a Rehelios. Aqui está o problema real que tínhamos, como medimos com um benchmark próprio e o que mudou para os alunos.
Por um bom tempo, a hospedagem de vídeo da LearnBase rodou no Bunny Stream. Funcionava. Até que um aluno nos escreveu dizendo que um vídeo demorava "uns dez segundos" para começar, justo na aula que mais importava para ele. O primeiro instinto é culpar a conexão do usuário. Reproduzimos do nosso lado e vimos a mesma coisa: de vez em quando, o player ficava parado vários segundos antes de mostrar o primeiro frame.
Esse e-mail foi o que nos fez olhar o problema a sério e, no fim, mover todo o nosso vídeo para a Rehelios.
A velocidade média nunca foi o problema
O confuso no Bunny era que, na maior parte das vezes, começava rápido. Abra dez vídeos seguidos e nove voavam. O décimo, não. Como criador de cursos, esse é o pior tipo de bug: você não consegue reproduzir na hora que quer, mas o seu aluno sofre com ele.
A causa acabou sendo de infraestrutura. O edge do Bunny que nos calhou serve a partir da Argentina, mas o storage de origem fica no Brasil. Quando um segmento de vídeo já estava em cache no edge, tudo certo. Quando não estava —um vídeo pouco assistido, ou um recém-enviado— a primeira request tinha que ir até a origem no Brasil e voltar. Era aí que apareciam os picos de um, dois e, no pior caso, mais de dez segundos.
A Rehelios serve a partir do PoP da Cloudflare em Buenos Aires, sem esse salto para outro país. Essa era a hipótese. Antes de migrar tudo, na LearnBase quisemos números, não um palpite.
Como medimos
Montamos um benchmark que mede a cadeia real de início do HLS para os mesmos vídeos nos dois provedores:
master.m3u8 → variante de menor qualidade → primeiro segmentoEssa é exatamente a sequência que o player executa quando você dá play, e medimos começando pela qualidade mais baixa, que é a estratégia que o nosso player usa para o vídeo começar o quanto antes.
Um detalhe que importa mais do que parece: cada request foi feita com curl e conexão nova, não com fetch. O fetch reaproveita conexões, então a primeira request paga DNS + TCP + TLS (uns 350 ms) e as seguintes viajam pelo socket já aberto. Sem cuidado, esse artefato faz um provedor parecer cinco vezes mais lento por razões que nada têm a ver com o CDN. Com conexão nova por request, os dois competem em igualdade, no pior caso honesto.
Os resultados
12 vídeos, 4 iterações cada, conexão nova por request:
| Métrica | Rehelios (mediana / p95 / máx) | Bunny (mediana / p95 / máx) |
|---|---|---|
| TTFB do master | 74 / 82 / 98 ms | 93 / 2.436 / 19.120 ms |
| Cadeia de início | 225 / 245 / 251 ms | 258 / 2.570 / 19.312 ms |
Vale ser honesto sobre o que esses números mostram: na mediana estão praticamente empatados. Com o segmento quente no cache, o Bunny começa tão rápido quanto a Rehelios. Se você olhar só a média, a migração parece não valer a pena.
A história está na cauda. O p95 da Rehelios fica em 245 ms e a pior medição foi 251 ms. O do Bunny sobe para 2,5 segundos no p95 e passa de 19 segundos no máximo. Esses são justamente os casos que o nosso aluno enfrentava: o vídeo frio, o que ninguém tocou em uma semana, o que é aberto pela primeira vez logo após o upload.
Para um curso, isso não é uma linha numa tabela. É a diferença entre alguém continuar assistindo ou fechar a aba achando que a plataforma está quebrada.
O que também ajustamos no lado do player
A migração de CDN foi metade do trabalho. Em paralelo, afinamos o player:
- Ele começa na qualidade mais baixa e sobe sozinho quando a banda permite, para o primeiro frame aparecer mais cedo.
- Limitamos quanto buffer ele carrega à frente, para não disputar banda com o início.
- Pré-carregamos só os metadados do vídeo, não o conteúdo inteiro.
- Removemos um refresh de token que rodava mais do que o necessário e adicionava latência à toa.
Nenhuma dessas mudanças conserta uma origem a 3.000 km. Mas somadas ao edge da Rehelios, o início passou a ser uniforme e previsível, em vez de "quase sempre rápido".
Conclusão
O Bunny não é um produto ruim, e a velocidade média nunca foi o problema. O que não dava para tolerar numa plataforma de cursos eram os picos de vários segundos no pior caso, e a causa estava no salto do edge para uma origem em outro país.
A Rehelios nos deu um início estável: p95 abaixo de 250 ms e, acima de tudo, sem aqueles travamentos longos. Se você está escolhendo onde hospedar vídeo para um LMS, nossa recomendação é ignorar a média. Olhe o p95 e o pior caso, porque é isso que os seus alunos realmente sentem.

