2 पॉइंट द्वारा GN⁺ 2025-05-01 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • 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 टिप्पणियां

 
GN⁺ 2025-05-01
Hacker News की राय
  • भविष्य में वे लोग जो web search के ज़रिए इस thread को ढूंढें: screen.studio एक macOS screen recording software है, जो हर 5 मिनट में updates चेक करता है। लेकिन इस पोस्ट में बताया गया bug यह है कि वह हर 5 मिनट में 250MB की update file डाउनलोड करता है

    • developers इस सबको सामान्य मानते हैं, लेकिन वास्तविक डाउनलोड के कारण $8000 का bandwidth bill बना
    • सारांश: screen recording software हर 5 मिनट में updates चेक करता है। यानी एक घंटे में 12 बार
    • मैं software चुनते समय इस बात पर भरोसा करता हूँ कि developer का judgment कितना विश्वसनीय है। कृपया सोचें कि क्या यह judgment तर्कसंगत है
  • Screen Studio macOS के लिए एक screen recorder है। यह एक desktop app है। यह दावा करता है कि latest version को आसानी से install करने के लिए auto-update ज़रूरी है

    • लेकिन auto-update कई नकारात्मक परिणाम लाता है
    • user की सहमति के बिना updates डाउनलोड करके client पर traffic पैदा करता है
    • डाउनलोड हर 5 मिनट में बार-बार जारी रहता है। संदेह है कि क्या इसने यह detect किया कि user metered connection पर है
    • update popup flow को बाधित करने वाला bug है
    • popup खुद भी user के लिए खराब अनुभव देता है। बेहतर होगा कि app बंद करते समय अनुमति ली जाए और बाकी काम background में हो
    • कुछ user app के outgoing connections पर बारीकी से नज़र रखते हैं, और हर 5 मिनट में update check करना हद से ज़्यादा है। app चलने के दौरान इसकी ज़रूरत नहीं है। startup पर चेक करना और exit पर पूछना बेहतर है
    • app की यह अतिरिक्त complexity ऊपर की सभी समस्याएँ पैदा करती है। इससे developer पर भी cost आती है
    • इस मामले में App Store updates संभालने का एक आदर्श तरीका हो सकता है
  • यह बेतुका है कि screen recorder जैसे non-essential app का developer यह सोचता है कि उसे हर 5 मिनट में updates चेक करने चाहिए

    • दिन में एक बार काफी होना चाहिए
  • सच में हर 5 मिनट में updates चेक करने की ज़रूरत है या नहीं, इस पर संदेह है। startup पर एक बार काफी है, और अगर user इसे कई दिनों तक चालू रखता है, तब भी दिन में एक बार या उससे कम चेक किया जा सकता है

  • मैं code review को लेकर हमेशा सख्त रहता हूँ। एक बार जब manager ने कहा कि QA पर ज़्यादा छोड़ना चाहिए, तो मैंने जवाब दिया: "हम सब अपनी नौकरी खो सकते हैं। हम हमेशा code की एक खराब line की वजह से अपनी नौकरी खो सकते हैं"

    • junior या अनुभवी developers अक्सर संभावित PII leak लिख देते हैं। ज़्यादातर systems में इससे कानूनी समस्या पैदा होने की बहुत अधिक संभावना होती है
  • हज़ारों users के data plan से बेवजह खर्च हुए bandwidth का मुद्दा

    • ऐसी लापरवाह गलतियाँ सभी internet users के लिए congestion पैदा कर सकती हैं
    • अगर यह गलती $8000 की cost के बजाय Google Cloud के free tier या किसी दूसरे plan से absorb हो जाती, तो भी क्या इसे गंभीर bug मानकर जल्दी ठीक किया जाता, इस पर संदेह है
    • कितने खराब designs traffic बना रहे हैं और साझा resources खर्च कर रहे हैं
  • जब मैंने Mac desktop application deploy किया था:

    • updates संभालने के लिए हमने Sparkle इस्तेमाल किया था। उनका अपना updater चुनना गलत फैसला था
    • हमारी application बहुत complex थी और Mono के साथ ship की गई थी। फिर भी उसका size लगभग 10MB था। Windows version 2MB था और उसमें 32-bit तथा 64-bit binaries शामिल थीं। समझ नहीं आता कि वे 250MB का screen recorder क्यों distribute कर रहे हैं
    • लगता है उन्होंने कोई सबक नहीं सीखा। पूरा article उन्हें मूर्ख दिखाता है
  • यह हैरानी की बात है कि summary में 'बेहतर testing' का ज़िक्र नहीं है

    • 'code को सावधानी से लिखो' जैसी सलाह शुरुआती स्तर की गलती जैसी लगती है
    • यह बहुत निराशाजनक है कि developer user devices को test bed की तरह इस्तेमाल करते हैं
  • मैं third-party libraries अपनाने को लेकर conservative हूँ (क्योंकि हर library लंबे समय में समस्या पैदा कर सकती है), लेकिन app updates इसके लायक हैं

    • यह मूल रूप से एक बड़ा edge case है, और अगर app में गंभीर bug हो तो recovery plan का अहम हिस्सा है
    • यह bug उनके updater की अकेली समस्या नहीं है। हर 5 मिनट में check करना पागलपन है। इससे दिखता है कि उन्होंने इस पर गहराई से नहीं सोचा
  • मैं Proxy Auto-Configuration (PAC) files इस्तेमाल करने वाली एक censorship-circumvention proxy service चला रहा हूँ

    • अगर file में गलत JS हो, या file size 1MB से बड़ा हो, तो system-wide configure होने पर सभी apps server को बार-बार requests भेजते रहते हैं
    • इसका नतीजा यह हुआ कि मेरे server पर DDoS जैसा हमला हुआ और BGP स्तर पर IP block कर दिया गया
    • 500,000 से अधिक users इसे हर दिन इस्तेमाल करते हैं। मेरा web server $20 प्रति माह वाले VPS पर unlimited traffic देता है। इसी वजह से मैं OP जैसी स्थिति में नहीं फँसा