MongoDB naar Postgres

Waar Gaat Dit Over?

Terwijl ik solliciteerde voor een functie bij een bedrijf, werd mij gevraagd de volgende vraag te beantwoorden: Kunt u alstublieft het moeilijkste probleem beschrijven dat u hebt opgelost? Samenvattend deed het moeilijkste probleem dat ik oploste zich voor terwijl ik bij eBay werkte, waar ik in 2023 een van eBay’s grote interne projecten migreerde van het gebruik van MongoDB naar Postgres. Deze vraag zette me echter echt aan het denken over hoe ik dit moeilijke probleem heb opgelost en liet me reflecteren op mijn ontwikkeltraject. Daarom schreef ik een zeer gedetailleerd en grondig antwoord op die vraag, en ik wilde mijn antwoord op mijn website delen.

Wat Was De Vraag?

Kunt u alstublieft het moeilijkste probleem beschrijven dat u hebt opgelost? Beantwoord dit alstublieft in minder dan 4 alinea’s en laat ons weten:

  1. Wat u hebt gedaan
  2. Wat het moeilijk maakte
  3. Wat u van deze ervaring hebt geleerd
  4. Hoe u als resultaat bent gegroeid

Wat Was Mijn Antwoord?

1 - Wat u hebt gedaan

Op dit moment in mijn carrière deed het moeilijkste probleem dat ik heb opgelost zich voor terwijl ik werkte bij mijn huidige functie bij eBay. Momenteel bij eBay, waar ik via Hitachi Vantara gedetacheerd ben, ontwikkel en onderhoud ik een interne tool genaamd Storage Management System of STMS. STMS is een tool die door eBay’s Service & Storage Infrastructure (SSI)-team wordt gebruikt om apparaten in eBay’s datacenters te monitoren en te beheren. STMS biedt een engineer de mogelijkheid om de metrics van talrijke arrays, switches, hosts, diskgroepen, clusters en databases te monitoren. Daarnaast kan het alerting voor switches en arrays afhandelen en kan een engineer eenvoudig geavanceerde taken zoals hosttoewijzingen uitvoeren. STMS verwerkt meer dan 1,5 miljoen metrics per minuut, wat neerkomt op tientallen/honderden arrays, switches, hosts, diskgroepen en clusters verspreid over eBay’s datacenters. Het dient als een cruciale tool voor het SSI-team om eBay’s opslaginfrastructuur te monitoren en te beheren, wat van vitaal belang is voor eBay’s kernservice en bedrijfsmodel. Met dit alles in gedachten was het moeilijkste probleem dat ik moest oplossen tijdens mijn tijd bij eBay het migreren van STMS van het gebruik van de MongoDB-database naar het gebruik van de Postgres-database.

2 - Wat het moeilijk maakte

Wat dit probleem moeilijk maakte, was dat MongoDB en Postgres fundamenteel verschillende databases zijn. MongoDB is een documentgebaseerde database (NoSQL), wat betekent dat data als JSON wordt opgeslagen in een collectie (zoals documenten in een archiefkast), en Postgres is een relationele database (SQL), wat betekent dat data als rijen in een tabel wordt opgeslagen (zoals in een spreadsheet). Daarnaast was de volledige backend van STMS gebouwd om data als JSON’s te verwerken en te beheren, met pakketten die uitsluitend compatibel waren met MongoDB voor databasebewerkingen. Ook moest er, tijdens deze migratie, geen downtime zijn en moesten vrijwel alle functies blijven werken vanwege hoe vitaal STMS is als interne tool. Deze migratie in zijn geheel moest binnen een paar maanden worden voltooid, zonder downtime, en zonder duidelijk plan voor de uitvoering ervan. Ik had ook vooraf niet al te veel ervaring met Postgres en had, samen met al mijn collega’s, geen ervaring met het migreren van een grote legacy codebase van een NoSQL- naar een SQL-database.

3 - Wat u van deze ervaring hebt geleerd

De code-migratie van STMS van MongoDB naar Postgres werd met succes voltooid zonder downtime en met behoud van vrijwel alle functies en functionaliteit. Dit vereiste uitgebreid onderzoek, leren, testen en het oplossen van problemen. Ik heb onze datastructuren heringericht om effectiever te werken met relationele databases en nieuwe pakketten ontwikkeld ter vervanging van de pakketten waarvan we afhankelijk waren en die niet met Postgres integreerden. Over het geheel genomen verliep de migratie soepel en zonder echte gebreken, wat mijn verwachtingen overtrof. Tijdens dit proces heb ik veel geleerd. Technisch gezien heb ik een beter begrip gekregen van Postgres, SQL, parse trees, ORM’s, Sequelize, Prisma, query builders, equivalentiecontrole, primary-standby database-opzet en database-gerelateerde unit testing. Fundamenteel heb ik geleerd hoe ik een complex probleem effectiever kan opdelen in kleinere onderdelen en voor die onderdelen effectieve oplossingen kan implementeren. Daarnaast heb ik geleerd hoe ik een leider kan zijn en dit project naar een goed einde kan brengen ondanks vele beperkingen, tegenslagen en onbekenden.

4 - Hoe u als resultaat bent gegroeid

Ik begon mijn carrière in de robotica tijdens mijn bacheloropleiding, maar verschoof naar webontwikkeling toen ik de baan bij eBay kreeg, en kwam zo in een vakgebied terecht waarin ik geen eerdere ervaring had. Deze overgang legde de basis voor een carrière die wordt gekenmerkt door voortdurend leren en aanpassingsvermogen. De uitdaging om STMS van MongoDB naar Postgres te migreren was een aanzienlijke sprong in mijn carrière en droeg enorm bij aan mijn professionele groei. Het ging niet alleen om het verdiepen van mijn begrip van databases of het verbeteren van mijn probleemoplossende vaardigheden. Dit project duwde me in nieuw terrein en vereiste nauwgezette planning en een toewijding aan geen downtime. Door de migratie te leiden zonder eerdere ervaring met grootschalige databasemigraties, leerde ik de waarde van duidelijke communicatie, teamwork en het opdelen van complexe uitdagingen in beheersbare onderdelen. Deze ervaring breidde mijn technische vaardigheden uit en vergrootte ook mijn zelfvertrouwen, waardoor ik meer richting ambitieuzere doelen en projecten ging. Deze mijlpaal in mijn carrière toonde niet alleen mijn groei als ontwikkelaar en leider aan, maar ook als probleemoplosser, en liet zien dat het omarmen van het onbekende en daarin slagen essentieel is voor persoonlijke en professionele ontwikkeling.

Wat Is De Conclusie?

Mijn antwoorden brachten me naar de tweede fase van het sollicitatieproces bij het bedrijf, waardoor ik een prettig gesprek kon hebben met een van de ontwikkelaars van het team, wat erg leuk was. Maar vooral stelde deze opdracht me in staat om na te denken over het meest uitdagende technische probleem dat ik in mijn carrière heb opgelost tijdens mijn tijd bij eBay. Het maakte het mogelijk om na te denken over mijn groei als ontwikkelaar/engineer, nieuwe vaardigheden te ontwikkelen en mijn zelfvertrouwen te vergroten in het aanpassen aan en oplossen van complexe problemen.