- macOS के लिए स्क्रीन रिकॉर्डिंग ऐप Screen Studio के ऑटो-अपडेट बग के कारण 250MB फ़ाइल हर 5 मिनट में बार-बार डाउनलोड होने लगी
- नतीजतन, एक महीने में Google Cloud पर 2PB(2,000,000GB) ट्रैफ़िक पैदा हुआ और करीब $8,000 का भारी बिल आ गया
- वजह एक साधारण कोड छूटना था: अपडेट डाउनलोड होने के बाद दोबारा रिक्वेस्ट रोकने वाला लॉजिक छूट गया था
- कुछ उपयोगकर्ताओं को इंटरनेट सेवा समाप्त होने जैसी वास्तविक हानि भी हुई, और डेवलपमेंट टीम ने इसकी ज़िम्मेदारी गंभीरता से स्वीकार की
- इसमें क्लाउड कॉस्ट अलर्ट सेट करना, लागत पैदा करने वाले कोड की समीक्षा करना, और अपडेट सर्वर के लिए कंट्रोल मैकेनिज़्म तैयार करना जैसे सबक पर ज़ोर दिया गया
घटना का सारांश
- Screen Studio, macOS के लिए एक डेस्कटॉप स्क्रीन रिकॉर्डिंग ऐप है, जिसमें ऑटो-अपडेट फीचर है
- अपडेट फ़ाइल का आकार लगभग 250MB है, और ऐप हर 5 मिनट में सर्वर चेक करता है
- बग की वजह से अपडेट का पता चलने के बाद भी 5 मिनट के अंतराल पर रिक्वेस्ट रुकने के बजाय डाउनलोड जारी रहा
त्रासदीपूर्ण रिफैक्टर की शुरुआत
- पहले अपडेट पॉपअप रिकॉर्डिंग के दौरान बाधा बनता था, जिससे UX समस्या होती थी
- इसे सुधारने के लिए किए गए रिफैक्टर में अपडेट के बाद टाइमर रोकने वाला लॉजिक हटा दिया गया
- नतीजतन, ऐप के भीतर अपडेट फ़ाइल को बार-बार डाउनलोड करने वाला लॉजिक शामिल रह गया
डरावना संदर्भ: बैकग्राउंड में चलने की स्थिति
- काफी उपयोगकर्ता ऐप को कई हफ्तों तक बैकग्राउंड में चालू रखकर इस्तेमाल कर रहे थे
- इस स्थिति में हज़ारों इंस्टेंस हर 5 मिनट में 250MB अपने-आप डाउनलोड कर रहे थे
आँकड़ों में दिखती तबाही
- हर 5 मिनट में डाउनलोड = दिन में 288 बार
- प्रति उपयोगकर्ता प्रतिदिन डाउनलोड ट्रैफ़िक = 72GB
- लगभग 30 दिनों तक जारी रहने और 1,000 उपयोगकर्ताओं के आधार पर:
- 250MB × 288 × 30 × 1,000 = लगभग 2PB ट्रैफ़िक
- Google Cloud पर अनुमानित शुल्क: करीब $8,000
लगातार हुई गलतियाँ
- Google Cloud कॉस्ट अलर्ट सेट नहीं थे
- पहले का मासिक बिल लगभग $300 होने के कारण लापरवाही रही
- आखिरकार क्रेडिट कार्ड सीमा पार होने से पेमेंट रुकने पर समस्या का पता चला
उपयोगकर्ताओं को नुकसान
- एक उपयोगकर्ता को इस ट्रैफ़िक की वजह से ISP (इंटरनेट सेवा प्रदाता) से सेवा अनुबंध समाप्त करने की सूचना मिली
- उस क्षेत्र में कोई वैकल्पिक प्रदाता नहीं था → गंभीर जीवनगत असुविधा
- टीम ने ज़िम्मेदारी स्वीकार की और लागत भरपाई की पेशकश की, और सौभाग्य से मामला शांति से सुलझ गया
- लेकिन उपयोगकर्ता को नुकसान पहुँचाने का अनुभव डेवलपर के लिए गहरा आत्ममंथन छोड़ गया
सीखे गए सबक
- क्लाउड कॉस्ट अलर्ट अनिवार्य हैं
- ऑटो-अपडेट लॉजिक बहुत सावधानी से लिखना चाहिए
- लागत पैदा कर सकने वाले हर कोड की विशेष समीक्षा होनी चाहिए
- सर्वर कंट्रोल सिग्नल (जैसे: फ़ोर्स-अपडेट फ़्लैग) को डिज़ाइन में शामिल करना चाहिए
- क्लाउड उपयोग की स्थिति की नियमित जाँच करनी चाहिए
1 टिप्पणियां
Hacker News की राय
भविष्य में वे लोग जो web search के ज़रिए इस thread को ढूंढें: screen.studio एक macOS screen recording software है, जो हर 5 मिनट में updates चेक करता है। लेकिन इस पोस्ट में बताया गया bug यह है कि वह हर 5 मिनट में 250MB की update file डाउनलोड करता है
Screen Studio macOS के लिए एक screen recorder है। यह एक desktop app है। यह दावा करता है कि latest version को आसानी से install करने के लिए auto-update ज़रूरी है
यह बेतुका है कि screen recorder जैसे non-essential app का developer यह सोचता है कि उसे हर 5 मिनट में updates चेक करने चाहिए
सच में हर 5 मिनट में updates चेक करने की ज़रूरत है या नहीं, इस पर संदेह है। startup पर एक बार काफी है, और अगर user इसे कई दिनों तक चालू रखता है, तब भी दिन में एक बार या उससे कम चेक किया जा सकता है
मैं code review को लेकर हमेशा सख्त रहता हूँ। एक बार जब manager ने कहा कि QA पर ज़्यादा छोड़ना चाहिए, तो मैंने जवाब दिया: "हम सब अपनी नौकरी खो सकते हैं। हम हमेशा code की एक खराब line की वजह से अपनी नौकरी खो सकते हैं"
हज़ारों users के data plan से बेवजह खर्च हुए bandwidth का मुद्दा
जब मैंने Mac desktop application deploy किया था:
यह हैरानी की बात है कि summary में 'बेहतर testing' का ज़िक्र नहीं है
मैं third-party libraries अपनाने को लेकर conservative हूँ (क्योंकि हर library लंबे समय में समस्या पैदा कर सकती है), लेकिन app updates इसके लायक हैं
मैं Proxy Auto-Configuration (PAC) files इस्तेमाल करने वाली एक censorship-circumvention proxy service चला रहा हूँ