02 / चुनिंदा काम

इंजीनियरिंग की कहानियाँ,
सिर्फ प्रोजेक्ट के नाम नहीं।

तीन सिस्टम, जो दिखाते हैं कि मैं वास्तविक सीमाओं के बीच भरोसेमंद और निगरानी योग्य नतीजे तक कैसे पहुँचता हूँ।

खास संग्रह

क्लाउड संचालन: जुड़ी हुई सीखें

CDN, मॉनिटरिंग, वर्चुअलाइज़ेशन और AWS। सिस्टम को बेहतर चलाने की चार कहानियाँ।

संग्रह देखें ↗
केस 02

फ़ुल-स्टैक · डेटा विज़ुअलाइज़ेशन · मोबाइल UX

63ट्रैक किए गए सेशन

मैंने Kraftwerk बनाया, एक ऐप जिसमें हर सेट की एक्सरसाइज़, वज़न और रेप्स दर्ज किए जा सकते हैं। यह वर्कआउट लॉग के साथ उसका इतिहास और प्रगति का विश्लेषण भी दिखाता है।

चुनौती

बिखरे हुए सेशन, वॉल्यूम और गतिविधि के डेटा को एक भरोसेमंद इतिहास में लाना, बिना वर्कआउट दर्ज करने की प्रक्रिया धीमी किए।

तरीका

जाँचे गए रिकॉर्ड, इंपोर्ट की सुविधा, ज़रूरत के अनुसार बदलने वाले प्लान और दैनिक, साप्ताहिक व मासिक ग्राफ़ की समयावधियाँ इस्तेमाल करना।

नतीजा

मोबाइल के लिए बनाया गया ट्रेनिंग व्यू, जिसमें सेशन सुरक्षित रहते हैं, वॉल्यूम की प्रगति साफ़ दिखती है और कदमों के डेटा के साथ लंबे समय के रुझान मिलते हैं।

केस स्टडी पढ़ें

मेरा बनाया ऐप। ऐप में एक्सरसाइज़ चुनें और ट्रेनिंग की तारीख के साथ हर सेट का वज़न और रेप्स दर्ज करें। सहेजे गए सेशन से इतिहास, वॉल्यूम की गणना और प्रगति के ग्राफ़ बनते हैं। पब्लिक Kraftwerk पेज इसी ट्रेनिंग इतिहास का केवल देखने योग्य रूप है। पढ़ें कि Kraftwerk की शुरुआत कैसे हुई →

आँकड़े, सही संदर्भ के साथ। सेशन के मेट्रिक, कुल वॉल्यूम, कदम और समयावधि के विकल्प से हर वर्कआउट को हफ़्तों और महीनों के रुझान में समझा जा सकता है।

आगे बढ़ने की गुंजाइश। CSV और हेल्थ डेटा इंपोर्ट से पुरानी जानकारी को दूसरी जगह ले जाना आसान रहता है। वहीं प्रस्तुति में नए मेट्रिक जोड़े जा सकते हैं, बिना मूल रिकॉर्ड दोबारा लिखे।

KRAFTWERK / सफ़र का लॉग

कागज़ से प्रगति तक।

मेरी अपनी ट्रेनिंग के लिए बने ऐप की कहानी, चार पड़ावों में।

पुश-अप्स के मेरे मूल नोट्स।
पुश-अप्स के मेरे मूल नोट्स।
पड़ाव 1 / 4
शुरुआत एक नोटबुक से हुई।

मुझे अपनी ज़रूरत का ट्रेनिंग ऐप नहीं मिला। इसलिए तारीखें और रेप्स हाथ से लिखने लगा। यह पुश-अप्स वाला मेरा असली पन्ना है।

  • रिस्पॉन्सिव UI
  • इनपुट जाँचने वाली API
  • CSV इंपोर्ट
  • हेल्थ डेटा
  • इंटरैक्टिव ग्राफ़
केस 03

ऑब्ज़र्वेबिलिटी · संचालन · ऑटोमेशन

24/7ऑन-कॉल रिस्पॉन्डर टीम

जब मैं 2000 में कंपनी से जुड़ा, कुछ सर्वर और लॉग का विश्लेषण करने वाले स्क्रिप्ट थे। यह शुरुआत के लिए ठीक था, लेकिन बढ़ती जटिलता सँभालने वाला मॉनिटरिंग सिस्टम नहीं था।

चुनौती

घटना के बाद लॉग देखने के बजाय ऐसी मॉनिटरिंग लाना जो इंफ़्रास्ट्रक्चर के साथ बढ़ सके और उपयोगकर्ताओं की शिकायत से पहले परेशानी बता दे।

तरीका

Nagios और Zabbix से शुरुआत करना, सर्विस चेक और सूचनाएँ जोड़ना और रुझान समझने के लिए परफ़ॉर्मेंस मेट्रिक सहेजना।

नतीजा

समय के साथ विकसित हुई मॉनिटरिंग व्यवस्था, जिसमें बाद में Grafana और Checkmk भी जुड़े। इसमें जल्दी चेतावनी और लंबे समय के संचालन की समझ, दोनों शामिल थे।

केस स्टडी पढ़ें

छोटा-सा सेटअप, बढ़ती अनदेखी। शुरुआत में कुछ सर्वर और लॉग फ़ाइलों का विश्लेषण करने वाले स्क्रिप्ट ही थे। प्लेटफ़ॉर्म बढ़ा तो यह तरीका न उसके आकार के साथ चल पाया, न जटिलता के साथ। उससे भी बड़ी बात: यह प्रतिक्रिया पर आधारित था, यानी बता रहा था कि क्या हो चुका है।

बॉस और ग्राहक मॉनिटरिंग टूल नहीं हैं। परेशानी का पता लगाने के लिए उसके हो जाने का इंतज़ार क्यों करें? अगर आउटेज की पहली खबर मैनेजर या ग्राहक से मिले, तो संचालन टीम पहले ही पीछे रह गई है। घटना के नुकसान के अलावा, इससे संगठन के भीतर और बाहर टीम पर भरोसा भी घटता है।

एक जाना-पहचाना उदाहरण: TLS सर्टिफ़िकेट की मियाद खत्म होना। 2000 में सर्टिफ़िकेट अपने-आप रिन्यू करने की आज जैसी सुविधा नहीं थी। Let’s Encrypt बहुत बाद में, 2015 में आया। कनेक्शन टूटने से पहले हमें नज़दीक आती एक्सपायरी पर नज़र रखनी थी। सर्टिफ़िकेट की ज़रूरतें और जारी करने वाले अलग हो सकते हैं; अपने-आप होने वाले रिन्यूअल की भी मॉनिटरिंग ज़रूरी है।

पता लगाएँ, सूचना दें और सबूत सहेजें। हमने पहले Nagios और Zabbix चुने। ऐसे चेक चाहिए थे जो समस्या पकड़ें और सूचना ऐसे व्यक्ति तक पहुँचाएँ जो कार्रवाई कर सके। खास तौर पर सूचनाएँ 24/7 ऑन-कॉल रिस्पॉन्डर टीम तक जाती थीं, ताकि किसी भी समय कदम उठाया जा सके। तब लागत की सीमाओं के कारण वेबसाइट का आर्किटेक्चर हाई-अवेलेबिलिटी वाला नहीं था। इसलिए भरोसेमंद पहचान और तेज़ प्रतिक्रिया, जितनी अच्छी सेवा संभव थी उसे बनाए रखने के लिए बहुत अहम थीं; मॉनिटरिंग खुद डाउनटाइम का जोखिम खत्म नहीं करती थी। वर्षों में SMS, WhatsApp और PagerDuty जैसे चैनल जुड़े। ये बाद के बदलाव थे, यह दावा नहीं कि 2000 में सब एक साथ इस्तेमाल हो रहे थे।

घटनाओं से रुझानों तक। परफ़ॉर्मेंस मेट्रिक दर्ज करने से एक अलार्म से आगे देखना संभव हुआ: समय के साथ लोड, लेटेंसी और उपलब्ध क्षमता कैसे बदल रही थी? बाद में Grafana और Checkmk भी टूल में शामिल हुए। लक्ष्य वही रहा: गिरावट को जल्दी पहचानना और डेटा से समझना कि सिस्टम किस दिशा में जा रहा है।

वह सीख जो साथ रही। मॉनिटरिंग सिर्फ डैशबोर्ड का संग्रह नहीं है। इससे टीम को मौका मिलना चाहिए कि किसी और के समस्या बताने से पहले वह कार्रवाई कर सके।

ऐतिहासिक संदर्भ: Let’s Encrypt के पहले पब्लिक सर्टिफ़िकेट की घोषणा (2015)।

  • Nagios
  • Zabbix
  • Grafana
  • Checkmk
और योगदान
01 / परफ़ॉर्मेंस · 2008

स्टैटिक कंटेंट की डिलीवरी का बोझ वेब सर्वर से हटाना

Akamai CDN लाकर करीब 90% ऑब्जेक्ट उपयोगकर्ताओं के पास कैश किए, जिससे बेयर-मेटल ओरिजिन सर्वर का बोझ घटा।

~90% ऑब्जेक्ट उपयोगकर्ताओं के पास कैश हुए
प्रोजेक्ट की कहानी पढ़ें

शुरुआती स्थिति

2008 में प्लेटफ़ॉर्म एक ही लोड बैलेंसर के पीछे बेयर-मेटल वेब सर्वर पर चलता था। कोई कैश लेयर नहीं थी: स्टैटिक कंटेंट के अनुरोध सीधे वेब सर्वर फ़ार्म तक जाते थे। मौसम सेवा देने के कारण माँग बहुत तेज़ी से बदलती थी। मौसम और दूसरी बड़ी घटनाओं के हिसाब से कुछ दिनों में सामान्य से करीब 20 गुना ट्रैफ़िक आता था, जैसे किसी रिटेलर को Black Friday पर अचानक बढ़ोतरी सँभालनी पड़े। हमें ऐसा सिस्टम चाहिए था जो इन उछालों के साथ बढ़ सके।

अड़चन

अनुरोधों की दर बढ़ने पर उपलब्ध सॉकेट क्षमता अड़चन बन जाती थी। वेबसाइट जवाब देना बंद कर सकती थी, जबकि माँग का बड़ा हिस्सा ऐसे कंटेंट का था जिसे बार-बार ओरिजिन से भेजने की ज़रूरत ही नहीं थी।

बदलाव

Akamai की मदद से करीब 90% ऑब्जेक्ट उपयोगकर्ताओं के पास कैश हो सके। सिर्फ करीब 10% अनुरोध ओरिजिन तक पहुँचते थे, यानी लगभग 90% अनुरोधों का बोझ हट गया। इस राहत से हम वेब सर्वर फ़ार्म का आकार भी घटा पाए।

संचालन में ज़्यादा गुंजाइश

व्यस्त दिनों का लोड सँभालने का एक और तरीका मिला: उपयुक्त कंटेंट की कैश अवधि बढ़ाकर ओरिजिन का बोझ और कम किया जा सकता था। इसका मतलब था चुनना कि कहाँ पुरानी कैश कॉपी कुछ देर और रखना ठीक है, न कि हर चीज़ पर एक ही सेटिंग लगा देना।

सीख: बार-बार भेजा जा सकने वाला कंटेंट उपयोगकर्ता के पास रखें और कैश नीति को सिर्फ परफ़ॉर्मेंस सेटिंग नहीं, संचालन का साधन मानें। यह पुराने प्रोजेक्ट का सारांश है; इंफ़्रास्ट्रक्चर की पहचान और आंतरिक संचालन के विवरण जानबूझकर नहीं दिए गए हैं।

02 / आधुनिकीकरण

बेयर मेटल से VMware तक

मूल लेटेंसी की ज़रूरतें पूरी न कर पाने वाला स्टोरेज प्रोजेक्ट सफल वर्चुअलाइज़ेशन प्लेटफ़ॉर्म बना और इंफ़्रास्ट्रक्चर के बारे में मेरी सोच बदल गई।

> €10,000 हर महीने रैक की लागत में बचत
प्रोजेक्ट की कहानी पढ़ें

एक प्रोजेक्ट जिस पर मुझे खास गर्व है

सिस्टम एडमिनिस्ट्रेटर के तौर पर मैं कॉन्फ़िगरेशन और आर्किटेक्चर बदल सकता था, लेकिन हार्डवेयर की हर सीमा को पैच से दूर नहीं कर सकता था। हमने वेब सर्वर और प्रोडक्शन सिस्टम के बीच कैश लेयर बनाने के लिए एक स्टोरेज सिस्टम खरीदा था।

प्रूफ़ ऑफ़ कॉन्सेप्ट पूरी तस्वीर नहीं था

सिस्टम हमारे प्रूफ़ ऑफ़ कॉन्सेप्ट में सफल रहा। लेकिन वास्तविक संचालन के लोड पर उसकी लेटेंसी उस काम के लिए बहुत ज़्यादा थी। कई लाख यूरो का निवेश जोखिम में था। क्या असफलता मानकर यह पैसा डूबा हुआ समझ लेना चाहिए था?

उसी निवेश का दूसरा इस्तेमाल

हमने दिशा बदली। स्टोरेज छोड़ देने के बजाय उसे VMware के साथ बेयर-मेटल सर्वर वर्चुअलाइज़ करने का आधार बनाया। कैश लेयर की मूल योजना काम नहीं आई, लेकिन एक अलग आर्किटेक्चर में उसी हार्डवेयर की उपयोगिता थी।

अड़चन से मापने योग्य सफलता तक

नतीजा एक सफल वर्चुअलाइज़ेशन प्रोजेक्ट था। फ़िज़िकल सर्वर को समेटने से हर महीने रैक की लागत में €10,000 से ज़्यादा की बचत भी हुई। जोखिम में पड़े निवेश को हमने ऐसे प्लेटफ़ॉर्म में बदल दिया जिससे संचालन और खर्च, दोनों को स्पष्ट लाभ हुआ।

इससे AWS की ओर क्यों बढ़ा

नतीजा सफल था, फिर भी इस अनुभव ने और की चाह पैदा की: ऐसा इंफ़्रास्ट्रक्चर जिसे सॉफ़्टवेयर की तरह ज़रूरत के हिसाब से बना और बदल सकूँ। वह इच्छा बनी रही। शायद इसीलिए आगे चलकर AWS से मेरा लगाव हो गया।

03 / क्रिएटिव कोडिंग

Browser Arcade

बचपन में इन गेम पर कितने Deutsche Mark खर्च किए होंगे? मुझे नहीं पता। आज Codex के साथ इनके अपने ब्राउज़र संस्करण बना सकता हूँ।

2 खेलने योग्य ब्राउज़र गेम
कहानी पढ़ें

एक छोटा प्रयोग

मैं देखना चाहता था कि क्या Codex कुछ स्क्रीनशॉट और थोड़ी जानकारी से किसी गेम का एहसास ब्राउज़र में दोबारा बना सकता है। इसी जिज्ञासा से Browser Arcade बना: Snake और Galaga के मेरे अपने रूप।

जेबखर्च से खुद बनाने तक

मुझे नहीं पता बचपन में कितने Deutsche Mark इन गेम में चले गए। तब मैं खेलने के पैसे देता था। आज ऐसा संस्करण खुद बनाने में हिस्सा ले सकता हूँ, और इस बात पर अब भी मुस्कुराता हूँ।

मज़ा आज़माने में है

नतीजे में दो खेलने योग्य ब्राउज़र गेम बने, सिर्फ प्रयोग के आनंद के लिए। बचपन की याद ऐसी चीज़ बन गई जिसे मैं बना, बदल और साझा कर सकता हूँ।

Snake ↗ · Galaga ↗