Halo, Sobat Webby!
Bagi seorang pengembang, melakukan deployment fitur baru ke server produksi sering kali menjadi rutinitas biasa. Namun, ceritanya akan sangat berbeda ketika pembaruan tersebut melibatkan perubahan skema database atau bahkan pemindahan server database secara keseluruhan.
Secara tradisional, pengembang akan mengaktifkan Maintenance Mode (mode perbaikan), memutus koneksi pengguna, mengubah database, lalu menyalakan aplikasi kembali. Namun, pada arsitektur aplikasi SaaS multi-tenant berskala besar atau platform e-commerce yang aktif setiap saat, mematikan sistem selama beberapa menit saja bisa berarti kehilangan pendapatan dan kepercayaan pelanggan.
Solusinya adalah menerapkan strategi Migrasi Database Tanpa Downtime. Mari kita bedah bagaimana cara para profesional melakukannya dengan aman.
Prinsip Utama: Kompatibilitas Mundur (Backward Compatibility)
Aturan emas dalam migrasi tanpa waktu henti adalah: Kode aplikasi versi lama harus tetap bisa berjalan dengan skema database versi baru.
Anda tidak bisa mengubah database dan mengunggah kode aplikasi secara bersamaan tanpa menimbulkan risiko error. Pembaruan database dan pembaruan kode aplikasi (seperti controller di Laravel atau API di Next.js) harus dilakukan secara terpisah dan bertahap.
Pola “Expand and Contract” (Ekspansi dan Kontraksi)
Ini adalah strategi paling standar di industri perangkat lunak untuk mengubah struktur kolom atau tabel database (misalnya di PostgreSQL) tanpa menimbulkan error pada aplikasi yang sedang berjalan. Proses ini dibagi menjadi empat fase krusial:
Fase 1: Expand (Ekspansi Skema)
Pada tahap pertama, Anda menambahkan kolom atau tabel baru ke database, tanpa menyentuh struktur yang lama.
Contoh Kasus: Anda ingin memisahkan kolom
nama_lengkapmenjadinama_depandannama_belakang.Tindakan: Buat migration untuk menambah kolom
nama_depandannama_belakang.Status Aplikasi: Aplikasi masih membaca dan menulis ke kolom
nama_lengkapyang lama. Tidak ada error karena kolom lama masih ada.
Fase 2: Sinkronisasi Data (Migration)
Sekarang, Anda memiliki kolom baru yang masih kosong. Anda perlu memindahkan data dari struktur lama ke struktur baru.
Tindakan: Jalankan script di latar belakang (background job) untuk memecah data
nama_lengkapyang sudah ada, lalu menyimpannya kenama_depandannama_belakang.Penting: Selama proses ini, pastikan aplikasi juga diatur agar menulis data ke kedua tempat (kolom lama dan kolom baru) untuk setiap pengguna baru yang mendaftar, agar tidak ada data yang tertinggal.
Fase 3: Transisi Kode Aplikasi
Setelah semua data tersinkronisasi, saatnya mengubah logika kode Anda.
Tindakan: Lakukan deploy versi aplikasi baru yang kini sepenuhnya hanya membaca dan menulis menggunakan kolom
nama_depandannama_belakang.Status Aplikasi: Aplikasi sekarang sudah menggunakan skema database yang baru. Jika terjadi masalah (bug), Anda masih bisa melakukan rollback kode ke versi sebelumnya karena kolom lama (dan datanya) masih utuh.
Fase 4: Contract (Pembersihan)
Setelah aplikasi versi baru berjalan stabil selama beberapa waktu (bisa beberapa hari atau minggu) dan Anda yakin tidak perlu melakukan rollback, barulah Anda menghapus struktur yang lama.
Tindakan: Buat migration terakhir untuk menghapus kolom
nama_lengkap. Skema database Anda kini sudah bersih.
Strategi Migrasi Pindah Server Database
Bagaimana jika Sobat Webby bukan sekadar mengubah skema, melainkan harus memindahkan database dari server lama ke cloud server baru yang lebih kuat?
Pendekatan Logical Replication (Replikasi Logis) adalah jawabannya:
Siapkan Server Baru: Instal dan konfigurasi mesin database baru.
Aktifkan Replikasi Master-Slave: Atur server lama sebagai “Master” dan server baru sebagai “Slave”. Biarkan server baru menyalin seluruh data dari server lama secara otomatis.
Sinkronisasi Real-Time: Setiap ada transaksi baru di server lama, data tersebut langsung direplikasi ke server baru dalam hitungan milidetik.
Ubah Titik Koneksi (Failover): Lakukan pembaruan konfigurasi variabel environment (seperti
.env) pada aplikasi Anda agar mengarah ke koneksi server database yang baru. Matikan server lama. Waktu henti pada proses pertukaran ini biasanya kurang dari satu detik.
Kesimpulan
Melakukan migrasi database tanpa downtime memang membutuhkan langkah yang lebih panjang, kehati-hatian ekstra, dan perencanaan arsitektur yang matang dibandingkan cara tradisional. Namun, bagi Sobat Webby yang membangun infrastruktur backend berkinerja tinggi, menguasai strategi pembaruan bertahap ini adalah kunci untuk menjaga integritas data pelanggan dan memastikan aplikasi tetap tangguh di segala situasi.


