Pengenalan Microservices Resilience Pattern
Oleh Muhammad Mi’raj & Ahmad Nurul Fajar
Dalam mendesain suatu aplikasi haruslah robust maksudnya disini adalah aplikasi yang di desain harus bisa mengatasi jika nantinya terjadi kegagalan. Maksudnya kegagalan disini lebih kepada kegagalan di dalam komunikasi antar microservice. Berurusan dengan kegagalan komunikasi antar microservice adalah salah satu masalah tersulit untuk dipecahkan, terutama dalam sistem terdistribusi.
Bagian penting dari membangun sistem yang resilience, terutama ketika fungsionalitas tersebar di sejumlah microservice berbeda yang mungkin ada beberapa microservice yang sedang mengalami up maupun down, ini adalah kemampuan untuk dalam menurunkan fungsionalitas dengan cara yang aman (Newman 2015). Ada beberapa pola, yang secara kolektif sebagai langkah-langkah keamanan arsitektur, yang dapat digunakan untuk memastikan bahwa jika terjadi kesalahan, itu tidak menyebabkan masalah yang berkepanjangan.
- Circuit Beaker Pattern
Circuit Breaker berasal dari perangkat elektronik atau yang sering disebut sakelar yang bertujuan untuk melakukan pemutusan arus listrik, pemutus sirkuit itu adalah sakelar yang melindungi komponen dari kerusakan akibat kelebihan beban. Dalam perangkat lunak, pemutus arus melindungi service dari spam sementara ketika service lain sudah tidak tersedia karena beban tinggi (Bernhardt 2016)
- Bulkhead Pattern
Bulkhead pattern diambil dalam istilah arsitektur sekat atau lambung kapal, jika lambung kapal mengalami kerusakan, hanya bagian yang rusak saja yang terisi air bagian yang tidak rusak aman dari kebocoran, sehingga kapal tidak tenggelam. Dalam perangkat lunak proses bulkhead pattern adalah dengan cara elemen aplikasi diisolasi ke dalam kumpulan sehingga jika salah satunya gagal, yang lainnya akan terus berfungsi (Hofmann, Schnabel, and Stanley 2016).
Implementasi paling sederhana dari bulkhead pattern adalah menyediakan fallback, menambahkan fallback memungkinkan aplikasi untuk terus berfungsi saat service non-vital tidak berfungsi
- Timeout Pattern
Timeout Pattern adalah pola untuk menetapkan batas jumlah waktu yang tersedia ketika menunggu operasi selesai. Jika operasi tidak selesai dalam waktu yang telah ditentukan, maka service akan mendapat mendapat informasi bahwa operasi tersebut telah melewati batas waktu atau sering dikenal timeout exception
Saat membuat permintaan ke microservice lain, baik secara asynchronous atau tidak, permintaan tersebut harus memiliki batas waktu. Karena microsevice mengharapkan response gagal atau tidak dan tidak harus menunggu reponse tersebut tanpa ada batasan waktu (Hofmann, Schnabel, and Stanley 2016)
- Retry Pattern
Retry Pattern adalah pola untuk melakukan pengulangan ketika mengalami kegagalan. Ketika service memberikan respons yang tidak terduga atau bahkan tidak merespons dalam pola ini berusaha memperbaiki dengan cara mengirim dan melakukan permintaan kembali.
Daftar Pustaka
Bernhardt, Manuel. 2016. Reactive Web Applications.
Hofmann, Michael, Erin Schnabel, and Katherine Stanley. 2016. Microservices Best Practices for Java.
Newman, Sam. 2015. Building Microservices – Chapter 1, 4 and 11. Building Microservices.