Semua artikel

Backup dan Disaster Recovery untuk Aplikasi Bisnis

Cara merencanakan backup dan disaster recovery untuk aplikasi bisnis: menentukan RPO dan RTO, aturan 3-2-1, backup database dan point-in-time recovery, melindungi backup dari ransomware, strategi pemulihan, dan uji restore secara rutin.

Infrastruktur Cloud|Dipublikasikan |10 menit baca
Engineer yang bekerja di antara deretan server di data center

Hampir semua perusahaan bilang sudah punya backup. Yang lebih sedikit adalah perusahaan yang bisa menjawab: berapa banyak data yang hilang kalau server database mati sekarang, berapa lama sampai aplikasi bisa berjalan lagi, dan kapan terakhir kali hal itu dibuktikan dengan restore. Pertanyaan-pertanyaan inilah yang penting saat insiden terjadi. Backup yang ada tapi belum pernah dicoba di-restore, disimpan di akun yang sama dengan production, atau butuh dua hari untuk dipulihkan tidak melindungi bisnis seperti yang dibayangkan.

Mulai dari RPO dan RTO

IstilahPertanyaan yang dijawabContoh
RPO (Recovery Point Objective)Berapa banyak data yang boleh hilang?Lima belas menit untuk sistem pesanan, satu hari untuk wiki internal
RTO (Recovery Time Objective)Berapa lama aplikasi boleh tidak bisa dipakai?Satu jam untuk portal pelanggan, satu hari kerja untuk tool laporan

Sepakati angka-angka ini dengan pemilik bisnis setiap aplikasi, karena angka inilah yang menentukan biayanya. Backup harian berarti RPO bisa sampai 24 jam. Kehilangan pesanan satu hari penuh jarang bisa diterima, jadi sistem transaksi biasanya butuh backup database yang berjalan terus-menerus. RTO satu jam berarti proses restore harus sudah dibuat script-nya dan dilatih, karena tidak ada yang bisa membangun ulang server dari ingatan dalam enam puluh menit di tengah krisis.

Ikuti Aturan 3-2-1

  • Simpan minimal tiga salinan data penting: data production dan dua backup.
  • Simpan di minimal dua jenis media atau layanan yang berbeda.
  • Simpan minimal satu salinan di lokasi lain, misalnya region lain, akun cloud lain, atau provider lain.
  • Banyak tim menambahkan satu salinan yang immutable atau offline sehingga tidak bisa diubah, dan nol error saat uji restore.

Backup Semua yang Dibutuhkan Aplikasi

Restore yang berhasil butuh lebih dari sekadar dump database. Tulis daftar semua yang dibutuhkan untuk menghidupkan aplikasi lagi: database, file upload di storage, konfigurasi dan environment variable, secret seperti API key, record DNS, sertifikat TLS, dan definisi infrastrukturnya. Kode aplikasi biasanya sudah aman di Git, tapi hasil build dan image container yang dipakai di production juga harus bisa dibuat ulang. Infrastruktur yang ditulis sebagai kode, dengan Terraform atau tool sejenis, membuat proses membangun ulang server jadi langkah yang bisa diulang, tidak lagi pekerjaan manual yang panjang.

Backup Database dan Point-in-Time Recovery

Dump logis seperti pg_dump atau mysqldump memang sederhana dan mudah dipindahkan, tapi restore database besar dari dump bisa makan waktu berjam-jam, dan semua data sejak dump terakhir hilang. Point-in-time recovery menggabungkan backup penuh berkala dengan aliran log transaksi yang terus-menerus, seperti WAL archiving di PostgreSQL atau binary log di MySQL. Hasilnya, Anda bisa restore ke titik waktu mana pun, misalnya satu menit sebelum ada yang tidak sengaja menjalankan perintah delete yang salah. Managed database seperti Amazon RDS sudah menyediakan backup otomatis dengan point-in-time recovery, dengan masa simpan yang bisa diatur. Simpan dump sebagai salinan tambahan yang mudah dipindahkan, dan pakai point-in-time recovery untuk memenuhi RPO.

Lindungi Backup dari Ransomware dan Kesalahan

  • Simpan minimal satu salinan di akun atau project terpisah dengan kredensial berbeda, supaya penyerang yang menguasai production tidak bisa menghapus backup.
  • Pakai storage immutable seperti S3 Object Lock atau vault lock, supaya backup tidak bisa dihapus atau diubah selama masa simpannya.
  • Enkripsi backup, dan simpan kunci enkripsinya di tempat yang tetap bisa diakses saat restore di tengah insiden.
  • Batasi siapa yang boleh menghapus backup atau mengubah masa simpannya, dan kirim notifikasi kalau itu terjadi.
  • Simpan riwayat yang cukup panjang. Ransomware atau data yang rusak kadang baru ketahuan berminggu-minggu kemudian, jadi masa simpan tujuh hari mungkin tidak menjangkau salinan yang masih bersih.

Pilih Strategi Pemulihan

StrategiCara kerjaRTO dan biaya umumnya
Backup and restoreBackup disalin ke region lain, dan infrastruktur baru dibuat saat dibutuhkanHitungan jam, biaya paling rendah
Pilot lightDatabase direplikasi ke region lain, sementara server aplikasi baru dinyalakan saat bencanaPuluhan menit sampai satu jam, biaya rendah
Warm standbySalinan sistem yang lebih kecil terus berjalan di region lain dan diperbesar saat bencanaHitungan menit, biaya sedang
Multi-site active-activeDua region atau lebih melayani trafik bersamaanHampir nol, biaya dan kerumitan paling tinggi

Kebanyakan aplikasi bisnis sudah cukup dengan backup and restore atau pilot light, ditambah infrastruktur yang ditulis sebagai kode. Setup multi-site masuk akal untuk sistem yang setiap menit downtime-nya sangat mahal, dan butuh tim yang sanggup mengelola kerumitannya.

Jadwalkan Uji Restore

  1. 1Tulis runbook pemulihan berisi langkah, perintah, dan orang yang terlibat, lalu simpan di luar sistem yang dijelaskannya.
  2. 2Restore database ke environment terpisah setiap bulan dan pastikan aplikasi bisa membacanya.
  3. 3Catat berapa lama proses restore-nya dan bandingkan dengan RTO.
  4. 4Satu atau dua kali setahun, lakukan latihan penuh: bangun ulang aplikasi di region lain dari backup dan kode infrastruktur.
  5. 5Perbarui runbook setelah setiap latihan, berdasarkan langkah yang kurang atau lambat.

Pantau Backup-nya Juga

Backup bisa gagal tanpa suara: disk penuh, kredensial kedaluwarsa, atau script yang berhenti setelah ada perubahan server. Kirim notifikasi kalau job backup gagal, dan juga kalau backup yang ditunggu tidak muncul, dengan pengecekan heartbeat. Pantau juga ukuran backup. Backup yang ukurannya tiba-tiba mengecil bisa berarti job-nya hanya menyimpan sebagian data.

Ajukan satu pertanyaan di rapat operasional berikutnya: kapan terakhir kali kita restore data production, dan berapa lama prosesnya? Kalau tidak ada yang tahu, jadwalkan uji restore pertama sebelum menambah tool backup baru.

Poin penting

  • Sepakati RPO dan RTO untuk setiap aplikasi, karena angka itu yang menentukan desain dan biaya backup.
  • Ikuti aturan 3-2-1 dan simpan minimal satu salinan immutable di akun terpisah.
  • Backup semua yang dibutuhkan untuk membangun ulang aplikasi, termasuk file, konfigurasi, secret, dan kode infrastruktur.
  • Pakai point-in-time recovery untuk database transaksi, dan simpan dump sebagai salinan tambahan.
  • Jadwalkan uji restore, ukur waktunya dibanding RTO, dan pasang notifikasi kalau backup gagal atau tidak muncul.

Artikel terkait

Artikel lain tentang software development, AI, cloud, dan infrastruktur.

Layar komputer yang menampilkan desain landing page di samping tablet dan HP
Pengembangan Web|

Cara Membuat Website Company Profile yang Mendatangkan Calon Klien

Yang dibutuhkan website company profile supaya mendatangkan pertanyaan dari calon klien: halaman layanan yang jelas, bukti seperti studi kasus dan logo klien, kontak yang mudah, cepat dibuka di HP, dasar-dasar SEO, pilihan platform, dan tracking untuk melihat halaman mana yang menghasilkan leads.

Pelanggan membayar dengan HP di kasir toko
Pengembangan Software|

Cara Integrasi Payment Gateway seperti Midtrans dan Xendit dengan Aman

Cara mengintegrasikan payment gateway Indonesia seperti Midtrans atau Xendit: memilih metode pembayaran, halaman checkout bawaan atau API langsung, verifikasi webhook, menangani notifikasi ganda, desain status pesanan, masa berlaku pembayaran, refund, testing di sandbox, dan rekonsiliasi harian.

Sedang mencari partner untuk pengembangan software?

Ceritakan proyek yang sedang Anda bangun, kebutuhan yang ingin diselesaikan, dan tantangan yang dihadapi. Kami dapat membantu membahas pendekatan teknis, scope, timeline, dan estimasi biaya.

Mulai diskusi