Kutoka MongoDB hadi Postgres
Hii Inahusu Nini?
Wakati wa kufanya usaili kwa nafasi katika kampuni, niliombewa kujibu swali lifuatalo: Je, unaweza kuelezea tatizo ngumu zaidi ulilolitatua? Kwa muhtasari, tatizo ngumu zaidi niliolitatua lilitokea nilipokuwa nikifanya kazi eBay, ambapo nilihamisha moja ya miradi kubwa ya ndani ya eBay kutoka kutumia MongoDB hadi Postgres mwaka 2023. Hata hivyo, swali hili lilinifanya nifikirie kwa kina jinsi nilivyotatua tatizo hili ngumu na kuniruhusu kutafakari juu ya safari yangu kama msanidi. Kwa sababu hiyo, niliandika jibu la kina sana kwa swali hilo, na nilitaka kushiriki jibu langu kwenye tovuti yangu.
Swali Lilikuwa Nini?
Je, unaweza kuelezea tatizo ngumu zaidi ulilolitatua? Tafadhali jibu kwa chini ya aya 4 na utueleze:
- Ulifanya nini
- Nini kilifanya iwe ngumu
- Ulijifunza nini kutokana na uzoefu huu
- Ulikua vipi kama matokeo
Jibu Langu Lilikuwa Nini?
1 - Ulifanya nini
Sasa hivi, katika kazi yangu, tatizo ngumu zaidi niliolitatua lilitokea nilipokuwa nikifanya kazi katika nafasi yangu ya sasa eBay. Kwa sasa eBay, ambapo nina mkataba kupitia Hitachi Vantara, ninaendeleza na kudumisha chombo cha ndani kinachoitwa Mfumo wa Usimamizi wa Uhifadhi au STMS. STMS ni zana inayotumiwa na timu ya Huduma na Miundombinu ya Uhifadhi (SSI) ya eBay kufuatilia na kusimamia vifaa katika vituo vya data vya eBay. STMS inaruhusu mhandisi kufuatilia vipimo vya mfululizo, swichi, mwenyeji, vikundi vya diski, makundi, na hifadhidata nyingi. Pia hushughulikia utoaji wa tahadhari kwa swichi na mfululizo na kumruhusu mhandisi kwa urahisi kukamilisha kazi za juu kama ugawaji wa mwenyeji. STMS huingiza zaidi ya vipimo milioni 1.5 kwa dakika, ikihusisha zaidi ya makumi/mia ya mfululizo, swichi, mwenyeji, vikundi vya diski, na makundi katika vituo vya data vya eBay. Inahudumia kama chombo muhimu kwa timu ya SSI kufuatilia na kusimamia miundombinu ya uhifadhi ya eBay, ambayo ni muhimu kwa huduma msingi na mtindo wa biashara wa eBay. Kutokana na yote haya, tatizo ngumu kabisa nililopaswa kulitatua wakati wangu eBay lilikuwa kuhamisha STMS kutoka kutumia hifadhidata ya MongoDB kwenda kutumia hifadhidata ya Postgres.
2 - Nini kilifanya iwe ngumu
Kilichofanya tatizo hili kuwa ngumu ni kwamba MongoDB na Postgres ni hifadhidata tofauti kabisa kihususan. MongoDB ni hifadhidata inayotegemea hati (NoSQL), yaani data huhifadhiwa kama JSON katika mkusanyiko (kama hati katika kabati la nyaraka), na Postgres ni hifadhidata ya uhusiano (SQL), yaani data huhifadhiwa kama safu katika jedwali (kama katika lahajedwali). Zaidi ya hayo, sehemu zote za nyuma za STMS zilijengwa kusindika na kusimamia data kama JSON, zikitumia vifurushi vinavyofaa kwa MongoDB pekee kwa shughuli za hifadhidata. Pia, wakati wa utekelezaji wa uhamisho huu, hakukuwepo na nafasi ya muda wa kusimamika na karibu vipengele vyote vilipaswa kuendelea kufanya kazi kutokana na umuhimu wa STMS kama zana ya ndani. Uhamisho huu kwa ujumla ulipaswa kukamilika ndani ya miezi michache, bila muda wa kusimamika, na bila mpango wazi wa utekelezaji. Pia sikuwa na uzoefu mwingi wa Postgres kabla ya hapo na, pamoja na wenzangu wote, hatukuwa na uzoefu wowote wa kuhamisha msingi mkubwa wa msimbo wa urithi kutoka hifadhidata ya NoSQL kwenda SQL.
3 - Ulijifunza nini kutokana na uzoefu huu
Uhamisho wa msimbo wa STMS kutoka MongoDB hadi Postgres ulikamilika kwa mafanikio bila muda wa kusimamika huku ukidumisha karibu vipengele vyote na utendakazi. Hili lilihitaji utafiti wa kina, kujifunza, upimaji, na utatuzi wa matatizo. Nilibadilisha muundo wa data yetu ili ufanye kazi kwa ufanisi zaidi na hifadhidata za uhusiano na kuendeleza vifurushi vipya kubadilisha vile tulivyokuwa tunategemea ambavyo havikujumuika na Postgres. Kwa ujumla, uhamishaji ulifanyika bila mshono na bila kasoro za kweli, jambo ambalo lilizidi matarajio yangu. Katika mchakato huu, nilijifunza mengi. Kwa kiufundi, nilipata uelewa bora wa Postgres, SQL, miti za uchambuzi, ORMs, Sequelize, Prisma, wajenzi wa maswali, ukaguzi wa uwiano, mpangilio wa hifadhidata wa msingi-na-kusubiri, na upimaji wa vitengo vinavyohusiana na hifadhidata. Kwa msingi, nilijifunza jinsi ya kuvunja tatizo tata kuwa sehemu ndogo ndogo na kutekeleza suluhisho madhubuti kwa sehemu hizo. Zaidi ya hayo, nilijifunza jinsi ya kuwa kiongozi na kuongoza mradi huu hadi hitimisho licha ya kukumbana na vizingiti vingi, nyuma ya hatua, na mambo yasiyojulikana.
4 - Ulikua vipi kama matokeo
Nilianza kazi yangu katika robotiki wakati wa shahada yangu ya kwanza lakini nikahamia maendeleo ya wavuti nilipopata kazi eBay, nikichukua njia ya taaluma ambayo sikuwa nayo uzoefu hapo awali. Mabadiliko haya yaliweka msingi wa kazi iliyofafanuliwa na kujifunza endelevu na uwezo wa kubadilika. Changamoto ya kuhamisha STMS kutoka MongoDB hadi Postgres ilikuwa hatua kubwa katika kazi yangu, ikichangia kwa kiasi kikubwa ukuaji wangu wa kitaaluma. Haikuhusu tu kuimarisha uelewa wangu wa hifadhidata au kuboresha ujuzi wangu wa kutatua matatizo. Mradi huu ulinibidi niingie katika eneo jipya, ukidai mipango ya makini na ahadi ya kutokuwepo kwa muda wa kusimamika. Nikiongoza uhamisho huo bila uzoefu wa awali katika mabadiliko makubwa ya hifadhidata, nilijifunza thamani ya mawasiliano wazi, kazi ya pamoja, na kuvunja changamoto tata kuwa sehemu zinazoweza kudhibitiwa. Uzoefu huu ulipanua ujuzi wangu wa kiufundi na pia uliinua ujiamini wangu, ukinielekeza zaidi kwa malengo na miradi yenye shauku kubwa. Tukio hili katika kazi yangu halikuwa tu kuonyesha ukuaji wangu kama msanidi na kiongozi bali pia kama mtatua wa matatizo, kuonyesha kwamba kukumbatia yasiyojulikana na kufanikiwa ni muhimu kwa maendeleo binafsi na kitaaluma.
Hitimisho Ni Nini?
Majibu yangu yalinileta katika hatua ya pili ya mchakato wa usaili katika kampuni, kuniruhusu kuwa na mazungumzo mazuri na mmoja wa waendelezaji kutoka timu, ambayo ilikuwa nzuri sana. Lakini, zaidi ya yote, kazi hii iliniruhusu kutafakari juu ya tatizo ngumu zaidi la kiufundi niliolitatua katika kazi yangu wakati nilipokuwa eBay. Iliniongoza kufikiria kuhusu ukuaji wangu kama msanidi/mhandisi, kukuza ujuzi mpya, na kuongeza ujiamini wangu katika kuzoea na kutatua matatizo tata.