12.9 Belajar dari Production: Lingkaran Umpan Balik yang Nyata
Setelah rilis, senior engineer tidak berhenti; ia membaca feedback dari production untuk terus belajar dan memperbaiki. Banyak engineer menganggap rilis sebagai garis akhir. Mereka menepuk bahu, move ke fitur berikutnya, dan membiarkan production berjalan sendiri. Senior engineer tahu bahwa rilis justru awal dari siklus pembelajaran yang sesungguhnya.
Bayangkan Anda baru saja merilis perubahan pada sistem pembayaran. Semua test hijau, code review selesai, staging sudah diuji. Tiga jam setelah rilis, alert muncul: error rate endpoint konfirmasi pembayaran naik dua persen. Anda membuka dashboard metrik dan melihat lonjakan 5xx di satu provider payment gateway. Tracing menunjukkan bahwa request timeout terjadi ketika provider sedang lambat merespons. Anda membaca log dan menemukan pola: timeout terjadi karena koneksi tidak dikelola dengan connection pooling yang tepat.
Misalnya, beginilah cara senior engineer mulai menyelidiki lonjakan error rate tersebut:
# Query metrik error rate per provider
curl -X GET "https://api.monitoring.internal/metrics?name=error_rate&provider=payment_gateway_x&range=30m"
# Cuplikan log yang muncul di dashboard
ERROR: timeout connecting to payment gateway provider X after 5s
request_id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
endpoint: /api/v1/confirm-payment
provider: payment_gateway_x
duration_ms: 5123
retry_attempt: 2
Inilah lingkaran umpan balik yang nyata. Alert memberitahu ada yang salah. Metrik menunjukkan seberapa parah. Tracing menunjukkan di mana masalah terjadi. Log memberikan detail apa yang sebenarnya terjadi. User report kadang datang lebih lambat, tetapi sering membawa konteks yang tidak tertangkap oleh monitoring otomatis—misalnya pengalaman pengguna yang bingung melihat halaman error yang tidak informatif.
Senior engineer menggunakan production sebagai laboratorium. Ia tidak hanya memperbaiki bug, ia bertanya: mengapa desain saya tidak mengantisipasi ini? Asumsi apa yang ternyata salah? Apakah test yang saya tulis sudah mencakup skenario ini? Pertanyaan-pertanyaan ini yang membedakan engineer yang hanya menjalankan perintah dari engineer yang terus tumbuh.
AI bisa membantu di sini. Ketika Anda menemukan log error yang panjang, AI assistant bisa merangkum pola kesalahan dan menyarankan kemungkinan penyebab. Ketika tracing menunjukkan anomali, AI bisa membantu membandingkan pola request normal dengan yang bermasalah. Bahkan untuk bug yang sudah diperbaiki, AI bisa membantu menulis test regresi berdasarkan data production yang sebenarnya. Tetapi verifikasi tetap di tangan Anda. AI tidak tahu konteks bisnis di balik error itu. Ia tidak tahu bahwa timeout di provider tertentu lebih bisa ditoleransi daripada error validasi yang membuat transaksi gagal total. Anda yang harus memutuskan apakah perbaikan cukup atau perlu perubahan desain yang lebih fundamental.
Siklus ini terus berulang. Setiap rilis menghasilkan data baru. Setiap data baru menghasilkan pembelajaran. Setiap pembelajaran menghasilkan desain yang lebih baik. Inilah yang membuat senior engineer tidak pernah merasa selesai belajar. Ia tidak menganggap production sebagai tempat yang menakutkan, melainkan sebagai sumber kebenaran yang paling jujur. Dokumen desain bisa menipu. Kode bisa terlihat bersih. Tapi production tidak pernah berbohong.
Berikut diagram alur yang merangkum siklus umpan balik dari production:
Setelah Anda memahami lingkaran umpan balik ini, pertanyaan selanjutnya bukan lagi bagaimana membuat desain yang sempurna dari awal, melainkan bagaimana membangun sistem yang bisa belajar dengan cepat dari production. Itu menjadi arah bab berikutnya: bagaimana merancang arsitektur yang memfasilitasi pembelajaran, bukan sekadar eksekusi.