Langsung ke konten

Arsip

Keandalan

8 artikel
Rekayasa Perangkat Lunak 21 Sep 2026 6 min read

Request Coalescing Meredam Lonjakan Cache Miss

Request Coalescing Meredam Lonjakan Cache Miss Cache miss biasanya murah ketika satu caller memicu satu backend read. Miss yang sama dapat menjadi mahal ketika ratusan caller datang untuk key yang sama sebelum fill pertama selesai. Setiap caller melihat cache kosong lalu memulai work yang setara, sehingga load berlipat tepat ketika cached value sedang tidak tersedia. Request coalescing menempatkan concurrency boundary kecil di sekitar fill tersebut. Caller pertama memulai operasi backend. Caller berikutnya untuk key yang sama bergabung dengan operasi yang sedang berjalan, bukan memulai operasi baru. Setelah selesai, hasilnya dapat mengisi cache sekaligus dikirim ke caller yang menunggu.

Rekayasa Perangkat Lunak 21 Sep 2026 5 min read

Propagasi Deadline Menjaga Budget Timeout Antar-RPC Hop

Propagasi Deadline Menjaga Budget Timeout Antar-RPC Hop Timeout yang dimulai ulang pada setiap boundary service dapat mengubah budget caller yang singkat menjadi rangkaian work yang jauh lebih lama. Client mungkin memberi waktu 800 milidetik, service A menghabiskan 500 milidetik untuk proses lokal, lalu memanggil service B dengan timeout baru sebesar 800 milidetik. B dapat terus bekerja lama setelah client berhenti menunggu. Propagasi deadline mempertahankan satu waktu akhir pada request. Setiap hop menghitung sisa budget dari deadline tersebut dan tidak memulai work yang tidak lagi muat di dalamnya. Mekanisme ini tidak otomatis membuat eksekusi lebih cepat. Hasil utamanya adalah eksekusi terbatas yang mematuhi kontrak waktu dari upstream.

Rekayasa Perangkat Lunak 21 Sep 2026 6 min read

Fencing Token Menghentikan Write dari Pemegang Lease yang Sudah Stale

Fencing Token Menghentikan Write dari Pemegang Lease yang Sudah Stale Distributed lease dapat menentukan client yang saat ini memiliki sebuah resource, tetapi lease yang kedaluwarsa tidak langsung menghentikan pemegang sebelumnya. Sebuah process dapat pause, kehilangan akses network, atau macet cukup lama sampai lease-nya habis. Client lain kemudian memperoleh lease. Jika process lama kembali berjalan dan masih memiliki akses ke storage atau service yang dilindungi, kedua client dapat mengirim write. Lease manager sudah memindahkan ownership, tetapi resource yang dilindungi tidak memiliki dasar untuk membedakan holder saat ini dari holder yang stale. Fencing token menutup celah tersebut dengan menyertakan nomor generation yang terurut pada setiap acquisition yang berhasil. Resource hanya menerima operasi ketika token-nya setidaknya sama baru dengan token terbesar yang pernah diterima.

Rekayasa Perangkat Lunak 21 Sep 2026 6 min read

Circuit Breaker Membatasi Kegagalan Berantai

Circuit Breaker Membatasi Kegagalan Berantai Dependency yang lambat atau gagal dapat menghabiskan kapasitas di luar komponen itu sendiri. Caller menunggu, melakukan retry, menahan socket, memakai worker slot, dan mempertahankan memory selama request belum selesai. Saat tekanan merambat ke upstream, gangguan lokal dapat berubah menjadi saturasi pada seluruh service. Circuit breaker menempatkan gate berstate di sekitar call menuju dependency tersebut. Breaker mengamati outcome, masuk ke state open ketika kebijakan failure terpenuhi, menolak call selama periode tertentu, lalu mengizinkan sejumlah kecil probe. Probe yang berhasil dapat mengembalikan breaker ke traffic normal; probe yang gagal mengembalikannya ke state open.

Rekayasa Perangkat Lunak 21 Sep 2026 6 min read

Bulkhead Mengisolasi Concurrency Antar-Failure Domain

Bulkhead Mengisolasi Concurrency Antar-Failure Domain Sebuah service dapat tetap dapat diakses ketika kapasitas bergunanya sudah habis. Dependency yang lambat menahan request, request tersebut memakai worker atau connection slot, lalu traffic lain menunggu di belakang pekerjaan yang tidak dapat segera selesai. Fault bermula pada satu jalur, tetapi resource pool bersama membuatnya menghabiskan kapasitas yang dibutuhkan semua jalur. Isolasi bulkhead membagi kapasitas terbatas tersebut. Call yang terkait dengan satu failure domain memperoleh bagian yang dibatasi, bukan bersaing tanpa pemisahan untuk seluruh pool. Ketika satu partisi penuh, admission gagal atau menunggu di dalam partisi itu sementara kapasitas untuk pekerjaan lain tetap tersedia.

Rekayasa Perangkat Lunak 21 Sep 2026 5 min read

Bounded Queue Mengubah Overload Menjadi Backpressure yang Eksplisit

Bounded Queue Mengubah Overload Menjadi Backpressure yang Eksplisit Queue dapat menyerap perbedaan singkat antara arrival rate dan processing rate. Buffer semacam ini berguna ketika lonjakan hanya berlangsung sementara. Risikonya muncul saat queue tidak memiliki batas yang bermakna: overload berkepanjangan tidak terlihat sebagai kegagalan admission, melainkan sebagai backlog yang terus tumbuh, konsumsi memori yang meningkat, dan request yang selesai setelah latency budget-nya lewat. Bounded queue mengubah kontrak tersebut. Setelah kapasitas habis, producer harus menunggu, menerima penolakan, membuang work tertentu, atau mengarahkannya ke tempat lain. Overload tidak lagi tersembunyi di dalam buffer yang terus membesar.

Komputasi Awan 04 Sep 2026 10 min read

Rancang Dead-Letter Queue untuk Poison Message

Retry berguna ketika kegagalan bersifat sementara. Database mungkin tidak tersedia selama beberapa detik, service downstream dapat mengembalikan respons overload, atau koneksi jaringan dapat terputus lalu pulih. Retry menjadi merugikan ketika pesan itu sendiri memang tidak mungkin berhasil. Payload yang malformed, versi schema yang tidak didukung, referensi ke data yang hilang secara permanen, atau bug aplikasi yang deterministik dapat membuat pesan yang sama gagal pada setiap delivery. Jika broker terus mengembalikan pesan itu kepada consumer tanpa batas, sistem menghabiskan kapasitas untuk mengulang pekerjaan yang tidak punya peluang berhasil.

Komputasi Awan 02 Sep 2026 5 min read

Graceful Shutdown dan Connection Draining untuk Cloud Service

Cloud service dihentikan secara rutin: deployment mengganti instance, autoscaler mengurangi kapasitas, host reboot, dan scheduler menjadwalkan ulang workload. Jika proses langsung keluar ketika menerima termination signal, request yang sedang berjalan dapat gagal meskipun service sebenarnya sehat. Graceful shutdown adalah protokol lifecycle kecil: berhenti menerima pekerjaan baru, biarkan pekerjaan berguna yang sudah berjalan selesai dalam suatu deadline, lalu lepaskan resource dan keluar. Pisahkan readiness dari kesehatan proses Proses yang sedang shutdown mungkin masih hidup, tetapi seharusnya tidak lagi menerima traffic baru.