Microservice Resilience Pattern – Circuit Breaker

Muhammad Mi’raj & Ahmad Nurul Fajar

Dalam sistem terdistribusi, komunikasi antar service sangat penting. microservices yang terbentuk pada aplikasi harus bekerja sama dengan mulus untuk memberikan nilai kepada klien.

penulisan mencakup komunikasi antara service yang berbeda dalam arsitektur microservice. Deskripsi ini mencakup komunikasi synchronous dan asynchronous, dan cara mencapai ketahanan (Hofmann, Schnabel, and Stanley 2016).

 

            Synchronous communication adalah permintaan yang membutuhkan tanggapan, apakah itu segera atau setelah beberapa waktu, Ini biasanya menggunakan operasi RESTful yang menggunakan data berformat JSON, tetapi protokol dan format data lain dimungkinkan.

 

Asynchronous communication adalah pesan yang tidak memerlukan respons. Event adalah cara terbaik untuk menyusun pola interaksi baru tanpa menimbulkan ketergantungan. Untuk mengoordinasikan pengiriman pesan microsevice, dapat menggunakan salah satu broker messaging yang tersedia seperti RabbitMQ, Apache Kafka dsb.

 

Salah satu alasan kuat untuk pindah ke arsitektur microservice adalah untuk mendapatkan aplikasi yang lebih toleran terhadap kesalahan dan tangguh. Aplikasi modern diharuskan memiliki waktu henti hampir nol dan menanggapi permintaan dalam hitungan detik, bukan menit. Setiap service individu dalam microservice harus dapat terus berfungsi bahkan jika layanan lain telah mati. Bagian ini berfokus pada teknik dan alat yang harus Anda gunakan saat berkomunikasi dengan layanan mikro lain untuk membuat layanan mikro Anda toleran dan tangguh terhadap kesalahan. Maka hadir resilience pattern untuk menyelesaikan ketika terjadi kesalahan dalam berkomunikasi antar microservice salah satu pattern tersebut adalah circuit breaker.

 

Circuit Breaker dirancang untuk menghindari waktu tunggu yang berulang. Ia bekerja dengan cara yang mirip dengan versi elektronik dengan nama yang sama. Pemutus sirkuit membuat catatan setiap kali permintaan tertentu gagal atau menghasilkan batas waktu. Jika jumlah ini mencapai tingkat tertentu, ini mencegah panggilan lebih lanjut terjadi, alih-alih mengembalikan kesalahan secara instan. Ini juga menggabungkan mekanisme untuk mencoba kembali panggilan, baik setelah jangka waktu tertentu atau sebagai reaksi terhadap suatu peristiwa (Hofmann, Schnabel, and Stanley 2016).

 

Daftar Isi:

Hofmann, Michael, Erin Schnabel, and Katherine Stanley. 2016. Microservices Best Practices for Java.