MongoDB पासून Postgres कडे

हे कशाबद्दल आहे?

एका कंपनीतील पदासाठी मुलाखत देत असताना, मला पुढील प्रश्नाचे उत्तर देण्यास सांगितले गेले: तुम्ही सोडवलेल्या सर्वात कठीण समस्येचे कृपया वर्णन करू शकता का? थोडक्यात सांगायचे झाल्यास, मी सोडवलेली सर्वात कठीण समस्या eBay येथे काम करत असताना आली, जिथे 2023 मध्ये मी 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 मुळे अभियंत्याला अनेक arrays, switches, hosts, disk groups, clusters आणि databases यांच्या मेट्रिक्सचे निरीक्षण करता येते. तसेच switches आणि arrays साठी alerts हाताळता येतात आणि host allocations सारखी प्रगत कार्ये अभियंत्याला सहजपणे पूर्ण करता येतात. STMS दर मिनिटाला 1.5 दशलक्षांहून अधिक मेट्रिक्स घेतो, ज्यामध्ये eBay च्या डेटा केंद्रांमधील डझनावारी/शेकडो arrays, switches, hosts, disk groups आणि clusters यांचा समावेश होतो. eBay च्या storage infrastructure चे निरीक्षण आणि व्यवस्थापन करण्यासाठी हे SSI संघाचे एक अत्यावश्यक साधन म्हणून काम करते, जे eBay च्या मुख्य सेवा आणि व्यवसाय मॉडेलसाठी अत्यंत महत्त्वाचे आहे. या सर्व गोष्टी लक्षात घेता, eBay येथे काम करत असताना मला सोडवावी लागलेली सर्वात कठीण समस्या म्हणजे STMS चे MongoDB database वापरण्यापासून Postgres database वापरण्याकडे स्थलांतर करणे.

2 - ते कठीण कशामुळे झाले

ही समस्या कठीण होण्याचे कारण म्हणजे MongoDB आणि Postgres हे मूलभूततः वेगवेगळे databases आहेत. MongoDB हे document-based database (NoSQL) आहे, म्हणजे data हे collection मध्ये JSON स्वरूपात साठवले जाते (जसे filing cabinet मधील documents), तर Postgres हे relational database (SQL) आहे, म्हणजे data हे table मधील rows मध्ये साठवले जाते (जसे spreadsheet मध्ये). याव्यतिरिक्त, STMS चा संपूर्ण backend JSONs म्हणून data चे processing आणि management करण्यासाठी तयार केला होता आणि database operations साठी केवळ MongoDB शी सुसंगत packages वापरले जात होते. तसेच, हे migration करत असताना कोणताही downtime असता कामा नये आणि STMS हे अंतर्गत साधन म्हणून अत्यंत महत्त्वाचे असल्यामुळे जवळजवळ सर्व features कार्यरत राहणे आवश्यक होते. हे migration पूर्णपणे काही महिन्यांच्या आत पूर्ण करणे आवश्यक होते, कोणताही downtime न ठेवता आणि त्याच्या अंमलबजावणीसाठी कोणतीही स्पष्ट योजना नसताना. यापूर्वी मला Postgres चा फारसा अनुभव नव्हता आणि माझ्या सर्व सहकाऱ्यांप्रमाणेच, मोठ्या legacy codebase चे NoSQL वरून SQL database कडे migration करण्याचा कोणताही अनुभव नव्हता.

3 - या अनुभवातून तुम्ही काय शिकलात

MongoDB वरून Postgres कडे STMS code migration कोणताही downtime न ठेवता आणि जवळजवळ सर्व features आणि functionality कायम ठेवून यशस्वीपणे पूर्ण झाले. यासाठी व्यापक research, learning, testing आणि troubleshooting आवश्यक होते. Relational databases सोबत अधिक प्रभावीपणे काम करण्यासाठी मी आमच्या data structures ची पुनर्रचना केली आणि Postgres सोबत integrate न होणाऱ्या, ज्यांच्यावर आम्ही अवलंबून होतो, अशा packages च्या जागी नवीन packages विकसित केली. एकूणच, migration कोणत्याही वास्तविक त्रुटींशिवाय आणि अत्यंत सुरळीतपणे पार पडले, ज्यामुळे माझ्या अपेक्षांपेक्षाही चांगले परिणाम मिळाले. या संपूर्ण प्रक्रियेदरम्यान मी खूप काही शिकलो. तांत्रिकदृष्ट्या, मला Postgres, SQL, parse trees, ORMs, Sequelize, Prisma, query builders, equivalence checking, primary-standby database setup आणि database-related unit testing यांची अधिक चांगली समज मिळाली. मूलभूत पातळीवर, गुंतागुंतीच्या समस्येचे छोट्या भागांमध्ये अधिक प्रभावीपणे विभाजन कसे करायचे आणि त्या भागांसाठी प्रभावी उपाय कसे अंमलात आणायचे हे मी शिकलो. याव्यतिरिक्त, अनेक मर्यादा, अडथळे आणि अज्ञात बाबींचा सामना करूनही नेता कसे व्हायचे आणि या प्रकल्पाचे शेवटपर्यंत नेतृत्व कसे करायचे हे मी शिकलो.

4 - त्याचा परिणाम म्हणून तुमच्यात कशी प्रगती झाली

मी माझ्या पदवीपूर्व शिक्षणादरम्यान robotics मध्ये माझी कारकीर्द सुरू केली, परंतु eBay येथे नोकरी मिळाल्यावर web development कडे वळलो आणि यापूर्वी कोणताही अनुभव नसलेल्या क्षेत्रात प्रवेश केला. या संक्रमणाने सतत शिकणे आणि बदलांशी जुळवून घेणे यांवर आधारित कारकीर्दीचा पाया घातला. STMS चे MongoDB वरून Postgres कडे स्थलांतर करण्याचे आव्हान माझ्या कारकिर्दीतील एक महत्त्वपूर्ण झेप होती आणि त्यामुळे माझ्या व्यावसायिक प्रगतीत मोठे योगदान मिळाले. हे केवळ databases विषयीची माझी समज अधिक सखोल करण्याबद्दल किंवा समस्या सोडवण्याची माझी कौशल्ये वाढवण्याबद्दल नव्हते. या प्रकल्पाने मला एका नव्या क्षेत्रात ढकलले आणि त्यासाठी काटेकोर planning तसेच कोणताही downtime न ठेवण्याची बांधिलकी आवश्यक होती. मोठ्या प्रमाणातील database transitions चा पूर्वानुभव नसतानाही या migration चे नेतृत्व करताना, स्पष्ट communication, teamwork आणि गुंतागुंतीच्या आव्हानांचे व्यवस्थापनीय भागांमध्ये विभाजन यांचे महत्त्व मला समजले. या अनुभवामुळे माझी तांत्रिक कौशल्ये विस्तारली आणि माझा आत्मविश्वासही वाढला, ज्यामुळे अधिक महत्त्वाकांक्षी उद्दिष्टे आणि प्रकल्पांकडे वाटचाल करण्याची तयारी झाली. माझ्या कारकिर्दीतील या महत्त्वाच्या टप्प्याने विकासक आणि नेता म्हणूनच नव्हे, तर समस्या सोडवणारा म्हणूनही माझी प्रगती दर्शवली; अज्ञात गोष्टींचा स्वीकार करून त्यात यशस्वी होणे हे वैयक्तिक आणि व्यावसायिक विकासासाठी महत्त्वाचे आहे हे त्यातून दिसून आले.

निष्कर्ष काय आहे?

माझ्या उत्तरांमुळे मला त्या कंपनीतील मुलाखत प्रक्रियेच्या दुसऱ्या टप्प्यावर जाता आले. त्यामुळे मला संघातील एका विकासकाशी आनंददायी संवाद साधण्याची संधी मिळाली, जी खरोखरच छान होती. परंतु मुख्यतः, या assignment मुळे eBay येथे काम करत असताना मी माझ्या कारकिर्दीत सोडवलेल्या सर्वात आव्हानात्मक तांत्रिक समस्येचा विचार करता आला. विकासक/अभियंता म्हणून माझी झालेली प्रगती समजून घेणे, नवीन कौशल्ये विकसित करणे आणि गुंतागुंतीच्या समस्या स्वीकारून त्या सोडवण्याच्या माझ्या क्षमतेवरील आत्मविश्वास वाढवणे यासाठी त्याने मला मदत केली.