MongoDB zu Postgres

Worum Geht Es Hier?

Während eines Vorstellungsgesprächs für eine Position in einem Unternehmen wurde ich gebeten, die folgende Frage zu beantworten: Können Sie bitte das schwierigste Problem beschreiben, das Sie gelöst haben? Zusammenfassend war das schwierigste Problem, das ich gelöst habe, während ich bei eBay arbeitete, wo ich eines der großen internen Projekte von eBay im Jahr 2023 von MongoDB zu Postgres migrierte. Diese Frage brachte mich wirklich zum Nachdenken darüber, wie ich dieses schwierige Problem gelöst habe, und erlaubte mir, über meinen Werdegang als Entwickler nachzudenken. Aus diesem Grund schrieb ich eine sehr detaillierte und gründliche Antwort auf diese Frage und wollte meine Antwort auf meiner Website teilen.

Was War Die Frage?

Können Sie bitte das schwierigste Problem beschreiben, das Sie gelöst haben? Bitte antworten Sie mit weniger als 4 Absätzen und lassen Sie uns wissen:

  1. Was Sie getan haben
  2. Was es schwierig machte
  3. Was Sie aus dieser Erfahrung gelernt haben
  4. Wie Sie dadurch gewachsen sind

Was War Meine Antwort?

1 - Was Sie getan haben

Derzeit, in meiner Karriere, trat das schwierigste Problem auf, das ich während meiner aktuellen Position bei eBay gelöst habe. Derzeit bei eBay, wo ich über Hitachi Vantara angestellt bin, entwickle und pflege ich ein internes Tool namens Storage Management System oder STMS. STMS ist ein Tool, das vom Service- und Storage-Infrastrukturteam (SSI) von eBay verwendet wird, um Geräte in den Rechenzentren von eBay zu überwachen und zu verwalten. STMS ermöglicht es einem Ingenieur, die Metriken zahlreicher Arrays, Switches, Hosts, Diskgruppen, Cluster und Datenbanken zu überwachen. Außerdem kann es Alarme für Switches und Arrays verwalten und einem Ingenieur leicht ermöglichen, fortgeschrittene Aufgaben wie Host-Zuweisungen durchzuführen. STMS verarbeitet über 1,5 Millionen Metriken pro Minute und berücksichtigt dabei Dutzende/Hunderte von Arrays, Switches, Hosts, Diskgruppen und Clustern in den Rechenzentren von eBay. Es dient als kritisches Tool für das SSI-Team, um die Speicherinfrastruktur von eBay zu überwachen und zu verwalten, die für den Kernservice und das Geschäftsmodell von eBay von entscheidender Bedeutung ist. Angesichts all dessen war das schwierigste Problem, das ich während meiner Zeit bei eBay lösen musste, die Migration von STMS von der Verwendung der MongoDB-Datenbank zur Verwendung der Postgres-Datenbank.

2 - Was es schwierig machte

Was dieses Problem schwierig machte, war, dass MongoDB und Postgres grundlegend unterschiedliche Datenbanken sind. MongoDB ist eine dokumentenbasierte Datenbank (NoSQL), was bedeutet, dass Daten als JSON in einer Sammlung gespeichert werden (wie Dokumente in einem Aktenschrank), und Postgres ist eine relationale Datenbank (SQL), was bedeutet, dass Daten als Zeilen in einer Tabelle gespeichert werden (wie in einer Tabelle). Darüber hinaus wurde das gesamte Backend von STMS entwickelt, um Daten als JSON zu verarbeiten und zu verwalten, wobei Pakete verwendet wurden, die ausschließlich mit MongoDB für Datenbankoperationen kompatibel sind. Außerdem musste bei dieser Migration eine Ausfallzeit vermieden werden, und nahezu alle Funktionen mussten weiterhin funktionieren, da STMS als internes Tool von entscheidender Bedeutung ist. Diese Migration musste in ihrer Gesamtheit innerhalb weniger Monate abgeschlossen werden, ohne Ausfallzeiten und ohne einen klaren Plan für die Durchführung. Ich hatte auch nicht viel Erfahrung mit Postgres zuvor und hatte zusammen mit all meinen Kollegen keine Erfahrung in der Migration eines großen Legacy-Codebases von einer NoSQL- zu einer SQL-Datenbank.

3 - Was Sie aus dieser Erfahrung gelernt haben

Die STMS-Code-Migration von MongoDB zu Postgres wurde erfolgreich ohne Ausfallzeiten abgeschlossen, während nahezu alle Funktionen und Merkmale erhalten blieben. Dies erforderte umfangreiche Recherchen, Lernen, Testen und Fehlersuche. Ich habe unsere Datenstrukturen umstrukturiert, um effektiver mit relationalen Datenbanken zu arbeiten, und neue Pakete entwickelt, um die zu ersetzen, von denen wir abhingen und die nicht mit Postgres integriert waren. Insgesamt verlief die Migration nahtlos und ohne echte Mängel, was meine Erwartungen übertraf. Während dieses Prozesses habe ich viel gelernt. Technisch habe ich ein besseres Verständnis von Postgres, SQL, Parse-Bäumen, ORMs, Sequelize, Prisma, Abfrage-Buildern, Äquivalenzprüfungen, primär-standby Datenbank-Setup und datenbankbezogenem Unit-Testing erworben. Grundlegend habe ich gelernt, wie man ein komplexes Problem effektiver in kleinere Teile zerlegt und effektive Lösungen für diese Teile implementiert. Darüber hinaus habe ich gelernt, wie man ein Führer ist und dieses Projekt trotz vieler Einschränkungen, Rückschläge und Unbekannten zu seinem Abschluss führt.

4 - Wie Sie dadurch gewachsen sind

Ich begann meine Karriere in der Robotik während meines Studiums, wechselte jedoch zur Webentwicklung, als ich den Job bei eBay bekam, und trat in ein Feld ein, in dem ich keine vorherige Erfahrung hatte. Dieser Übergang legte den Grundstein für eine Karriere, die durch ständiges Lernen und Anpassungsfähigkeit geprägt ist. Die Herausforderung, STMS von MongoDB zu Postgres zu migrieren, war ein bedeutender Sprung in meiner Karriere und trug immens zu meinem beruflichen Wachstum bei. Es ging nicht nur darum, mein Verständnis von Datenbanken zu vertiefen oder meine Problemlösungsfähigkeiten zu verbessern. Dieses Projekt drängte mich in neues Terrain, das sorgfältige Planung und ein Engagement für keine Ausfallzeiten erforderte. Die Migration ohne vorherige Erfahrung in großangelegten Datenbankübergängen zu leiten, lehrte mich den Wert klarer Kommunikation, Teamarbeit und das Zerlegen komplexer Herausforderungen in handhabbare Teile. Diese Erfahrung erweiterte meine technischen Fähigkeiten und stärkte auch mein Selbstvertrauen, was mich dazu brachte, ehrgeizigere Ziele und Projekte anzustreben. Dieser Meilenstein in meiner Karriere demonstrierte nicht nur mein Wachstum als Entwickler und Führer, sondern auch als Problemlöser, und zeigte, dass das Annehmen des Unbekannten und das Gelingen der Schlüssel zu persönlicher und beruflicher Entwicklung ist.

Was Ist Die Schlussfolgerung?

Meine Antworten führten mich in die zweite Phase des Vorstellungsgesprächsprozesses im Unternehmen, was mir ein angenehmes Gespräch mit einem der Entwickler des Teams ermöglichte, was ziemlich nett war. Aber hauptsächlich erlaubte mir diese Aufgabe, über das herausforderndste technische Problem nachzudenken, das ich während meiner Zeit bei eBay gelöst habe. Sie ermöglichte es mir, über mein Wachstum als Entwickler/Ingenieur nachzudenken, neue Fähigkeiten zu entwickeln und mein Vertrauen in die Anpassung an und die Lösung komplexer Probleme zu stärken.