Merancang strategi backup yang benar dengan konsep 3-2-1, RPO dan RTO, memilih tool seperti rsync dan restic, serta disiplin verifikasi dan restore drill agar backup tidak hanya menjadi ilusi keamanan

Di episode 10 kita memastikan sistem bisa "dilihat" lewat monitoring. Sekarang kita membahas keamanan terakhir yang tidak boleh dilupakan: backup. Ini topik yang aneh — dianggap penting oleh semua orang, tetapi praktiknya paling sering diabaikan. Banyak tim baru sadar nilai backup saat data hilang dan ternyata file backup-nya korup atau belum pernah diuji.
Mengapa episode ini penting? Karena backup tanpa restore yang teruji bukanlah backup — hanya ilusi keamanan. Episode ini mengajarkan cara berpikir strategis: menentukan target RPO/RTO, memilih tool yang tepat, mengotomasi backup, dan — yang paling penting — membangun disiplin verifikasi dan restore drill.
Sebelum memilih tool, kalian harus bisa menjawab dua pertanyaan bisnis:
| Konsep | Arti | Contoh |
|---|---|---|
| RPO (Recovery Point Objective) | Seberapa banyak data boleh hilang? | RPO 24 jam = data max 1 hari yang hilang |
| RTO (Recovery Time Objective) | Seberapa cepat sistem harus kembali? | RTO 4 jam = sistem harus up dalam 4 jam |
RPO menentukan frekuensi backup (makin kecil RPO, makin sering backup). RTO menentukan seberapa cepat restore harus berjalan. Server web dengan data pengguna yang terus berubah butuh RPO kecil; server sekunder dengan data statis bisa RPO besar. Putuskan ini bersama pemilik layanan sebelum membangun apa pun.
Strategi paling terkenal dan masih relevan:
Pertimbangkan juga varian 3-2-1-1-0: tambah 1 salinan immutable (tidak bisa diubah/dihapus, pelindung dari ransomware) dan 0 kesalahan restore (dijamin lewat verifikasi).
| Tool | Karakteristik | Cocok Untuk |
|---|---|---|
rsync | Incremental per file, sederhana, ada di mana-mana | Direktori, mirroring |
restic | Dedup + enkripsi + snapshot, mendukung cloud | Backup general modern |
borg | Dedup + kompresi kuat, efisien | Backup host tunggal |
pg_dump / mysqldump | Backup logis database | Backup database |
velero | Backup Kubernetes | Cluster K8s (episode 15) |
Contoh praktis dengan restic ke penyimpanan remote (S3-compatible):
# 1. Inisialisasi repository
export RESTIC_REPOSITORY=s3:s3.amazonaws.com/bucket-backup/app
export RESTIC_PASSWORD="sangat-rahasia"
restic init
# 2. Backup direktori penting
restic backup /srv/app /etc/nginx --tag nightly
# 3. Lihat snapshot
restic snapshotsRestic melakukan deduplication dan enkripsi — data yang sama tidak disimpan dua kali, dan isinya tidak bisa dibaca tanpa password. Ini pasangan yang bagus dengan prinsip immutable backup (snapshot tidak bisa diubah).
Verifikasi bukan sekadar "file ada" — tapi "file bisa dipulihkan dan isinya benar". Jenis verifikasi:
# Cek integritas repository
restic check
# Simulasikan restore ke direktori sementara
restic restore latest --target /tmp/restore-test
# Bandingkan isi (contoh: hash file)
diff -r /srv/app /tmp/restore-test/srv/appUntuk database, verifikasi berarti restore lalu cek data:
pg_restore -d appdb_restore_test /backup/app.dump
psql -d appdb_restore_test -c "SELECT count(*) FROM users;"Warning
Dua ancaman paling umum backup: encryption ransomware yang ikut mengunci backup, dan backup yang tidak pernah diuji hingga dibutuhkan. Solusinya: salinan immutable/offline, plus jadwal restore drill berkala — minimal bulanan untuk sistem kritis. Catat durasi restore setiap kali; jika melewati RTO, strateginya perlu diperbaiki.
Backup harus berjalan otomatis (episode 8) dan hasilnya dipantau (episode 10):
#!/bin/bash
set -euo pipefail
export RESTIC_REPOSITORY="s3:s3.amazonaws.com/bucket-backup/app"
export RESTIC_PASSWORD_FILE="/etc/restic/passwd"
if restic backup /srv/app /etc/nginx --tag nightly 2>>/var/log/restic.log; then
curl -fsS -X POST "https://hooks.slack.com/services/XXXX" \
-d '{"text":"[OK] Backup berhasil"}' || true
else
curl -fsS -X POST "https://hooks.slack.com/services/XXXX" \
-d '{"text":"[ALERT] Backup GAGAL! Cek /var/log/restic.log"}' || true
exit 1
fiJadwalkan dengan cron/systemd timer, dan pastikan kegagalan terlihat — bukan hanya tertulis di log yang tidak dibaca.
Restore drill adalah latihan penuh: restore dari backup, pastikan aplikasi berjalan, ukur waktunya. Panduan pelaksanaan:
# 1. Ambil snapshot terakhir
restic snapshots --latest
# 2. Restore ke lokasi test
restic restore <snapshot-id> --target /restore-lab
# 3. Verifikasi
ls -la /restore-lab
# 4. Catat: mulai ... selesai ... durasi ... kendala ...Inti yang harus dibawa pulang:
pg_dump).Di episode 12 selanjutnya kita mengelola workload yang melayani aplikasi: database & middleware ops — PostgreSQL/MySQL, cache, dan queue. Sampai jumpa di episode 12!