2 poin oleh GN⁺ 2025-05-01 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2025-05-01
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

    • Para pengembang menganggap semua ini normal, tetapi unduhan nyata tersebut menyebabkan tagihan bandwidth sebesar $8000
    • Ringkasnya: perangkat lunak perekam layar memeriksa pembaruan setiap 5 menit. Itu berarti 12 kali per jam
    • Saya memilih perangkat lunak berdasarkan seberapa besar saya bisa mempercayai penilaian pengembangnya. Silakan pertimbangkan apakah penilaian ini masuk akal
  • Screen Studio adalah perekam layar untuk macOS. Ini adalah aplikasi desktop. Mereka mengklaim pembaruan otomatis diperlukan agar versi terbaru bisa dipasang dengan mudah

    • Namun, pembaruan otomatis menimbulkan sejumlah konsekuensi negatif
    • Mengunduh pembaruan tanpa persetujuan pengguna dan menyebabkan trafik di sisi klien
    • Unduhan terus berulang setiap 5 menit. Saya penasaran apakah mereka mendeteksi apakah pengguna berada di koneksi berkuota
    • Ada bug di mana popup pembaruan mengganggu alur kerja
    • Popup itu sendiri memberi pengalaman buruk bagi pengguna. Lebih baik izinkan saat aplikasi ditutup dan tangani sisanya di latar belakang
    • Beberapa pengguna sangat memperhatikan koneksi keluar dari aplikasi, dan memeriksa pembaruan setiap 5 menit itu berlebihan. Tidak perlu dilakukan saat aplikasi sedang berjalan. Lebih baik periksa saat mulai dan tanyakan saat keluar
    • Kompleksitas tambahan pada aplikasi yang menyebabkan semua masalah di atas. Ini menimbulkan biaya bagi pengembang
    • App Store bisa menjadi cara yang sempurna untuk menangani pembaruan dalam kasus ini
  • Konyol jika pengembang aplikasi yang tidak penting seperti perekam layar menganggap perlu memeriksa pembaruan setiap 5 menit

    • Sekali sehari seharusnya sudah cukup
  • 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"

    • Baik pengembang junior maupun yang berpengalaman sering menulis potensi kebocoran PII. Di sebagian besar sistem, kemungkinan besar hal itu bisa menimbulkan masalah hukum
  • Masalah tentang bandwidth yang terbuang sia-sia dari paket data ribuan pengguna

    • Kesalahan ceroboh seperti ini dapat menyebabkan kemacetan bagi semua pengguna internet
    • Jika kesalahan ini tidak menimbulkan biaya $8000 dan malah tertutupi oleh paket gratis Google Cloud atau paket lain, saya penasaran apakah itu tetap akan dianggap bug serius dan segera diperbaiki
    • Berapa banyak desain keliru yang sedang menghasilkan trafik dan menghabiskan sumber daya bersama
  • Saat saya mendistribusikan aplikasi desktop Mac:

    • Kami menggunakan Sparkle untuk menangani pembaruan. Memilih updater buatan sendiri adalah keputusan yang salah
    • Aplikasi kami sangat kompleks dan didistribusikan bersama Mono. Namun ukurannya sekitar 10MB. Versi Windows-nya 2MB dan mencakup biner 32-bit dan 64-bit. Saya penasaran mengapa mereka mendistribusikan perekam layar 250MB
    • Sepertinya mereka tidak belajar apa pun. Seluruh artikel membuat mereka terlihat bodoh
  • Mengejutkan bahwa 'pengujian yang lebih baik' tidak disebutkan dalam ringkasan

    • Saran 'tulislah kode dengan hati-hati' terdengar seperti kesalahan tingkat pemula
    • Sangat menjengkelkan ketika pengembang menggunakan perangkat pengguna sebagai test bed
  • Saya konservatif dalam mengadopsi library pihak ketiga (karena tiap library berpotensi menimbulkan masalah dalam jangka panjang), tetapi pembaruan aplikasi memang layak

    • Ini pada dasarnya adalah satu edge case besar, dan merupakan bagian penting dari rencana pemulihan jika aplikasi memiliki bug serius
    • Bug ini bukan satu-satunya masalah dari updater buatan mereka. Memeriksa setiap 5 menit itu gila. Ini menunjukkan mereka tidak memikirkannya dengan matang
  • Saya menjalankan layanan proxy anti-sensor yang menggunakan file Proxy Auto-Configuration (PAC)

    • Jika file itu berisi JS yang salah, atau ukuran file melebihi 1MB, akan muncul masalah di mana semua aplikasi terus mengirim permintaan ke server jika dikonfigurasi untuk seluruh sistem
    • Ini mengakibatkan server saya terkena serangan DDoS dan IP diblokir di level BGP
    • Lebih dari 500.000 pengguna memakainya setiap hari. Web server saya berjalan di VPS $20 per bulan dengan trafik tak terbatas. Berkat itu, saya tidak mengalami situasi seperti OP