一行程式碼造成 8000 美元損失 (★
47 分)
由於程式碼中的一個簡單錯誤,macOS 的螢幕錄製應用程式 Screen Studio 出現了嚴重的自動更新問題,導致公司損失超過 8000 美元。問題源於程式在重構時,忘記在下載更新檔案後停止每五分鐘的更新檢查迴圈,結果應用程式不斷重複下載一個 250MB 的更新檔案。這種情況在數千個用戶的裝置上同時發生,導致超過 200 萬 GB (2 PB) 的流量被消耗,而這些流量是基於 Google Cloud 提供的服務運行的。這種錯誤發生了一個月才被發現,直到信用卡超出限額並被凍結。
這次事件不僅對公司造成財務損失,也對部分用戶帶來了嚴重影響。例如,有一位住在鄉村的用戶因為巨大的流量消耗,而被當地唯一的網路供應商中斷服務。儘管公司提出願意承擔相關費用來補償用戶,但該用戶最終成功與供應商協商解決問題。作者對這次事件的反思主要包括建議設置雲端服務的費用警報、更加仔細地編寫可能產生成本的程式碼,以及透過伺服器提供更細緻的控制訊號(例如強制性更新)來減少這類問題的發生。
在 Hacker News 討論中,許多用戶分享了他們的觀點。一些評論指出,應用程式每五分鐘檢查更新是不合理的,尤其對於螢幕錄製軟體來說,此更新頻率完全沒有必要。其他評論則批評這次事件暴露了缺乏測試和審查流程的問題,開發者應加強測試以避免類似重大錯誤。一些技術性建議包括使用增量更新技術(如 Sparkle 框架的增量更新功能)以減少流量消耗,或採用內容可尋址儲存技術來減少重複下載的情況。
此外,也有討論指出,應避免過於頻繁的背景更新檢查或強制彈窗行為,這些舉措不僅可能惹怒用戶,還會造成不必要的網路負擔。一些人則建議完全採用應用程式商店(例如 macOS App Store)來處理更新流程,藉此減少開發者需要自行處理更新程式的複雜度。
整體而言,此事件讓開發者和讀者們深刻意識到程式碼設計、測試流程、有計劃的雲端支出管理以及用戶體驗觀點的重要性,同時提醒大家看似微小的 Bug 可能帶來的巨大影響。
👥
48 則討論、評論 💬
https://news.ycombinator.com/item?id=43829006