MongoDB ke Postgres

Ini Tentang Apa?

Saat wawancara untuk posisi di sebuah perusahaan, saya diminta untuk menjawab pertanyaan berikut: Dapatkah Anda menjelaskan masalah tersulit yang pernah Anda selesaikan? Singkatnya, masalah tersulit yang saya selesaikan terjadi saat saya bekerja di eBay, di mana saya memigrasikan salah satu proyek internal besar eBay dari menggunakan MongoDB ke Postgres selama tahun 2023. Namun, pertanyaan ini benar-benar membuat saya merenungkan bagaimana saya menyelesaikan masalah sulit ini dan memungkinkan saya untuk merefleksikan perjalanan saya sebagai pengembang. Karena itu, saya menulis jawaban yang sangat rinci dan menyeluruh untuk pertanyaan itu, dan saya ingin membagikan jawaban saya di situs web saya.

Apa Pertanyaannya?

Dapatkah Anda menjelaskan masalah tersulit yang pernah Anda selesaikan? Harap jawab dengan kurang dari 4 paragraf dan beri tahu kami:

  1. Apa yang Anda lakukan
  2. Apa yang membuatnya sulit
  3. Apa yang Anda pelajari dari pengalaman ini
  4. Bagaimana Anda berkembang sebagai hasilnya

Apa Jawaban Saya?

1 - Apa yang saya lakukan

Saat ini, dalam karier saya, masalah tersulit yang saya selesaikan terjadi ketika saya bekerja di posisi saya saat ini di eBay. Saat ini di eBay, di mana saya dikontrak melalui Hitachi Vantara, saya mengembangkan dan memelihara alat internal yang disebut Storage Management System atau STMS. STMS adalah alat yang digunakan oleh tim Infrastruktur Layanan & Penyimpanan (SSI) eBay untuk memantau dan mengelola perangkat di pusat data eBay. STMS memungkinkan seorang insinyur untuk memantau metrik dari berbagai array, switch, host, grup disk, cluster, dan database. Serta menangani pemberitahuan untuk switch dan array dan dengan mudah memungkinkan seorang insinyur menyelesaikan tugas tingkat lanjut seperti alokasi host. STMS mengolah lebih dari 1,5 juta metrik per menit, yang mencakup puluhan/ratusan array, switch, host, grup disk, dan cluster di seluruh pusat data eBay. Ini berfungsi sebagai alat penting bagi tim SSI untuk memantau dan mengelola infrastruktur penyimpanan eBay, yang sangat penting bagi layanan inti dan model bisnis eBay. Mengetahui semua ini, masalah tersulit yang harus saya selesaikan selama waktu saya bekerja di eBay adalah memigrasikan STMS dari menggunakan basis data MongoDB ke menggunakan basis data Postgres.

2 - Apa yang membuatnya sulit

Yang membuat masalah ini sulit adalah bahwa MongoDB dan Postgres adalah basis data yang secara fundamental berbeda. MongoDB adalah basis data berbasis dokumen (NoSQL), artinya data disimpan sebagai JSON dalam koleksi (seperti dokumen dalam lemari arsip), dan Postgres adalah basis data relasional (SQL), artinya data disimpan sebagai baris dalam tabel (seperti dalam spreadsheet). Selain itu, seluruh backend STMS dibangun untuk memproses dan mengelola data sebagai JSON, menggunakan paket yang hanya kompatibel dengan MongoDB untuk operasi basis data. Juga, saat melakukan migrasi ini, tidak boleh ada waktu henti dan hampir semua fitur harus terus berfungsi karena betapa pentingnya STMS sebagai alat internal. Migrasi ini secara keseluruhan harus diselesaikan dalam beberapa bulan, tanpa waktu henti, dan tanpa rencana yang jelas untuk pelaksanaannya. Saya juga tidak memiliki banyak pengalaman dengan Postgres sebelumnya dan, bersama dengan semua rekan kerja saya, tidak memiliki pengalaman dalam memigrasikan basis kode warisan besar dari basis data NoSQL ke SQL.

3 - Apa yang saya pelajari dari pengalaman ini

Migrasi kode STMS dari MongoDB ke Postgres berhasil diselesaikan tanpa waktu henti sambil mempertahankan hampir semua fitur dan fungsionalitas. Ini membutuhkan penelitian yang ekstensif, pembelajaran, pengujian, dan pemecahan masalah. Saya merestrukturisasi struktur data kami agar bekerja lebih efektif dengan basis data relasional dan mengembangkan paket baru untuk menggantikan paket yang kami andalkan yang tidak terintegrasi dengan Postgres. Secara keseluruhan, migrasi berjalan lancar dan tanpa cacat nyata yang melampaui harapan saya. Sepanjang proses ini, saya belajar banyak. Secara teknis, saya memperoleh pemahaman yang lebih baik tentang Postgres, SQL, pohon parse, ORM, Sequelize, Prisma, pembangun kueri, pemeriksaan ekuivalensi, pengaturan basis data primer-standby, dan pengujian unit terkait basis data. Secara mendasar, saya belajar bagaimana memecah masalah kompleks menjadi bagian-bagian yang lebih kecil secara lebih efektif dan menerapkan solusi yang efektif untuk bagian-bagian tersebut. Selain itu, saya belajar bagaimana menjadi pemimpin dan memimpin proyek ini hingga selesai meskipun menghadapi banyak keterbatasan, kemunduran, dan ketidakpastian.

4 - Bagaimana saya berkembang sebagai hasilnya

Saya memulai karier saya di bidang robotika selama masa sarjana tetapi beralih ke pengembangan web ketika saya mendapatkan pekerjaan di eBay, memasuki bidang di mana saya tidak memiliki pengalaman sebelumnya. Transisi ini meletakkan dasar bagi karier yang ditandai oleh pembelajaran dan kemampuan beradaptasi yang konstan. Tantangan memigrasikan STMS dari MongoDB ke Postgres merupakan lompatan signifikan dalam karier saya, yang memberikan kontribusi besar terhadap pertumbuhan profesional saya. Ini bukan hanya tentang memperdalam pemahaman saya tentang basis data atau meningkatkan keterampilan pemecahan masalah saya. Proyek ini mendorong saya ke wilayah baru, menuntut perencanaan yang teliti dan komitmen untuk tidak mengalami waktu henti. Memimpin migrasi tanpa pengalaman sebelumnya dalam transisi basis data skala besar, saya belajar nilai komunikasi yang jelas, kerja tim, dan memecah tantangan kompleks menjadi bagian yang dapat dikelola. Pengalaman ini memperluas keterampilan teknis saya dan juga meningkatkan kepercayaan diri saya, mengarahkan saya ke tujuan dan proyek yang lebih ambisius. Tonggak ini dalam karier saya tidak hanya menunjukkan perkembangan saya sebagai pengembang dan pemimpin tetapi juga sebagai pemecah masalah, menunjukkan bahwa menerima ketidakpastian dan berhasil adalah kunci bagi pengembangan pribadi dan profesional.

Apa Kesimpulannya?

Jawaban saya membawa saya ke tahap kedua proses wawancara di perusahaan tersebut, memungkinkan saya untuk bercakap-cakap dengan salah satu pengembang dari tim, yang cukup menyenangkan. Namun, terutama, tugas ini memungkinkan saya untuk merenungkan masalah teknis paling menantang yang saya selesaikan dalam karier saya selama waktu saya di eBay. Ini memungkinkan saya untuk memikirkan tentang pertumbuhan saya sebagai pengembang/insinyur, mengembangkan keterampilan baru, dan meningkatkan kepercayaan diri saya dalam beradaptasi serta menyelesaikan masalah kompleks.