Рет қаралды 201
Circuit Breaker
#backend #backendmagang #go #golang #circuitbreaker
Untuk clone ada pada repo GitHub saya pada branch circuit-breaker :
" github.com/medivh13/for_learning"
*ps : hilangkan spasi
Circuit Breaker adalah sebuah pola desain perangkat lunak yang digunakan untuk meningkatkan ketahanan dan keandalan sistem dengan mengelola akses ke suatu layanan atau komponen eksternal yang mungkin mengalami kegagalan.
Fungsinya adalah untuk mencegah sistem terus melakukan permintaan ke layanan yang sedang bermasalah atau mengalami kegagalan berulang, sehingga melindungi sistem secara keseluruhan dari pengaruh buruk yang dapat disebabkan oleh kegagalan tersebut.
Fungsi Circuit Breaker:
* Pencegahan Overload:
* Mencegah sistem dari pengiriman terus-menerus permintaan ke layanan yang mungkin sedang mengalami kegagalan atau memiliki kinerja yang buruk. Ini membantu mencegah beban yang berlebihan pada layanan dan menghindari kelebihan beban.
* Meningkatkan Responsivitas:
* Memberikan respons yang lebih cepat kepada pengguna atau aplikasi saat layanan yang diakses mengalami masalah. Dengan cepat membuka sirkuit, Circuit Breaker dapat memberikan respons darurat atau fallback tanpa menunggu lama.
* Penghindaran Kegagalan Berulang:
* Mengidentifikasi kegagalan yang berulang di layanan target dan mencegah sistem mengalami kegagalan akibat permintaan yang gagal.
* Pemulihan Otomatis:
* Memberikan mekanisme otomatis untuk mencoba memulihkan layanan yang mengalami kegagalan. Setelah sirkuit dibuka, Circuit Breaker dapat mencoba untuk menutupnya setelah beberapa waktu, memberi kesempatan kepada layanan untuk pulih.
* Monitoring dan Kontrol:
* Memberikan pengawasan dan kontrol atas akses ke layanan eksternal. Dengan adanya Circuit Breaker, Anda dapat melacak kinerja dan kegagalan layanan, serta mengatur batas-batas yang memicu pembukaan dan penutupan sirkuit.
Kapan Menggunakan Circuit Breaker:
* Akses ke Layanan Eksternal:
* Khususnya berguna saat aplikasi Anda mengakses layanan eksternal, seperti API pihak ketiga atau mikroservis.
* Ketersediaan Kritis:
* Penting saat ketersediaan dan keandalan layanan sangat kritis untuk aplikasi Anda.
* Ketahanan terhadap Kegagalan:
* Diperlukan untuk meningkatkan ketahanan sistem terhadap kegagalan layanan dan meminimalkan dampak negatif yang mungkin terjadi.
* Pengelolaan Kinerja dan Beban:
* Berguna untuk mengelola kinerja dan beban akses ke layanan, mencegah terjadinya overloading yang dapat menyebabkan masalah lebih lanjut.
* Pemulihan Otomatis:
* Diperlukan untuk memberikan kemampuan pemulihan otomatis terhadap layanan yang mengalami masalah.
* Monitoring dan Kontrol:
* Diperlukan untuk memantau dan mengontrol akses ke layanan serta memahami perilaku dan kinerjanya.