MongoDB से Postgres

यह किस बारे में है?

किसी कंपनी में पद के लिए इंटरव्यू देते समय, मुझसे निम्नलिखित प्रश्न का उत्तर देने को कहा गया: क्या आप कृपया सबसे कठिन समस्या का वर्णन कर सकते हैं जिसे आपने हल किया है? संक्षेप में, सबसे कठिन समस्या जो मैंने हल की, वह 2023 में eBay में काम करते समय हुई, जहाँ मैंने eBay के एक बड़े आंतरिक प्रोजेक्ट को MongoDB से Postgres में माइग्रेट किया। हालांकि, इस प्रश्न ने वास्तव में मुझे इस कठिन समस्या को कैसे हल किया, इस पर विचार करने पर मजबूर किया और मेरे डेवलपर सफर पर विचार करने का अवसर दिया। इसके कारण, मैंने उस प्रश्न का बहुत विस्तृत और पूर्ण उत्तर लिखा, और मैं अपना उत्तर अपनी वेबसाइट पर साझा करना चाहता हूँ।

प्रश्न क्या था?

क्या आप कृपया सबसे कठिन समस्या का वर्णन कर सकते हैं जिसे आपने हल किया? कृपया 4 पैराग्राफ से कम में उत्तर दें और हमें बताएं:

  1. आपने क्या किया
  2. इसे कठिन क्या बनाता था
  3. आपने इस अनुभव से क्या सीखा
  4. परिणामस्वरूप आप कैसे विकसित हुए

मेरा उत्तर क्या था?

1 - आपने क्या किया

वर्तमान में, मेरे करियर में सबसे कठिन समस्या जिसे मैंने हल किया, वह eBay में मेरी वर्तमान पद पर काम करते समय हुई। वर्तमान में eBay में, जहाँ मैं Hitachi Vantara के माध्यम से अनुबंधित हूँ, मैं एक आंतरिक उपकरण जिसका नाम Storage Management System या STMS है, विकसित और रखरखाव करता हूँ। STMS eBay की Service & Storage Infrastructure (SSI) टीम द्वारा eBay के डेटा सेंटरों में उपकरणों की निगरानी और प्रबंधन के लिए उपयोग किया जाता है। STMS इंजीनियर को कई एरेज़, स्विचेज़, होस्ट्स, डिस्क ग्रुप्स, क्लस्टर्स और डेटाबेस की मीट्रिक्स की निगरानी करने की क्षमता प्रदान करता है। साथ ही स्विचेज़ और एरेज़ के लिए अलर्टिंग को संभालता है और इंजीनियर को होस्ट आवंटन जैसे उन्नत कार्य आसानी से पूरा करने देता है। STMS प्रति मिनट 1.5 मिलियन से अधिक मीट्रिक्स को इनजेस्ट करता है, जो eBay के डेटा सेंटरों में दर्जनों/सैकड़ों एरेज़, स्विचेज़, होस्ट्स, डिस्क ग्रुप्स और क्लस्टर्स को कवर करता है। यह SSI टीम के लिए eBay की स्टोरेज इन्फ्रास्ट्रक्चर की निगरानी और प्रबंधन के लिए एक महत्वपूर्ण उपकरण है, जो eBay की मुख्य सेवा और व्यवसाय मॉडल के लिए आवश्यक है। इन सबको जानते हुए, eBay में काम करते समय मुझे जिस सबसे कठिन समस्या को हल करना पड़ा, वह STMS को MongoDB डेटाबेस से Postgres डेटाबेस में माइग्रेट करना था।

2 - इसे कठिन क्या बनाता था

इस समस्या को कठिन बनाने वाला कारण यह था कि MongoDB और Postgres मूल रूप से अलग डेटाबेस हैं। MongoDB एक दस्तावेज़-आधारित डेटाबेस (NoSQL) है, जिसका अर्थ है डेटा को एक कलेक्शन में JSON के रूप में संग्रहीत किया जाता है (जैसे फाइलिंग कैबिनेट में दस्तावेज़), जबकि Postgres एक रिलेशनल डेटाबेस (SQL) है, जिसका अर्थ है डेटा को तालिका में पंक्तियों के रूप में संग्रहीत किया जाता है (जैसे स्प्रेडशीट में)। अतिरिक्त रूप से, STMS का पूरा बैकएंड डेटा को JSON के रूप में प्रोसेस और प्रबंधित करने के लिए बनाया गया था, और डेटाबेस ऑपरेशन्स के लिए केवल MongoDB के साथ संगत पैकेजों का उपयोग करता था। साथ ही, इस माइग्रेशन को करते समय, STMS की आंतरिक उपकरण के रूप में अत्यधिक महत्व के कारण कोई डाउनटाइम नहीं होना चाहिए था और लगभग सभी फीचर लगातार काम करते रहना चाहिए था। इस माइग्रेशन को पूरी तरह से कुछ महीनों के भीतर, बिना किसी डाउनटाइम के, और स्पष्ट कार्य योजना के बिना पूरा करना था। मेरे पास पहले से Postgres का अधिक अनुभव नहीं था और मेरे सभी सहयोगियों के साथ, हमारे पास NoSQL से SQL डेटाबेस में बड़े लेगेसी कोडबेस को माइग्रेट करने का कोई अनुभव नहीं था।

3 - आपने इस अनुभव से क्या सीखा

MongoDB से Postgres में STMS कोड माइग्रेशन को बिना किसी डाउनटाइम के सफलतापूर्वक पूरा किया गया, जबकि लगभग सभी फीचर और कार्यक्षमता को बनाए रखा गया। इसके लिए व्यापक शोध, सीखना, परीक्षण और समस्या निवारण की आवश्यकता थी। मैंने हमारे डेटा स्ट्रक्चर को रिलेशनल डेटाबेस के साथ अधिक प्रभावी ढंग से काम करने के लिए पुनः संरचित किया और नए पैकेज विकसित किए जो उन पैकेजों की जगह ले सकें जिनका Postgres के साथ एकीकरण नहीं था। कुल मिलाकर, माइग्रेशन सहजता से और बिना किसी वास्तविक त्रुटि के हुआ, जो मेरी अपेक्षाओं से अधिक था। इस प्रक्रिया के दौरान, मैंने बहुत कुछ सीखा। तकनीकी रूप से, मैंने Postgres, SQL, पार्स ट्रीज़, ORMs, Sequelize, Prisma, क्वेरी बिल्डर्स, समानता जांच, प्राइमरी-स्टैंडबाय डेटाबेस सेटअप, और डेटाबेस-संबंधित यूनिट टेस्टिंग की बेहतर समझ प्राप्त की। मूल रूप से, मैंने जटिल समस्या को छोटे भागों में अधिक प्रभावी ढंग से विभाजित करना और उन भागों के लिए प्रभावी समाधान लागू करना सीखा। अतिरिक्त रूप से, मैंने एक नेता कैसे बनना है और कई सीमाओं, बाधाओं और अज्ञातों का सामना करने के बावजूद इस प्रोजेक्ट को अंत तक ले जाना सीखा।

4 - परिणामस्वरूप आप कैसे विकसित हुए

मैंने अपनी स्नातक पढ़ाई के दौरान रोबोटिक्स में अपना करियर शुरू किया, लेकिन eBay में नौकरी मिलने पर वेब विकास की ओर रुख किया, एक ऐसे क्षेत्र में प्रवेश किया जहाँ मेरा कोई पूर्व अनुभव नहीं था। इस परिवर्तन ने निरंतर सीखने और अनुकूलनशीलता से परिभाषित करियर की नींव रखी। MongoDB से Postgres में STMS को माइग्रेट करने की चुनौती मेरे करियर में एक महत्वपूर्ण छलांग थी, जिसने मेरे पेशेवर विकास में अत्यधिक योगदान दिया। यह केवल डेटाबेस की समझ को गहरा करने या समस्या समाधान कौशल को बढ़ाने के बारे में नहीं था। इस प्रोजेक्ट ने मुझे नई क्षेत्र में धकेला, जिसमें सूक्ष्म योजना और बिना डाउनटाइम के प्रतिबद्धता की आवश्यकता थी। बड़े पैमाने पर डेटाबेस ट्रांज़िशन में पूर्व अनुभव के बिना माइग्रेशन का नेतृत्व करते हुए, मैंने स्पष्ट संचार, टीमवर्क, और जटिल चुनौतियों को प्रबंधनीय भागों में विभाजित करने का महत्व सीखा। इस अनुभव ने मेरे तकनीकी कौशल को विस्तारित किया और मेरे आत्मविश्वास को भी बढ़ाया, जिससे मैं अधिक महत्वाकांक्षी लक्ष्यों और प्रोजेक्ट्स की ओर अग्रसर हुआ। मेरे करियर में यह मील का पत्थर न केवल एक डेवलपर और नेता के रूप में मेरी वृद्धि को दर्शाता है, बल्कि एक समस्या समाधानकर्ता के रूप में भी, यह दिखाता है कि अज्ञात को अपनाना और सफल होना व्यक्तिगत और पेशेवर विकास की कुंजी है।

निष्कर्ष क्या है?

मेरे उत्तरों ने मुझे कंपनी की इंटरव्यू प्रक्रिया के दूसरे चरण में पहुंचाया, जिससे मुझे टीम के एक डेवलपर के साथ एक सुखद बातचीत करने का अवसर मिला, जो काफी अच्छा था। लेकिन मुख्य रूप से, इस असाइनमेंट ने मुझे eBay में अपने समय के दौरान अपने करियर में हल की गई सबसे चुनौतीपूर्ण तकनीकी समस्या पर विचार करने का अवसर दिया। इसने मुझे अपने विकास को एक डेवलपर/इंजीनियर के रूप में सोचने, नई कौशल विकसित करने, और जटिल समस्याओं को अनुकूलित करने और हल करने में अपने आत्मविश्वास को बढ़ाने में मदद की।