Home » » Pelajaran Singkat dari Kasus Terhapusnya Production Data Gitlab

Pelajaran Singkat dari Kasus Terhapusnya Production Data Gitlab

Pernahkah Kamu menghapus sebuah data di servermu, atau di komputermu sendiri, atau di flashdisk, yang data itu sangat penting (dokumen bisnis, skripsi/thesis, project source, dsb) dan -sengaja atau tidak- dokumen tersebut terhapus dan akhirnya sadar bahwa dokumen tersebut hanya itu salinan satu-satunya?

Mungkin sebagian besar, atau hampir semua generasi X, Y dan Z yang sudah hidup dengan berkas digital pernah mengalaminya, minimal satu kali seumur hidup. Bisa terbayangkan bukan bagaimana paniknya situasi tersebut. Dan itu situasi yang paling buruk yang tidak ingin dialami siapapun, karena hasil kerja puluhan minggu atau bulan atau bahkan tahun lenyap begitu saja. Tentu selalu ada solusi, restore files, yang bila gagal tetap ada solusi terakhir: menulis ulang. Bagus!


Apa yang Terjadi di Gitlab​

Beberapa hari lalu ada berita yang lumayan rame di kalangan programmer, yakni terhapusnya data production di server Gitlab. Bila Kamu menggunakan layanan Gitlab, Kamu pasti tau berita ini. Ceritanya salah seorang Sysadmin Gitlab yang bekerja tengah malam, secara tidak sengaja menghapus direktori selama proses replikasi database yang cukup membuatnya frustasi. Celakanya, dia menghapus di server yang salah. Dia menghapus direktori database berisi 300GB data production yang seharusnya direplikasi.

Sang Sysadmin baru sadar dia telah menghapus direktori yang salah, dan meng-cancel perintah rm -rf tersebut. Data yang tersisa hanya tinggal 4,5GB, dan backup terakhir dari data tersebut yang dapat di-restore adalah 6 jam yang lalu saat insiden terjadi. Berarti paling tidak, ada 6 jam data baru yang bisa dipastikan tidak dapat diselamatkan. Saat insiden tersebut terjadi, website Gitlab down, dan pihak Gitlab langsung mengumumkan situasi yang terjadi melalui akun twitternya di https://twitter.com/gitlabstatus.

Untungnya, meskipun 300GB data terhapus, yang hilang hanyalah data issue dan merge request. Sedangkan data repository project user tetap aman (karena mungkin disimpan di direktori yang berbeda). Itu pun setidaknya ada backup database yang dapat di-restore.

Masalah Lain pada Proses Restore DB​

Masalah baru muncul. Dari 5 opsi backup yang mereka sediakan, tidak ada satupun dari kelimanya (berdasarkan dokumen live docs tentang progress restoring db Gitlab) yang dapat digunakan. Mulai dari backup LVM Snapshot dan regular backup yang hanya dilakukan sekali setiap 24 jam, disk snapshot Azure yang hanya membackup server NFS dan tidak membackup server DB, proses dumping dari Postgre yang gagal, hingga backup di S3 yang ternyata kosong. Mereka juga menyadari tidak memiliki sistem pemberitahuan bilamana proses backup gagal.

Untungnya salah satu kru sempat menjalankan LVM snapshot secara manual sekitar 6 jam sebelum insiden terjadi. Dan opsi backup ini yang paling memungkinkan dan paling lengkap untuk di-restore. Paling tidak, hanya data 6 jam terakhir yang sudah pasti tidak dapat diselamatkan.


Tapi ada satu hal yang bagus dan patut dicontoh dari Gitlab. Pada dasarnya karena layanan Git yang diberikan gratis, Gitlab bisa saja tidak terlalu mempermasalahkan insiden ini. Tapi dengan begitu tentu akan mencederai kepercayaan dan profesionalitas di mata pengguna. Tapi Gitlab justru tidak hanya sekedar meminta maaf dan memperbaiki masalah, tapi juga menghadirkan informasi yang transparan terkait permasalahan yang terjadi dan solusi yang dilakukan. Mereka bahkan menyediakan live doc dan live tweet yang dapat kita pantau sepanjang progres perbaikan sistem mereka, dan juga Youtube Live Stream selama para kru menyelesaikan perbaikan.


Pelajaran Penting

Proses backup data bukan task yang sepele, terutama bila Kamu belum pernah mengalami bagaimana merananya kehilangan data penting yang tidak dapat diselamatkan. Terlebih lagi bila urusannya dengan bisnis yang mana data tersebut harus kita pertanggungjawabkan kepada klien kita. Setelah insiden serupa yang juga sempat kami alami di Coding-Arena, kami mulai merapikan proses backup data dan membuat opsi lebih dari satu, tidak hanya bergantung pada proses backup reguler yang disediakan provider.

Setidaknya ada 4 hal yang ingin saya sampaikan terkait isu yang kita bahas pada artikel ini:

Selalu Pasang Opsi Backup​

Backup adalah hal yang wajib bila Kamu punya data penting. Dan upayakan untuk selalu sediakan salinan lebih dari dua opsi. Misalnya bila Kamu punya dokumen office yang harus disarsipkan, simpanlah di beberapa tempat: lokal komputer, harddisk eksternal, layanan Git online, Dropbox, Google Drive atau OneDrive.

Bila Kamu punya project online di servermu, siapkan mekanisme duplikasi database atau dumping database serta upload ke media penyimpanan lain seperti S3 atau layanan Git seperti Github, Gitorious, Gitlab dan lain sebagainya.

Pastikan Backup Dapat Di-restore​

Meskipun Kamu sudah menyediakan beberapa opsi, Kamu harus tetap mengecek apakah hasil backup dapat direstore. Bila bentuknya database dumping, pastikan dapat direstore dengan lancar dengan mengetesnya di komputer lokal. Bila Kamu menggunakan layanan hosting VPS, pastikan ke provider hosting yang Kamu gunakan bahwa mereka memiliki storage atau VM backup. Belajar dari kasus Gitlab, ada baiknya Kamu membuat alert system yang dapat memberitahumu bilamana proses backup gagal sehingga Kamu bisa cepat memperbaiki masalah tersebut.

Delete adalah Hal Tabu di Server Production​

Jangan mudah menghapus file atau data di server production! Meskipun Kamu sudah menyediakan opsi backup, menghapus hal yang krusial akan menghabiskan waktumu untuk hal yang sebenarnya tidak perlu. Hindari sebisa mungkin proses deleting apapun di server production. Pada dasarnya server production harus clean sejak pertama dibangun. Kalaupun Kamu harus membersihkan beberapa hal, PASTIKAN Kamu menghapus hal yang memang Kamu sadari itu harus dihapus. Upayakan sesadar mungkin saat hendak menghapus sesuatu. Pokoknya jangan mudah menghapus.

Sumber: Coding-Arena

10 comments:

  1. Ngeri-ngeri sedap. Apalagi kalau ternyata layanan Gitlab berbayar.. Bisa kisruh.

    Untuk Blog, saya termasuk paranoid sejak kehilangan sedikitnya 3 Blog karena sql injection (biasa Nubie, ditolak dikit langsung keblinger)... Ternyata wordpress hardening bukan solusi yang oke untuk newbie kayak saya. So... Backup rutin jadi solusi terbaik.

    ReplyDelete
  2. Ini plagiat dari web codepolitan tanpa mencantumkan sumber, bahkan ada tulisan nama CodePolitan sengaja dihapus dalam beberapa bagiannya...

    Ini tulisan aslinya: https://www.codepolitan.com/pelajaran-singkat-dari-kasus-terhapusnya-production-data-gitlab-5893da0724059

    ReplyDelete
    Replies
    1. budayakan baca sampai selesai, sumber sudah saya sertakan juga kok :)

      Delete
  3. wow nice artikel gan, seharian ini ane nyari artikel yang bagus gini gak nemu kecuali blog agan... hhe sinidomino

    ReplyDelete