Este artículo describe cómo el desarrollador Kent C. Dodds movió el procesamiento de audio con FFmpeg fuera de su servidor principal (Fly.io) a Cloudflare para evitar problemas de rendimiento. Inicialmente, Dodds ejecutaba FFmpeg directamente en su servidor para procesar grabaciones de su podcast 'Call Kent', combinando audio, aplicando ajustes como recorte de silencio y normalización, y generando el MP3 final. Esta solución simple funcionó bien hasta que una grabación particularmente larga provocó una saturación extrema de la CPU en el servidor, causando degradación del servicio y requiriendo una actualización de hardware.
La decisión de ejecutar FFmpeg en el servidor principal, aunque inicialmente simple y eficiente, resultó problemática porque el servidor también gestionaba las operaciones de escritura, lo que significaba que el procesamiento intensivo de FFmpeg competía por recursos con las solicitudes de los usuarios, afectando la capacidad de respuesta del sitio. La solución fue migrar el proceso de FFmpeg a Cloudflare, aprovechando sus Queues y Containers. Ahora, cuando se publica un episodio, la aplicación encola un trabajo en Cloudflare Queue, que luego es procesado por un Cloudflare Container. Este Container ejecuta el pipeline de FFmpeg, sube los archivos de audio procesados a R2 (un servicio de almacenamiento de objetos) y notifica a la aplicación a través de un callback firmado. Esto libera al servidor principal de la carga de procesamiento, permitiendo que se concentre en las operaciones de escritura y mejorando la estabilidad general del sistema.
La nueva arquitectura implica el uso de Cloudflare Queues para encolar trabajos y Cloudflare Containers para ejecutar el procesamiento de FFmpeg. La aplicación utiliza una API de Cloudflare para encolar los trabajos y verifica la firma del callback para garantizar la seguridad. El resultado es una reducción significativa en la carga del servidor principal (aproximadamente un 85%) y una mejora en la experiencia del usuario, con indicadores de progreso más claros durante el procesamiento del episodio. Aunque la solución implica costos asociados a Cloudflare, Dodds argumenta que es más rentable que mantener una máquina dedicada en Fly.io para ejecutar FFmpeg, especialmente considerando la complejidad de implementar una solución de colas y contenedores propia.
