Halo Sobat IT!
Dalam sistem modern, khususnya yang berbasis microservices, sebuah aplikasi jarang berdiri sendiri. Biasanya, satu service akan bergantung pada service lain mulai dari database, API eksternal, hingga layanan pihak ketiga. Masalahnya, bagaimana jika salah satu service tersebut gagal? Tanpa mekanisme perlindungan, kegagalan kecil bisa menyebar dan menyebabkan seluruh sistem ikut tumbang. Di sinilah Circuit Breaker Pattern berperan penting.
Apa Itu Circuit Breaker Pattern?
Circuit Breaker Pattern adalah pola desain dalam software engineering yang digunakan untuk mencegah sistem terus mencoba request ke layanan yang sedang gagal.
Konsepnya mirip dengan sekring listrik:
- Jika terjadi gangguan, arus akan diputus sementara
- Setelah kondisi stabil, arus akan kembali normal
Dalam sistem IT, circuit breaker akan:
- Menghentikan request sementara ke service yang bermasalah
- Mencegah overload
- Memberi waktu untuk recovery
Mengapa Circuit Breaker Itu Penting?
- Mencegah Efek Domino (Cascade Failure)
Jika satu service gagal dan tetap dipanggil terus-menerus:- Server akan overload
- Resource habis
- Service lain ikut terdampak
Circuit breaker menghentikan rantai kegagalan ini.
- Mengurangi Latency
Tanpa circuit breaker, sistem akan terus menunggu response dari service yang lambat atau down. Dengan circuit breaker:- Request langsung ditolak lebih cepat
- Sistem tetap responsif
- Meningkatkan Stabilitas Sistem
Sistem tetap bisa berjalan meskipun ada komponen yang gagal.
Cara Kerja Circuit Breaker
Circuit breaker memiliki tiga state utama:
- Closed (Normal)
- Semua request berjalan normal
- Sistem memonitor apakah terjadi error
- Open (Terputus)
- Jika error melebihi threshold
- Semua request ke service langsung ditolak
- Tidak ada percobaan koneksi
- Half-Open (Percobaan)
- Setelah beberapa waktu
- Sistem mencoba beberapa request
- Jika berhasil akan kembali ke Closed
- Jika gagal akan kembali ke Open
Contoh di Dunia Nyata
Circuit breaker banyak digunakan di:
- Sistem e-commerce
- Layanan pembayaran
- API eksternal (misalnya cuaca, maps)
- Microservices architecture
Contoh kasus:
Jika API pembayaran down, sistem tidak terus mencoba, tetapi langsung memberikan respon fallback seperti "Coba lagi nanti".
Best Practice
- Gunakan Fallback
Berikan alternatif seperti:- Data cache
- Pesan error yang jelas
- Tentukan Threshold yang Tepat
- Terlalu sensitif - sering memutus
- Terlalu longgar - tidak efektif
- Kombinasikan dengan Retry
Gunakan retry dengan batas tertentu sebelum circuit breaker aktif. - Monitoring
Pantau:- Jumlah error
- Latency
- State circuit breaker
Tantangan dalam Implementasi
- Menentukan konfigurasi yang optimal
- Menangani distributed system
- Memastikan fallback tetap berguna
- Sinkronisasi antar service
Penutup
Circuit Breaker Pattern bukan hanya solusi teknis, tetapi strategi untuk menjaga sistem tetap stabil di tengah kegagalan. Dalam dunia nyata, kegagalan itu pasti terjadi. Yang membedakan sistem yang baik adalah: bagaimana sistem tersebut merespons kegagalan. Jadi, Sobat IT apakah sistem-mu sudah siap menghadapi kegagalan tanpa ikut tumbang?