Logo AnabisolutionsAnabisolutions
Aplikasi web

Migrasi database tanpa downtime: pola expand-contract untuk perubahan skema

ABTim AnabisolutionsAnalog Bina Solutions3 menit baca
Migrasi database tanpa downtime: pola expand-contract untuk perubahan skema

Cara teraman mengubah skema database produksi adalah memecahnya menjadi beberapa rilis kecil dengan pola expand-contract: tambahkan struktur baru, jalankan kode lama dan baru berdampingan, pindahkan data, baru hapus struktur lama. Dengan begitu tidak ada saat aplikasi harus dimatikan.

Mengapa perubahan langsung berbahaya

Perintah seperti mengganti nama kolom atau mengubah tipe data dapat mengunci tabel dan menahan semua permintaan. Pada tabel jutaan baris, kunci itu bisa berlangsung menit, cukup untuk membuat aplikasi tampak mati.

Selain itu, saat rilis berjalan bertahap, kode lama dan baru sempat hidup bersamaan dan keduanya harus cocok dengan skema yang sama.

Empat langkah expand-contract

  • Expand: tambahkan kolom atau tabel baru tanpa menghapus yang lama.
  • Dual write: aplikasi menulis ke struktur lama dan baru sekaligus.
  • Backfill: salin data lama ke struktur baru secara bertahap dalam batch kecil.
  • Contract: setelah semua pembaca beralih, hapus struktur lama di rilis berikutnya.

Setiap langkah dirilis terpisah dan bisa dibatalkan tanpa kehilangan data. Jalankan backfill di luar jam sibuk dengan jeda antar batch.

Selalu uji di salinan data nyata

Latih migrasi di salinan database produksi untuk mengetahui durasi dan dampak kuncinya sebelum hari rilis.

Praktik pendukung

Simpan semua migrasi di repositori dan jalankan lewat pipeline yang sama di setiap lingkungan. Buat indeks baru dengan opsi concurrently pada PostgreSQL agar tidak mengunci tulis.

Siapkan rencana mundur dan backup tepat sebelum migrasi, serta pantau error dan latensi selama dan sesudah proses berjalan.

Daftar periksa hari migrasi

Gunakan daftar ini untuk memastikan migrasi berjalan terkontrol dan dapat dibatalkan.

  • Backup terbaru dan sudah terbukti bisa dipulihkan.
  • Migrasi sudah dilatih pada salinan data produksi.
  • Waktu rilis di luar jam sibuk dengan tim siaga.
  • Metrik error dan latensi dipantau selama dan sesudah proses.
  • Rencana mundur tertulis dan dapat dijalankan dalam hitungan menit.

Setelah semua pembaca beralih, tunggu satu siklus rilis penuh sebelum menghapus struktur lama. Kesabaran kecil ini menghindari penyesalan besar.

Kesalahan yang perlu dihindari

Kesalahan umum adalah menjalankan perubahan skema besar sekaligus pada jam sibuk. Kesalahan lain adalah menghapus kolom lama terlalu cepat sebelum semua versi kode berhenti memakainya.

Hindari juga melewatkan latihan pada salinan data nyata. Migrasi yang cepat di data contoh bisa memakan puluhan menit di produksi dan menahan seluruh permintaan.

Mau kami bantu menimbang?Ceritakan alur Anda, kami beri pendapat jujur dalam 1×24 jam kerja.
Konsultasi gratis

Pertanyaan yang sering muncul

Ya, tanpa komitmen. Kami balas dalam 1×24 jam kerja.

Suka artikel ini?
AB

Tentang Tim AnabisolutionsStudio digital dari Pekanbaru yang mengerjakan website, aplikasi, dan sistem untuk klien di Riau dan sekitarnya.

Topik:DatabaseMigrasiDevOps

Artikel menarik lainnya

Apa kata klien kami

Sangat profesional. Hasilnya melebihi ekspektasi dan komunikasi selama proyek lancar.
Logo LelangbankBudi SantosoPlatform lelang, Lelangbank
Tim yang kompeten. Custom plugin WordPress-nya pas sekali dengan kebutuhan kami.
Logo Ruang Multi TalentSarah WijayaSitus lembaga pelatihan, Ruang Multi Talent
Kualitas kode bersih dan support after sales luar biasa. Pasti kembali lagi.
Logo QuipworkAhmad RahmanDashboard internal, Quipwork

Punya masalah serupa? Ceritakan.

Konsultasi awal gratis dan tanpa komitmen. Kami balas dalam 1×24 jam kerja.

hello@anabisolutions.comJalan Nurul Yaqin No. 1, Pekanbaru, Riau, Indonesia
Chat via WhatsApp

Mulai dari satu pesan

Gratis dan tanpa komitmen.

Anda butuh apa?
Kami balas dalam 1×24 jam kerja.