12.3 Petunjuk dari Production: Log, Metrik, dan Insiden
Alur utama saja belum cukup; senior engineer juga membaca log, metrik, dan riwayat insiden untuk menemukan petunjuk desain yang tidak tertulis di kode.
Bayangkan Anda sedang menelusuri alur pemesanan di sebuah sistem e-commerce. Kode terlihat bersih, logika bisnis rapi, semua cabang kondisi tertangani. Lalu Anda membuka dashboard monitoring dan menemukan sesuatu yang mengganggu: endpoint checkout mengalami timeout setiap hari Jumat pukul sembilan malam. Bukan error, bukan crash—hanya respons yang melambat drastis selama sepuluh menit, lalu kembali normal. Tidak ada yang melaporkannya karena sistem masih berfungsi. Tapi pola itu muncul setiap minggu selama tiga bulan terakhir.
Inilah yang membedakan senior engineer. Ia tidak puas hanya membaca kode dan diagram. Ia tahu bahwa production adalah sumber kebenaran desain yang paling jujur. Dokumentasi bisa usang, diagram bisa tidak akurat, dan kode bisa terlihat benar di lokal tapi berperilaku berbeda di produksi. Log, metrik, dan riwayat insiden adalah bukti nyata bagaimana sistem benar-benar berjalan.
Log memberi tahu apa yang terjadi: baris per baris, request per request, error per error. Tapi log saja tidak cukup jika tidak dibaca dengan pertanyaan yang tepat. Senior engineer tidak membaca log untuk mencari kesalahan, ia membaca untuk menemukan pola. Apakah error tertentu muncul hanya saat beban tinggi? Apakah ada query yang selalu lambat di jam sibuk? Apakah ada service yang gagal diam-diam tanpa alert? Pola-pola ini adalah petunjuk desain yang tidak akan Anda temukan di dokumen arsitektur.
Misalnya, untuk menemukan error yang paling sering muncul di log dan melihat response time dari metrik, Anda bisa menjalankan perintah seperti ini:
# Mencari pola error di log
cat production.log | grep "ERROR" | cut -d' ' -f1-3 | sort | uniq -c | sort -nr | head -10
# Melihat response time dari metrik (Prometheus query)
curl -s 'http://localhost:9090/api/v1/query?query=histogram_quantile(0.95,rate(http_request_duration_seconds_bucket[5m]))'
Metrik memberi tahu kapan dan seberapa parah. Response time, throughput, error rate, CPU usage, memory consumption—semua ini adalah sinyal yang harus dibaca bersama, bukan terpisah. Sebuah endpoint yang lambat mungkin bukan karena kode yang buruk, tapi karena dependency di downstream sedang bermasalah. Atau karena caching tidak bekerja seperti yang diasumsikan. Atau karena konfigurasi connection pool terlalu kecil untuk pola traffic yang sebenarnya.
Riwayat insiden adalah guru yang paling mahal tapi paling jujur. Setiap insiden adalah cerita tentang asumsi yang salah, batas yang tidak terduga, atau skenario yang tidak pernah dibayangkan saat desain. Senior engineer membaca post-mortem, melihat timeline kejadian, dan bertanya: apa yang sebenarnya terjadi? Mengapa sistem bereaksi seperti itu? Apa yang bisa mencegah ini sejak awal? Jawaban dari pertanyaan-pertanyaan ini sering mengubah cara ia mendesain fitur baru.
Yang lebih penting, senior engineer menggunakan petunjuk ini sebelum menulis kode baru. Ia tidak langsung membangun fitur berdasarkan dokumen solusi. Ia bertanya: apakah ada pola kegagalan di area yang akan kita sentuh? Apakah ada bug berulang yang menunjukkan kelemahan desain? Apakah ada metrik yang memburuk setiap kali kita menambah fitur tertentu? Dengan menjawab pertanyaan ini, ia bisa menghindari membuat kesalahan yang sama, atau bahkan memperbaiki kelemahan yang sudah ada sebelum menambah kompleksitas baru.
Production feedback juga membantu senior engineer memprioritaskan perbaikan. Tidak semua kelemahan perlu diperbaiki sekarang. Tapi jika log menunjukkan bahwa 70 persen error berasal dari satu service yang handling error-nya tidak konsisten, maka itu adalah investasi yang lebih baik daripada menulis kode baru di service lain yang sudah stabil.
Setelah membaca petunjuk dari production, senior engineer memiliki gambaran yang lebih lengkap: bukan hanya bagaimana sistem seharusnya bekerja menurut dokumen, tapi bagaimana sistem benar-benar bekerja dalam kenyataan. Dengan pemahaman ini, ia siap untuk langkah selanjutnya: memotong pekerjaan menjadi irisan vertikal yang aman dan memberikan pembelajaran cepat.
