Migramos nuestro video de Bunny a Rehelios: el problema no era la velocidad promedio
Migramos el hosting de video de LearnBase de Bunny Stream a Rehelios. Acá está el problema real que teníamos, cómo lo medimos con un benchmark propio y qué cambió para los estudiantes.
Durante un buen tiempo el hosting de video de LearnBase fue Bunny Stream. Andaba bien. Hasta que un alumno nos escribió que un video tardaba "como diez segundos" en arrancar, justo en la clase que más le importaba. Lo primero que uno piensa es que es el internet del usuario. Lo reprodujimos desde acá y vimos exactamente lo mismo: una vez cada tantas, el reproductor se quedaba pensando varios segundos antes de mostrar el primer frame.
Ese fue el disparador para mirar el problema en serio y, al final, para mover todo nuestro video a Rehelios.
El problema no era la velocidad promedio
Lo confuso de Bunny es que la mayoría de las veces arrancaba rápido. Si vos abrías diez videos seguidos, nueve volaban. El décimo, no. Y como creador de cursos eso es lo peor que te puede pasar: no podés reproducir el bug cuando querés, pero tu alumno sí lo sufre.
La causa terminó siendo de infraestructura. El edge de Bunny que nos tocaba sirve desde Argentina, pero su storage de origen está en Brasil. Cuando un segmento de video ya estaba cacheado en el edge, todo bien. Cuando no —un video poco visto, o uno recién subido— la primera request tenía que ir hasta el origen en Brasil y volver. Ahí aparecían los picos de uno, dos, y en el peor caso más de diez segundos.
Rehelios sirve desde el PoP de Cloudflare en Buenos Aires sin ese salto a otro país. Esa era la hipótesis. Antes de migrar todo, en LearnBase quisimos números, no una corazonada.
Cómo lo medimos
Armamos un benchmark que mide la cadena real de arranque de HLS para los mismos videos en los dos proveedores:
master.m3u8 → variante de menor calidad → primer segmentoEsa es exactamente la secuencia que ejecuta el reproductor cuando le das play, y la medimos arrancando por la calidad más baja, que es la estrategia que usa nuestro player para que el video empiece cuanto antes.
Un detalle que importa más de lo que parece: cada request la hicimos con curl y conexión nueva, no con fetch. El fetch reusa conexiones, así que la primera request paga DNS + TCP + TLS (unos 350 ms) y las siguientes viajan por el socket ya abierto. Si no tenés cuidado, ese artefacto hace que un proveedor parezca cinco veces más lento sin que tenga nada que ver con el CDN. Con conexión fresca por request los dos compiten en igualdad de condiciones, en el peor caso honesto.
Los resultados
12 videos, 4 iteraciones cada uno, conexión nueva por request:
| Métrica | Rehelios (mediana / p95 / máx) | Bunny (mediana / p95 / máx) |
|---|---|---|
| TTFB del master | 74 / 82 / 98 ms | 93 / 2.436 / 19.120 ms |
| Cadena de arranque | 225 / 245 / 251 ms | 258 / 2.570 / 19.312 ms |
Vale la pena ser honesto con lo que muestran estos números: en la mediana están casi empatados. Con el segmento caliente en cache, Bunny arranca tan rápido como Rehelios. Si solo mirás el promedio, la migración parece no valer la pena.
La historia está en la cola. El p95 de Rehelios se queda en 245 ms y su peor medición fue 251 ms. El de Bunny se va a 2,5 segundos en el p95 y a más de 19 segundos en el máximo. Esos son justo los casos que vivía nuestro alumno: el video frío, el que nadie tocó en una semana, el que se abre por primera vez después de subirlo.
Para un curso eso no es un número de tabla. Es la diferencia entre que alguien siga mirando o que cierre la pestaña pensando que la plataforma está rota.
Lo que también ajustamos del lado del reproductor
La migración de CDN fue la mitad del trabajo. En paralelo afinamos el player:
- Arranca en la calidad más baja y sube solo cuando el ancho de banda lo permite, así el primer frame aparece antes.
- Limitamos cuánto buffer carga por adelantado, para no pelear ancho de banda con el arranque.
- Precargamos solo la metadata del video, no el contenido entero.
- Sacamos un refresh de token que corría de más y agregaba latencia sin necesidad.
Ninguno de esos cambios arregla un origen a 3.000 km. Pero sumados al edge de Rehelios, el arranque pasó a sentirse parejo y predecible en lugar de "casi siempre rápido".
Conclusión
Bunny no es un mal producto, y la velocidad promedio nunca fue el problema. Lo que no podíamos tolerar en una plataforma de cursos eran los picos de varios segundos en el peor caso, y la causa estaba en el salto del edge al origen en otro país.
Rehelios nos dio un arranque estable: p95 por debajo de 250 ms y, sobre todo, sin esas congeladas largas. Si estás eligiendo dónde alojar video para un LMS, nuestra recomendación es que no mires el promedio. Mirá el p95 y el peor caso, que es lo que realmente sufren tus estudiantes.

