- macOS için ekran kayıt uygulaması Screen Studio'nun otomatik güncelleme hatası, 250 MB'lık dosyanın her 5 dakikada bir tekrar tekrar indirilmesine yol açtı
- Sonuç olarak Google Cloud üzerinde bir ay boyunca 2 PB (2.000.000 GB) trafik oluştu ve bu da yaklaşık 8.000 dolarlık dev bir faturaya dönüştü
- Sebep basit bir kod eksikliğiydi: güncelleme indirildikten sonra tekrar eden istekleri durduran mantık atlanmıştı
- Bazı kullanıcılar için internet hizmetinin iptali gibi gerçek zararlar bile ortaya çıktı ve geliştirme ekibi sorumluluğu derinden hissetti
- Bulut maliyet uyarıları ayarlama, maliyet doğurabilecek kodları gözden geçirme, güncelleme sunucusu için kontrol mekanizmaları hazırlama gibi derslerin altı çizildi
Olayın özeti
- Screen Studio, macOS için masaüstü ekran kayıt uygulaması ve otomatik güncelleme özelliğine sahip
- Güncelleme dosyasının boyutu yaklaşık 250 MB ve uygulama her 5 dakikada bir sunucuyu kontrol ediyor
- Hata nedeniyle güncelleme algılandıktan sonra bile 5 dakikalık aralıklarla yapılan istekler durmadı ve indirme sürmeye devam etti
Trajik refactor'un başlangıcı
- Daha önce güncelleme açılır penceresi kayıt sırasında rahatsızlık veriyor ve UX sorunu yaratıyordu
- Bunu iyileştirmeye yönelik bir refactor sırasında, güncellemeden sonra zamanlayıcıyı durduran mantık kaldırıldı
- Sonuç olarak güncelleme dosyasını tekrar tekrar indiren mantık uygulamanın içine gömülü halde kaldı
Korkutucu bağlam: arka planda çalışır durumda
- Kullanıcıların önemli bir bölümü uygulamayı haftalar boyunca arka planda açık şekilde kullanıyordu
- Bu durumda binlerce örnek, her 5 dakikada bir 250 MB'ı otomatik olarak indiriyordu
Rakamlarla felaket
- Her 5 dakikada bir indirme = günde 288 kez
- Kullanıcı başına günlük indirme trafiği = 72 GB
- Yaklaşık 30 gün boyunca sürdüğü ve 1.000 kullanıcı olduğu varsayılırsa:
- 250 MB × 288 × 30 × 1.000 = yaklaşık 2 PB trafik
- Google Cloud üzerinde oluşan tahmini ücret: yaklaşık 8.000 dolar
Zincirleme hatalar
- Google Cloud maliyet uyarıları ayarlanmamıştı
- Mevcut aylık ücretin 300 dolar civarında olması nedeniyle rehavete kapılındı
- Sonunda kredi kartı limiti aşılıp işlem reddedilince sorun fark edildi
Kullanıcı zararı
- Bir kullanıcı, bu trafik yüzünden ISP'sinden (internet servis sağlayıcısı) hizmet sözleşmesinin feshedileceğine dair bildirim aldı
- Bölgede alternatif sağlayıcı da yoktu → bu da ciddi yaşam zorluklarına yol açtı
- Ekip sorumluluğu kabul etti ve masrafları karşılama teklifinde bulundu; neyse ki durum dostane şekilde çözüldü
- Ancak kullanıcıya zarar vermiş olma deneyimi, geliştiriciler üzerinde derin bir özeleştiri bıraktı
Çıkarılan derslerin özeti
- Bulut maliyet uyarıları zorunlu
- Otomatik güncelleme mantığı çok dikkatli yazılmalı
- Maliyet doğurma ihtimali olan tüm kodlar özellikle gözden geçirilmeli
- Sunucu kontrol sinyalleri (ör. zorunlu güncelleme bayrağı) tasarıma dahil edilmeli
- Bulut kullanım durumu düzenli olarak kontrol edilmeli
1 yorum
Hacker News görüşleri
Gelecekte web aramasıyla bu başlığı bulacak kişiler için: screen.studio, macOS için bir ekran kaydı yazılımı ve her 5 dakikada bir güncellemeleri kontrol ediyor. Ancak bu gönderide anlatılan hata, her 5 dakikada bir 250MB'lık güncelleme dosyasını indirmesi
Screen Studio, macOS için bir ekran kaydedici. Bir masaüstü uygulaması. En son sürümün kolayca kurulabilmesi için otomatik güncellemenin gerekli olduğunu savunuyor
Ekran kaydedici gibi kritik olmayan bir uygulamanın geliştiricisinin her 5 dakikada bir güncelleme kontrolü gerektiğini düşünmesi saçma
Gerçekten her 5 dakikada bir güncelleme kontrolü gerekip gerekmediğini sorguluyorum. Açılışta bir kez yeterli olurdu ve kullanıcı uygulamayı günlerce açık bıraksa bile günde bir kez ya da daha seyrek kontrol edilebilir
Kod incelemeleri konusunda her zaman katıyımdır. Bir keresinde yöneticim QA'ya daha fazla bırakmamı söylediğinde, "Hepimiz işimizi kaybedebiliriz. Kötü bir satır kod yüzünden her zaman işimizi kaybedebiliriz" diye cevap vermiştim
Binlerce kullanıcının veri tarifesinde gereksiz yere tüketilen bant genişliği meselesi
Ben Mac masaüstü uygulamaları dağıtırken:
Özette "daha iyi test"ten bahsedilmemesine şaşırdım
Üçüncü taraf kütüphaneleri benimseme konusunda tutucuyum (çünkü her kütüphane uzun vadede sorun çıkarma potansiyeline sahip), ama uygulama güncellemeleri buna değer
Proxy Auto-Configuration (PAC) dosyaları kullanan sansür aşma amaçlı bir proxy hizmeti işletiyorum