Pelajaran dari Mengoperasikan Layanan 24/7
Menjalankan aicutad.id dan cutad.web.id mengajarkan hal yang tidak bisa dipelajari dari tutorial: sistem yang berjalan "baik" di hari pertama akan menemukan seribu cara untuk jatuh di hari-hari berikutnya. Ini pelajaran yang paling mahal harganya.
Yang jatuh biasanya bukan aplikasinya
Ketika layanan tiba-tiba tidak menjawab, kecurigaan pertama selalu ke kode. Kenyataannya, penyebab yang paling sering kami temui justru di sekitar aplikasi: database yang membengkak, proses yang memakan memori pelan-pelan, atau pembaruan sistem yang mengganti konfigurasi diam-diam.
Karena itu aturan pertama kami: semuanya harus terpantau. Bukan monitoring canggih — cukup healthcheck sederhana yang otomatis memulihkan layanan, plus log yang bisa dibaca saat dibutuhkan. Healthcheck yang me-restart layanan saat macet sudah menyelamatkan kami berkali-kali, termasuk saat kami sedang tidur.
Gagal itu pasti — yang penting bagaimana bangkitnya
Kami pernah menghabiskan waktu berminggu-minggu memburu satu jenis error 400 yang ternyata berasal dari kombinasi parameter yang tidak valid dari klien. Pelajarannya: saat bertenggang dengan sistem pihak ketiga, asumsikan apa pun bisa salah, dan simpan bukti (log request) yang cukup untuk membedah setelah kejadian. Tanpa jejak request, debugging itu menebak-nebak.
Juga: pulih itu harus otomatis. Ketergantungan pada manusia yang bangun tengah malam bukan strategi, itu harapan.
Perubahan kecil, jalan pelan-pelan
Cara kami deploy tanpa downtime sederhana: dua worker yang identik di belakang load balancer. Perbarui satu, lihat kondisinya, baru perbarui satunya. Kalau ada masalah, separuh trafik saja yang kena — dan bisa cepat dikembalikan. Prinsip yang sama berlaku untuk perubahan database dan konfigurasi: selalu ada jalur mundur, dan jalur mundur itu dicoba, bukan diasumsikan.
Kesederhanaan adalah fitur
Godaan terbesar di proyek teknis adalah menambah kompleksitas untuk masalah yang belum ada. Setiap dependensi tambahan adalah satu hal lagi yang bisa rusak, perlu dipantau, dan perlu dipelajari ulang saat darurat. Kami berulang kali menyederhanakan — dan setiap kali itu, sistem menjadi lebih tahan guncang.
Penutup
Mengoperasikan layanan 24/7 melatih satu keterampilan utama: kenangan terhadap kegagalan. Setiap insiden diperiksa, dicatat, dan berubah menjadi healthcheck, batasan, atau prosedur baru. Pelan-pelan, sistem yang tersisa adalah yang sudah pernah jatuh dan tahu cara bangkit. Standar inilah yang kami bawa saat membangun website untuk klien — jasa pembuatan website kami dibangun di atas pengalaman yang sama.