- Karena bug pembaruan otomatis pada Screen Studio, aplikasi perekam layar untuk macOS, terjadi masalah file 250MB diunduh berulang setiap 5 menit
- Akibatnya, selama sebulan muncul trafik 2PB (2.000.000GB) di Google Cloud yang berujung pada tagihan sekitar $8,000
- Penyebabnya adalah kelalaian kode sederhana: logika untuk menghentikan permintaan berulang setelah unduhan pembaruan selesai tidak disertakan
- Beberapa pengguna bahkan mengalami kerugian nyata seperti pemutusan layanan internet, dan tim pengembang sangat menyesali tanggung jawab ini
- Ditekankan pelajaran seperti menyiapkan peringatan biaya cloud, meninjau kode yang dapat memicu biaya, dan menyediakan mekanisme kendali server pembaruan
Ringkasan insiden
- Screen Studio adalah aplikasi perekam layar desktop untuk macOS yang memiliki fitur pembaruan otomatis
- Ukuran file pembaruan adalah sekitar 250MB, dan aplikasi memeriksa server setiap 5 menit
- Karena bug, setelah pembaruan terdeteksi, permintaan tiap 5 menit tidak berhenti dan terus mengunduh ulang
Awal dari refaktor yang tragis
- Sebelumnya, pop-up pembaruan mengganggu proses perekaman sehingga menimbulkan masalah UX
- Saat melakukan refaktor untuk memperbaikinya, logika untuk menghentikan timer setelah pembaruan justru terhapus
- Akibatnya, logika mengunduh file pembaruan berulang kali tertanam di dalam aplikasi
Konteks yang menakutkan: berjalan di latar belakang
- Banyak pengguna menjalankan aplikasi di latar belakang selama berminggu-minggu
- Dalam kondisi ini, ribuan instance secara otomatis mengunduh 250MB setiap 5 menit
Bencana dalam angka
- Unduh setiap 5 menit = 288 kali per hari
- Trafik unduhan harian per pengguna = 72GB
- Jika berlangsung sekitar 30 hari dengan asumsi 1.000 pengguna:
- 250MB × 288 × 30 × 1.000 = sekitar 2PB trafik
- Perkiraan biaya yang timbul di Google Cloud: sekitar $8,000
Rangkaian kesalahan
- Peringatan biaya Google Cloud tidak disetel
- Karena biasanya tagihan bulanan hanya sekitar $300, situasi ini diremehkan
- Pada akhirnya, masalah baru disadari ketika transaksi diblokir karena limit kartu kredit terlampaui
Dampak pada pengguna
- Seorang pengguna menerima pemberitahuan pemutusan kontrak layanan dari ISP (penyedia layanan internet) akibat trafik ini
- Tidak ada penyedia alternatif di wilayah tersebut → ketidaknyamanan hidup yang serius
- Tim mengakui tanggung jawab dan menawarkan kompensasi biaya, dan untungnya situasi terselesaikan dengan baik
- Namun, pengalaman merugikan pengguna ini meninggalkan refleksi mendalam bagi pengembang
Ringkasan pelajaran
- Peringatan biaya cloud itu wajib
- Logika pembaruan otomatis harus ditulis dengan sangat hati-hati
- Semua kode yang berpotensi menimbulkan biaya harus ditinjau secara khusus
- Sinyal kendali server (misalnya flag pembaruan paksa) perlu dimasukkan ke dalam desain
- Status penggunaan cloud harus diperiksa secara berkala
1 komentar
Opini Hacker News
Untuk orang-orang yang menemukan thread ini lewat pencarian web di masa depan: screen.studio adalah perangkat lunak perekam layar macOS yang memeriksa pembaruan setiap 5 menit. Namun, bug yang dijelaskan dalam postingan ini adalah bahwa file pembaruan 250MB diunduh setiap 5 menit
Screen Studio adalah perekam layar untuk macOS. Ini adalah aplikasi desktop. Mereka mengklaim pembaruan otomatis diperlukan agar versi terbaru bisa dipasang dengan mudah
Konyol jika pengembang aplikasi yang tidak penting seperti perekam layar menganggap perlu memeriksa pembaruan setiap 5 menit
Saya ragu benar-benar perlu memeriksa pembaruan setiap 5 menit. Sekali saat mulai sudah cukup, dan bahkan jika pengguna membiarkannya menyala selama berhari-hari, tetap bisa diperiksa sekali sehari atau lebih jarang dari itu
Saya selalu ketat soal code review. Suatu kali ketika manajer berkata agar lebih banyak menyerahkannya ke QA, saya menjawab, "Kita semua bisa kehilangan pekerjaan. Kita selalu bisa kehilangan pekerjaan karena satu baris kode buruk"
Masalah tentang bandwidth yang terbuang sia-sia dari paket data ribuan pengguna
Saat saya mendistribusikan aplikasi desktop Mac:
Mengejutkan bahwa 'pengujian yang lebih baik' tidak disebutkan dalam ringkasan
Saya konservatif dalam mengadopsi library pihak ketiga (karena tiap library berpotensi menimbulkan masalah dalam jangka panjang), tetapi pembaruan aplikasi memang layak
Saya menjalankan layanan proxy anti-sensor yang menggunakan file Proxy Auto-Configuration (PAC)