Design For Robust dalam Microservice
Design For Robust
yoo!!! kali ini kita akan BELAJAR BERSAMA mengenai Design For Robust dalam microservice, setelah mengetahui apa itu microservice, kita juga harus mengetahui hal lainnya yang diperlukan dalam membangun suatu microservice, salah satunya adalah Design For Robust, lalu apa itu Design For Robust ???
Apa Itu Design For Robust???
Dalam mendesain suatu aplikasi haruslah robust
maksudnya disini adalah aplikasi yang di desain harus bisa mengatasi jika nantinya terjadi
kegagalan. Kegagalan disini lebih kepada kegagalan di dalam komunikasi antar
client dan server.
agar lebih mudah dipahami, silahkan perhatikan gambar berikut :
Seperti yang terlihat pada gambar di atas. Setiap
microservice berkomunikasi dengan microservice lainnya. Jika salah satu
microservice tidak dapat menerima request dari client dan client tersebut tidak
dapat mengatasi masalah tersebut maka akan menyebabkan microservice tersebut
stress karena mengirim request namun tidak di response oleh microservice tujuan
dan karna microservice ini stress karna tidak mendapat response bisa
menyebabkan microservice lainnya yang mengirim request ke microservice yang
stress jadi stress jg dan begitu seterusnya. Oleh karena itu client harus bisa
mengatasi hal ini sehingga kegagalan yang terjadi tidak menyebar ke
microservice lainnya. Ada beberapa patern yang bisa di terapkan untuk mengatasi
hal ini yaitu :
- Patern Retry
- Patern Ciruit Breaker
kedua patern tersebut banyak digunakan dalam menangani kegagalan request,
1. Patern Retry
Konsep dari patern retry cukup sederhana
yaitu dengan mengirim ulang request yang sama seperti sebelumnya. Namun perlu
di perhatikan bahwa dalam menggunakan patern retry harus ada delay yang di
lakukan sebelum mengirim ulang request tersebut. Karna mungkin saja request
gagal karna server sedang menangani banyak sekali request sehingga langsung
mengirim request lagi bukan menyelesaikan masalah malah menambah beban si
server. Untuk itu dalam menggunakan patern retry setidaknya harus memperhatikan
2 hal berikut yaitu berapa kali harus mengirim request dan interval waktu
pengiriman dari request yang gagal dan selanjutnya harus lebih lama.
konsep Patern Retry |
2. Patern Circuit Breaker
Patern dari circuit breaker memiliki cara
yang sedikit berbeda dengan retry. Pada patern circuit breaker , client akan
mencoba mengirim beberapa request yang berbeda kepada server. Ketika
request-request tersebut gagal dalam satu waktu. Maka request selanjutnya tidak
akan dikirim lagi dan langsung menganggap bahwa request tersebut juga akan
gagal.
Konsep Patern Circuit Breaker |
Patern circuit breaker merupakan sebuah
state mechine yang memiliki 3 state berbeda yaitu closed, open dan half open.
Pada saat state berada pada posisi closed maka client akan mengirimkan request
seperti biasa dan jika request gagal maka perhitungan jumlah gagalnya akan
bertambah. Jita request gagal sudah melebihi batas yang di tentukan selanjutnya
state akan berubah menjadi open dimana pada kondisi ini client tidak akan
mengirim request sama sekali hingga waktu yang di tentukan. Setelah itu state
akan berubah ke state half open dimana jika request gagal maka state akan
kembali ke dalam state open dan jika berhasil maka state akan kembali ke state
closed dan mereset jumlah request yang gagal sebelumnya.
Cache
Salah satu penyebab gagalnya komunikasi
antar microservice bisa di sebabkan oleh banyaknya request yang di kirim ke
server tersebut sehingga membuat servernya stress dan akhirnya down. Salah satu
cara untuk mengurangi banyaknya request ke server adalah dengan cara cache.
Dengan menggunakan cache maka pada saat client melakukan request ke server,
respon dari server akan di simpan di dalam cache client untuk beberapa waktu,
sehingga jika client akan melakukan request yang sama maka client tidak perlu
lagi melakukan request ke server cukup dengan mengambilnya dari cache. Dengan begitu
client dapat mengurangi request agar server tidak stress.
Cahce |
itulah ulasan mengenai design for robust yang bang madara dapat jelaskan
terimakasih telah mengunjungi blog BELAJAR BERSAMA, nantikan ulasan menarik lainnya
"MARI BELAJAR, BELAJAR BERSAMA!!!"
artikel terkait :
Comments
Post a Comment