- Un bug en la actualización automática de Screen Studio, una app de grabación de pantalla para macOS, provocó que un archivo de 250 MB se descargara repetidamente cada 5 minutos
- Como resultado, durante un mes se generaron 2 PB (2,000,000 GB) de tráfico en Google Cloud, lo que terminó en una factura de alrededor de $8,000
- La causa fue una simple omisión de código: faltó la lógica para detener las solicitudes repetidas después de descargar la actualización
- Algunos usuarios incluso sufrieron daños reales, como la cancelación de su servicio de internet, y el equipo de desarrollo asumió plenamente la responsabilidad
- Se enfatizan lecciones como configurar alertas de costos en la nube, revisar el código que puede generar gastos y preparar mecanismos de control para el servidor de actualizaciones
Resumen del incidente
- Screen Studio es una app de escritorio para grabar pantalla en macOS y cuenta con función de actualización automática
- El archivo de actualización pesa unos 250 MB y la app consulta el servidor cada 5 minutos
- Debido al bug, incluso después de detectar la actualización, las solicitudes cada 5 minutos no se detenían y el archivo seguía descargándose
El inicio de un refactor trágico
- Antes, la ventana emergente de actualización interrumpía la grabación y eso causaba un problema de UX
- Durante un refactor para mejorar eso, se eliminó la lógica que detenía el temporizador después de la actualización
- Como resultado, la app terminó con una lógica integrada que hacía que el archivo de actualización se descargara una y otra vez
El contexto aterrador: ejecución en segundo plano
- Una parte importante de los usuarios tenía la app ejecutándose en segundo plano durante varias semanas
- En ese estado, miles de instancias descargaban automáticamente 250 MB cada 5 minutos
El desastre en números
- Descargar cada 5 minutos = 288 veces al día
- Tráfico diario descargado por usuario = 72 GB
- Si esto se mantuvo por unos 30 días y se asumen 1,000 usuarios:
- 250 MB × 288 × 30 × 1,000 = cerca de 2 PB de tráfico
- Costo estimado generado en Google Cloud: alrededor de $8,000
Errores en cadena
- No estaban configuradas las alertas de costos de Google Cloud
- Había una falsa sensación de tranquilidad porque la factura mensual habitual rondaba los $300
- Al final, se detectó el problema cuando la transacción fue bloqueada por exceder el límite de la tarjeta de crédito
Impacto en los usuarios
- Un usuario recibió un aviso de cancelación de contrato por parte de su ISP (proveedor de internet) debido a este tráfico
- En esa zona no había proveedor alternativo → una afectación seria para su vida diaria
- El equipo reconoció su responsabilidad y ofreció compensar los costos; por suerte, la situación se resolvió de buena manera
- Aun así, la experiencia de haber perjudicado a un usuario dejó una reflexión profunda en el desarrollador
Resumen de lecciones
- Las alertas de costos en la nube son indispensables
- La lógica de actualización automática debe escribirse con muchísimo cuidado
- Todo código que pueda generar costos debe revisarse de forma especial
- Hay que incluir señales de control del servidor (por ejemplo, una bandera de actualización forzada) en el diseño
- El uso de la nube debe revisarse periódicamente
1 comentarios
Comentarios de Hacker News
Para quienes encuentren este hilo en el futuro a través de una búsqueda web: screen.studio es un software de grabación de pantalla para macOS que busca actualizaciones cada 5 minutos. Pero el bug descrito en esta publicación consiste en que descarga un archivo de actualización de 250 MB cada 5 minutos
Screen Studio es un grabador de pantalla para macOS. Es una aplicación de escritorio. Afirman que necesita autoactualización para poder instalar fácilmente la versión más reciente
Es ridículo que el desarrollador de una app no esencial como un grabador de pantalla piense que debe buscar actualizaciones cada 5 minutos
De verdad me pregunto si hace falta revisar actualizaciones cada 5 minutos. Una vez al inicio basta, y si el usuario la deja abierta durante días, podría revisarse una vez al día o incluso con menos frecuencia
Siempre soy estricto con las revisiones de código. Una vez, cuando un gerente me dijo que dejáramos más cosas a QA, respondí: "Todos podríamos perder el trabajo. Siempre podemos perderlo por una sola línea de código mala"
El problema del ancho de banda consumido innecesariamente por miles de usuarios en sus planes de datos
Cuando distribuí una aplicación de escritorio para Mac:
Sorprende que "mejores pruebas" no se mencionen en el resumen
Soy conservador con la adopción de bibliotecas de terceros (porque cada biblioteca puede convertirse en un problema a largo plazo), pero las actualizaciones de aplicaciones sí valen la pena
Opero un servicio de proxy anticensura que usa archivos Proxy Auto-Configuration (PAC)