

# REL05-BP04 Melakukan gagal cepat (fail fast) dan membatasi antrean
<a name="rel_mitigate_interaction_failure_fail_fast"></a>

 Jika beban kerja tidak berhasil merespons permintaan, maka lakukan gagal cepat (fail fast). Ini memungkinkan pelepasan sumber daya yang terkait dengan permintaan, dan mengizinkan layanan untuk melakukan pemulihan jika kehabisan sumber daya. Jika beban kerja berhasil merespons tetapi tingkat permintaan terlalu tinggi, maka gunakan antrean untuk menahan permintaan. Namun, jangan izinkan antrean panjang yang dapat mengakibatkan pelayanan permintaan basi yang telah ditinggalkan klien. 

 Praktik terbaik ini berlaku untuk sisi server, atau penerima permintaan. 

 Ketahuilah bahwa antrean dapat dibuat di berbagai tingkat sistem, dan dapat sangat menghambat kemampuan untuk melakukan pemulihan dengan cepat saat permintaan lama dan basi (yang tidak lagi memerlukan respons) diproses sebelum permintaan baru. Waspadai tempat-tempat di mana terdapat antrean. Antrean sering bersembunyi di alur kerja atau di dalam pekerjaan yang direkam di basis data. 

 **Tingkat risiko yang terjadi jika praktik terbaik ini tidak dijalankan:** Tinggi 

## Panduan implementasi
<a name="implementation-guidance"></a>
+  Lakukan gagal cepat (fail fast) dan batasi antrean Jika beban kerja tidak berhasil merespons permintaan, maka lakukan gagal cepat (fail fast). Ini memungkinkan pelepasan sumber daya yang terkait dengan permintaan, dan mengizinkan layanan untuk melakukan pemulihan jika kehabisan sumber daya. Jika beban kerja berhasil merespons tetapi tingkat permintaan terlalu tinggi, maka gunakan antrean untuk menahan permintaan. Namun, jangan izinkan antrean panjang yang dapat mengakibatkan pelayanan permintaan basi yang telah ditinggalkan klien. 
  +  Implementasikan gagal cepat (fail fast) saat layanan berada di bawah tekanan. 
    +  [Gagal Cepat (fail Fast)](https://www.martinfowler.com/ieeeSoftware/failFast.pdf) 
  +  Batasi antrean dalam sistem berbasis antrean, saat pemrosesan berhenti tetapi pesan tetap datang, utang pesan dapat terakumulasi menjadi backlog yang besar, sehingga meningkatkan waktu pemrosesan. Pekerjaan dapat diselesaikan lebih lama supaya hasilnya berguna, yang pada dasarnya menyebabkan ketersediaan hit yang seharusnya dijaga antreannya. 
    +  [Amazon Builders' Library: Menghindari backlog antrean yang tidak dapat diatasi](https://aws.amazon.com/builders-library/avoiding-insurmountable-queue-backlogs) 

## Sumber daya
<a name="resources"></a>

 **Dokumen terkait:** 
+  [Percobaan Ulang Kesalahan dan Mundur Eksponensial di AWS](https://docs.aws.amazon.com/general/latest/gr/api-retries.html) 
+  [Gagal Cepat (fail Fast)](https://www.martinfowler.com/ieeeSoftware/failFast.pdf) 
+  [Amazon Builders' Library: Menghindari fallback dalam sistem terdistribusi](https://aws.amazon.com/builders-library/avoiding-fallback-in-distributed-systems) 
+  [Amazon Builders' Library: Menghindari backlog antrean yang tidak dapat diatasi](https://aws.amazon.com/builders-library/avoiding-insurmountable-queue-backlogs) 
+  [Amazon Builders' Library: Tantangan dan strategi caching](https://aws.amazon.com/builders-library/caching-challenges-and-strategies/) 
+  [Amazon Builders' Library: Waktu habis, percobaan ulang, dan mundur dengan jitter](https://aws.amazon.com/builders-library/timeouts-retries-and-backoff-with-jitter/) 

 **Video terkait:** 
+  [Percobaan ulang, mundur, dan jitter: AWS re:Invent 2019: Memperkenalkan Amazon Builders’ Library (DOP328)](https://youtu.be/sKRdemSirDM?t=1884) 