1. Apa itu Arsitektur Microservices?
Microservices Architecture adalah gaya arsitektur sistem di mana aplikasi terdiri dari kumpulan layanan (services) yang berukuran kecil, terisolasi, dapat di-deploy secara independen, dan memiliki batas konteks (bounded context) yang jelas.
๐ก Karakteristik Utama Microservices:
- Autonomous & Independent: Setiap service dapat di-build, di-test, dan di-deploy tanpa mengganggu service lainnya.
- Single Responsibility: Setiap service hanya menangani satu domain bisnis spesifik (misal: Order Service, Payment Service, Notification Service).
- Polyglot Technology: Bebas memilih bahasa pemrograman, framework, dan jenis database yang paling sesuai untuk tiap service.
- Decoupled Data: Setiap service mengelola database miliknya sendiri tanpa mengizinkan akses tabel langsung dari service lain.
2. Mengapa Perusahaan Mengadopsi Microservices?
- Organisasional (Conway's Law): Struktur aplikasi mencerminkan struktur tim. Tim kecil (2-Pizza Team) dapat bekerja secara independen pada service masing-masing.
- Scalability Efisien: Hanya me-scale bagian service yang mengalami lonjakan trafik (misal: me-scale Payment Service saat Harbolnas, tanpa me-scale Notification Service).
- Resilience (Isolasi Kegagalan): Jika satu service mengalami crash (misal Recommendation Service error), aplikasi utama (katalog & checkout) tetap dapat beroperasi normal.
3. Tantangan Nyata Microservices
Meskipun memiliki banyak keunggulan, Microservices membawa kompleksitas terdistribusi:
- Latensi jaringan saat inter-service communication (Network Latency).
- Konsistensi data terdistribusi (Distributed Transactions & Eventual Consistency).
- Kompleksitas Observability (Distributed Tracing, Centralized Logging).