Microservices (atau arsitektur mikroservis) adalah pendekatan dalam pengembangan perangkat lunak di mana sebuah aplikasi besar dibagi menjadi komponen-komponen kecil (disebut layanan atau servis) yang bekerja secara independen namun saling berkomunikasi.
Konsep Utama Microservices
-
Setiap layanan (service) menangani fungsi tertentu dalam aplikasi (misalnya, otentikasi, pembayaran, notifikasi).
-
Masing-masing layanan:
-
Dapat dikembangkan, diuji, di-deploy, dan diskalakan secara terpisah.
-
Berkomunikasi lewat API, biasanya menggunakan HTTP (REST API) atau pesan antrian (seperti Kafka, RabbitMQ).
-
Contoh Sederhana:
Bayangkan aplikasi e-commerce. Dalam arsitektur microservicess, aplikasinya bisa dibagi menjadi:
-
User Service → menangani registrasi & login
-
Product Service → mengelola daftar produk
-
Order Service → menangani pesanan
-
Payment Service → memproses pembayaran
-
Notification Service → mengirim email atau notifikasi
Mereka tidak tergabung jadi satu aplikasi besar (monolith), tapi berdiri sendiri dan saling berkomunikasi.
Kelebihan Microservices:
- Mudah diskalakan (misalnya hanya service pembayaran yang diperbanyak jika ramai)
- Tim bisa bekerja paralel di bagian berbeda
- Lebih tangguh – jika satu layanan gagal, tidak selalu merusak sistem lain
- Memudahkan adopsi teknologi berbeda (misal satu service pakai Python, yang lain pakai Go)
Kekurangan Microservices:
- Kompleksitas komunikasi antar layanan
- Butuh sistem monitoring & logging yang baik
- Deployment dan testing lebih rumit dibanding sistem monolitik
- Ketergantungan pada jaringan → latensi bisa jadi isu
Microservices vs Monolith
| Fitur | Monolith | Microservices |
|---|---|---|
| Ukuran aplikasi | Satu kesatuan besar | Kumpulan service kecil |
| Deployment | Sekali deploy semua | Tiap service bisa di-deploy sendiri |
| Skalabilitas | Sulit (harus seluruh aplikasi) | Lebih fleksibel |
| Toleransi kesalahan | Rentan (satu error bisa jatuhkan semuanya) | Lebih tahan jika dirancang dengan baik |

