Mula MongoDB papuntang Postgres
Ano Ang Tungkol Dito?
Habang nag-iinterbyu para sa isang posisyon sa isang kumpanya, tinanong ako na sagutin ang sumusunod na tanong: Maaari mo bang ilarawan ang pinakamahirap na problema na naisolve mo? Sa buod, ang pinakamahirap na problemang naisolve ko ay nangyari habang ako ay nagtatrabaho sa eBay, kung saan inilipat ko ang isa sa malalaking internal na proyekto ng eBay mula sa paggamit ng MongoDB patungo sa Postgres sa taong 2023. Gayunpaman, pinilit ako ng tanong na ito na pag-isipan kung paano ko nilutas ang mahirap na problemang ito at pinayagan akong magnilay sa aking paglalakbay bilang developer. Dahil dito, sumulat ako ng napakadetalyado at masusing sagot sa tanong na iyon, at nais kong ibahagi ang aking sagot sa aking website.
Ano Ang Tanong?
Maaari mo bang ilarawan ang pinakamahirap na problema na naisolve mo? Mangyaring sumagot nang mas mababa sa 4 talata at ipaalam sa amin:
- Ano ang ginawa mo
- Ano ang nagpahirap nito
- Ano ang natutunan mo mula sa karanasang ito
- Paano ka lumago bilang resulta
Ano Ang Aking Sagot?
1 - Ano ang ginawa mo
Sa kasalukuyan, sa aking karera, ang pinakamahirap na problemang naisolve ko ay nangyari habang nagtatrabaho ako sa aking kasalukuyang posisyon sa eBay. Sa eBay ngayon, kung saan ako ay nakakontrata sa pamamagitan ng Hitachi Vantara, ako ay nagde-develop at nagpapanatili ng isang internal na tool na tinatawag na Storage Management System o STMS. Ang STMS ay isang tool na ginagamit ng Service & Storage Infrastructure (SSI) team ng eBay para subaybayan at pamahalaan ang mga device sa buong data center ng eBay. Pinapahintulutan ng STMS ang isang engineer na subaybayan ang mga metric ng maraming mga array, switch, host, disk group, cluster, at database. Gayundin, hinahawakan nito ang pag-aalerto para sa mga switch at array at madaling pinapayagan ang isang engineer na magawa ang mga advanced na gawain tulad ng pag-aallocate ng host. Sumisipsip ang STMS ng mahigit 1.5 milyon na metric kada minuto, na sumasaklaw sa dose-dosenang/daang mga array, switch, host, disk group, at cluster sa buong data center ng eBay. Nagsisilbi ito bilang isang kritikal na tool para sa team ng SSI upang subaybayan at pamahalaan ang storage infrastructure ng eBay, na mahalaga para sa pangunahing serbisyo at modelo ng negosyo ng eBay. Batay sa lahat ng ito, ang pinakamahirap na problemang kinailangan kong lutasin habang ako ay nasa eBay ay ang pagmamigrate ng STMS mula sa paggamit ng MongoDB database papunta sa paggamit ng Postgres database.
2 - Ano ang nagpahirap nito
Ang nagpahirap sa problemang ito ay ang MongoDB at Postgres ay pangunahing magkaibang uri ng database. Ang MongoDB ay isang document-based na database (NoSQL), ibig sabihin ang data ay nakaimbak bilang JSON sa isang koleksyon (tulad ng mga dokumento sa isang kabinet ng mga papeles), at ang Postgres ay isang relational na database (SQL), ibig sabihin ang data ay nakaimbak bilang mga hilera sa isang talahanayan (tulad ng sa isang spreadsheet). Bukod pa rito, ang buong backend ng STMS ay itinayo upang iproseso at pamahalaan ang data bilang mga JSON, gamit ang mga package na eksklusibong compatible sa MongoDB para sa mga operasyon ng database. Gayundin, habang ginagawa ang migration na ito, hindi dapat magkaroon ng downtime at halos lahat ng mga tampok ay dapat magpatuloy na gumana dahil sa kung gaano kahalaga ang STMS bilang isang internal na tool. Ang migrasyon na ito sa kabuuan ay kailangang matapos sa loob ng ilang buwan, nang walang downtime, at walang malinaw na plano para sa pagsasagawa nito. Wala rin akong masyadong karanasan sa Postgres dati at, kasama ng lahat ng aking mga kasamahan, wala ring karanasan sa pagmamigrate ng isang malaking legacy codebase mula sa NoSQL patungo sa SQL database.
3 - Ano ang natutunan mo mula sa karanasang ito
Ang pagmamigrate ng code ng STMS mula MongoDB papuntang Postgres ay matagumpay na natapos nang walang downtime habang pinapanatili ang halos lahat ng mga tampok at functionality. Nangailangan ito ng malawakang pananaliksik, pag-aaral, pagsubok, at pag-troubleshoot. Inayos ko muli ang aming mga estruktura ng data upang gumana nang mas epektibo sa mga relational na database at gumawa ng mga bagong package upang palitan ang mga pinagkakautangan namin na hindi nag-iintegrate sa Postgres. Sa kabuuan, ang migrasyon ay naganap nang walang putol at walang anumang tunay na pagkukulang na lampas sa aking inaasahan. Sa buong prosesong ito, marami akong natutunan. Teknikal, nagkaroon ako ng mas malalim na pang-unawa sa Postgres, SQL, parse trees, ORMs, Sequelize, Prisma, query builders, equivalence checking, primary-standby na pagsasaayos ng database, at mga unit test na may kinalaman sa database. Sa pundamental na antas, natutunan kong mas epektibong hatiin ang isang kumplikadong problema sa mas maliliit na bahagi at magpatupad ng epektibong mga solusyon para sa mga bahaging iyon. Bukod dito, natutunan kong maging isang lider at pangunahan ang proyektong ito hanggang sa konklusyon nito sa kabila ng pagharap sa maraming limitasyon, pagkabigo, at mga hindi alam.
4 - Paano ka lumago bilang resulta
Sinimulan ko ang aking karera sa robotics noong ako ay nag-aaral sa kolehiyo ngunit lumihis patungo sa web development nang makakuha ako ng trabaho sa eBay, pumasok sa isang larangan kung saan wala akong naunang karanasan. Inilatag ng transisyong ito ang pundasyon para sa isang karera na tinutukoy ng tuloy-tuloy na pagkatuto at kakayahang umangkop. Ang hamon ng pagmamigrate ng STMS mula MongoDB patungong Postgres ay isang malaking hakbang sa aking karera, na malaki ang naiambag sa aking propesyonal na paglago. Hindi lamang ito tungkol sa paglalim ng aking pag-unawa sa mga database o pagpapahusay ng aking mga kasanayan sa paglutas ng problema. Itinulak ako ng proyektong ito sa bagong teritoryo, na humihiling ng masusing pagpaplano at pangako na walang downtime. Sa pamumuno ng migrasyon nang walang naunang karanasan sa malakihang mga paglipat ng database, natutunan ko ang kahalagahan ng malinaw na komunikasyon, pagtutulungan, at paghahati-hati ng mga kumplikadong hamon sa mas mapamamahalaang bahagi. Pinalawak ng karanasang ito ang aking mga teknikal na kasanayan at pinalakas din ang aking kumpiyansa, na naghahanda sa akin para sa mas ambisyosong mga layunin at proyekto. Ang milestone na ito sa aking karera ay hindi lamang nagpakita ng aking paglago bilang developer at lider kundi pati na rin bilang isang tagalutas ng problema, na nagpapakita na ang pagtanggap sa hindi alam at pagtagumpay ay susi sa personal at propesyonal na pag-unlad.
Ano Ang Konklusyon?
Ang aking mga sagot ay nagdala sa akin sa ikalawang yugto ng proseso ng interbyu sa kumpanya, na nagbigay-daan sa akin na magkaroon ng isang maganda at kasiya-siyang pag-uusap sa isa sa mga developer mula sa team, na medyo maganda. Ngunit, pangunahing pinayagan ako ng takdang-araling ito na magnilay sa pinakamahirap na teknikal na problema na naisolve ko sa aking karera habang nasa eBay. Pinayagan akong isipin ang aking paglago bilang developer/engineer, bumuo ng mga bagong kasanayan, at pag-igihin ang aking kumpiyansa sa pag-aangkop at paglutas ng mga kumplikadong problema.