2 Punkte von GN⁺ 2025-05-01 | 1 Kommentare | Auf WhatsApp teilen
  • Durch einen Bug in der automatischen Update-Funktion der macOS-Bildschirmaufnahme-App Screen Studio wurde eine 250-MB-Datei alle 5 Minuten wiederholt heruntergeladen
  • Das führte dazu, dass über einen Monat hinweg 2 PB (2.000.000 GB) an Traffic bei Google Cloud anfielen und in einer Rechnungsexplosion von rund 8.000 $ endeten
  • Die Ursache war ein simples fehlendes Stück Code: Die Logik, die wiederholte Anfragen nach dem Herunterladen des Updates stoppt, fehlte
  • Bei einigen Nutzern entstand sogar konkreter Schaden, etwa die Kündigung ihres Internetdienstes, und das Entwicklerteam erkennt seine Verantwortung voll an
  • Betont werden die Lehren, darunter Cloud-Kostenwarnungen einrichten, kostenverursachenden Code prüfen und Kontrollmechanismen für Update-Server vorsehen

Überblick über den Vorfall

  • Screen Studio ist eine Desktop-Bildschirmaufnahme-App für macOS und verfügt über eine automatische Update-Funktion
  • Die Updatedatei ist etwa 250 MB groß, und die App prüft alle 5 Minuten den Server
  • Wegen des Bugs wurde nach Erkennung eines Updates die Anfrage im 5-Minuten-Takt nicht gestoppt und das Update immer weiter heruntergeladen

Der Beginn des tragischen Refactorings

  • Zuvor gab es ein UX-Problem, weil das Update-Popup während einer Aufnahme störte
  • Bei einem Refactor zur Verbesserung dieses Verhaltens wurde die Logik entfernt, die den Timer nach dem Update stoppt
  • Dadurch war in der App letztlich eine Logik eingebaut, die die Updatedatei wiederholt herunterlädt

Der beunruhigende Kontext: Ausführung im Hintergrund

  • Ein erheblicher Teil der Nutzer ließ die App wochenlang im Hintergrund laufen
  • In diesem Zustand luden Tausende Instanzen alle 5 Minuten automatisch 250 MB herunter

Die Katastrophe in Zahlen

  • Download alle 5 Minuten = 288-mal pro Tag
  • Täglicher Download-Traffic pro Nutzer = 72 GB
  • Bei einer Dauer von rund 30 Tagen und angenommen 1.000 Nutzern:
    • 250 MB × 288 × 30 × 1.000 = rund 2 PB Traffic
  • Erwartete Kosten bei Google Cloud: rund 8.000 $

Verkettung von Fehlern

  • Für Google Cloud waren keine Kostenwarnungen eingerichtet
  • Wegen der bisherigen Monatskosten von rund 300 $ fühlte man sich in falscher Sicherheit
  • Letztlich wurde das Problem erst bemerkt, als Transaktionen wegen Überschreitung des Kreditkartenlimits blockiert wurden

Schäden bei Nutzern

  • Ein Nutzer erhielt wegen dieses Traffics von seinem ISP (Internetanbieter) die Mitteilung, dass sein Vertrag gekündigt werde
  • In der Region gab es keinen alternativen Anbieter → erhebliche Einschränkungen im Alltag
  • Das Team übernahm die Verantwortung und bot Kostenerstattung an, glücklicherweise wurde die Situation einvernehmlich gelöst
  • Die Erfahrung, Nutzern Schaden zugefügt zu haben, hinterließ bei den Entwicklern jedoch tiefe Selbstreflexion

Zusammenfassung der Lehren

  • Cloud-Kostenwarnungen sind Pflicht
  • Logik für automatische Updates sollte mit äußerster Sorgfalt geschrieben werden
  • Jeder Code mit potenziellem Kostenrisiko sollte besonders geprüft werden
  • Serverseitige Kontrollsignale (z. B. ein Flag für erzwungene Updates) sollten Teil des Designs sein
  • Der Zustand der Cloud-Nutzung sollte regelmäßig überprüft werden

1 Kommentare

 
GN⁺ 2025-05-01
Hacker-News-Kommentare
  • Für alle, die diesen Thread in Zukunft über die Websuche finden: screen.studio ist eine Bildschirmaufnahmesoftware für macOS und prüft alle 5 Minuten auf Updates. Der in diesem Beitrag beschriebene Bug bestand jedoch darin, dass alle 5 Minuten eine 250-MB-Update-Datei heruntergeladen wurde.

    • Die Entwickler betrachteten das alles als normal, aber die tatsächlichen Downloads verursachten Bandbreitenkosten von 8.000 $.
    • Kurzfassung: Die Bildschirmaufnahmesoftware prüft alle 5 Minuten auf Updates. Das sind 12-mal pro Stunde.
    • Ich wähle Software danach aus, in welchem Maß ich dem Urteilsvermögen der Entwickler vertraue. Man sollte sich überlegen, ob dieses Urteil vernünftig ist.
  • Screen Studio ist ein Bildschirmrekorder für macOS. Es ist eine Desktop-App. Es wird behauptet, automatische Updates seien nötig, damit sich die neueste Version leicht installieren lässt.

    • Automatische Updates haben hier jedoch mehrere negative Folgen.
    • Ohne Zustimmung des Nutzers werden Updates heruntergeladen und verursachen Traffic auf dem Client.
    • Der Download wird alle 5 Minuten wiederholt. Ich frage mich, ob erkannt wurde, ob sich der Nutzer in einem getakteten Netzwerk befindet.
    • Es gibt einen Bug, bei dem das Update-Popup den Arbeitsfluss unterbricht.
    • Schon das Popup selbst ist eine schlechte Nutzererfahrung. Besser wäre es, dies beim Schließen der App zu erlauben und den Rest im Hintergrund zu erledigen.
    • Manche Nutzer beobachten ausgehende Verbindungen ihrer Apps sehr genau, und eine Update-Prüfung alle 5 Minuten ist übertrieben. Das muss nicht während der App-Laufzeit passieren. Besser wäre eine Prüfung beim Start und eine Nachfrage beim Beenden.
    • Die zusätzliche Komplexität der App, die all diese Probleme verursacht hat, erzeugt auch Kosten für den Entwickler.
    • Der App Store könnte in diesem Fall der perfekte Weg sein, Updates zu handhaben.
  • Es ist absurd, dass ein Entwickler einer nicht kritischen App wie eines Bildschirmrekorders meint, alle 5 Minuten auf Updates prüfen zu müssen.

    • Einmal am Tag wäre völlig ausreichend.
  • Ich bezweifle, dass wirklich alle 5 Minuten auf Updates geprüft werden muss. Einmal beim Start reicht aus, und selbst wenn Nutzer die App tagelang geöffnet lassen, könnte man nur einmal pro Tag oder noch seltener prüfen.

  • Ich bin bei Code-Reviews immer streng. Einmal sagte mir ein Manager, ich solle mehr an QA delegieren, und ich antwortete: „Wir könnten alle unseren Job verlieren. Wegen einer einzigen schlechten Codezeile können wir immer unseren Job verlieren.“

    • Es kommt oft vor, dass Junior- oder auch erfahrene Entwickler potenzielle PII-Leaks einbauen. In den meisten Systemen kann das mit sehr hoher Wahrscheinlichkeit rechtliche Probleme verursachen.
  • Das Problem betrifft die Bandbreite, die Tausende von Nutzern unnötig aus ihrem Datentarif verbraucht haben.

    • Solche nachlässigen Fehler können für alle Internetnutzer zu Überlastung führen.
    • Wenn dieser Fehler nicht 8.000 $ gekostet hätte, sondern durch das kostenlose Kontingent von Google Cloud oder einen anderen Tarif aufgefangen worden wäre, frage ich mich, ob er dann trotzdem als schwerwiegender Bug angesehen und schnell behoben worden wäre.
    • Wie viel fehlerhaftes Design erzeugt wohl Traffic und verbraucht gemeinsame Ressourcen?
  • Als ich eine Mac-Desktop-Anwendung verteilt habe:

    • Wir nutzten Sparkle, um Updates zu handhaben. Dass sie ihren eigenen Updater gewählt haben, war eine schlechte Entscheidung.
    • Unsere Anwendung war sehr komplex und wurde zusammen mit Mono ausgeliefert. Trotzdem war sie etwa 10 MB groß. Die Windows-Version war 2 MB groß und enthielt 32-Bit- und 64-Bit-Binärdateien. Ich frage mich, warum sie einen 250-MB-Bildschirmrekorder ausliefern.
    • Sie scheinen nichts daraus gelernt zu haben. Der ganze Artikel lässt sie dumm aussehen.
  • Es überrascht mich, dass „bessere Tests“ in der Zusammenfassung nicht erwähnt werden.

    • Der Vorschlag „Schreibt den Code sorgfältig“ wirkt wie ein Anfängerfehler.
    • Es ist extrem frustrierend, wenn Entwickler die Geräte der Nutzer als Testumgebung verwenden.
  • Ich bin bei der Einführung von Third-Party-Bibliotheken konservativ (weil jede Bibliothek langfristig Probleme verursachen kann), aber App-Updates sind es wert.

    • Im Grunde ist das ein einziger großer Edge Case und ein wichtiger Teil des Wiederherstellungsplans, falls die App einen schweren Bug hat.
    • Dieser Bug war nicht das einzige Problem ihres eigenen Updaters. Alle 5 Minuten zu prüfen, ist verrückt. Es zeigt, dass sie darüber nicht gründlich nachgedacht haben.
  • Ich betreibe einen zensurumgehenden Proxy-Dienst, der Proxy Auto-Configuration (PAC)-Dateien verwendet.

    • Wenn die Datei fehlerhaftes JS enthält oder größer als 1 MB ist, tritt ein Problem auf, bei dem alle Apps weiterhin Anfragen an den Server senden, wenn sie systemweit konfiguriert ist.
    • Das führte dazu, dass meine Server per DDoS angegriffen wurden und IPs auf BGP-Ebene blockiert wurden.
    • Mehr als 500.000 Nutzer verwenden den Dienst täglich. Mein Webserver läuft auf einem VPS für 20 $ pro Monat mit unbegrenztem Traffic. Dadurch bin ich nicht in eine Situation wie die des OP geraten.