Microservices Terms
Istilah
Penjelasan
Mengapa Penting
Contoh Teknologi/Alat
Catatan Praktis
Service Discovery
Mekanisme untuk menemukan alamat (IP/port) service lain secara otomatis.
Service di environment dinamis (contoh: container) sering berubah alamat.
Consul, Eureka, Kubernetes DNS, Zookeeper
Pastikan service discovery mendukung health check untuk menghindari service "zombie".
API Gateway
Pintu masuk tunggal untuk request client ke microservices.
Menyederhanakan routing, otentikasi, logging, dan load balancing.
Kong, NGINX, AWS API Gateway, Istio Gateway
Hindari API Gateway jadi bottleneck; skalakan secara horizontal.
Load Balancing
Distribusi beban request ke beberapa instance service.
Mencegah server overload dan meningkatkan availability.
NGINX, Envoy, HAProxy, AWS ALB
Pilih algoritma load balancing (round-robin, least connection) sesuai kebutuhan.
Circuit Breaker
Pola untuk menghentikan request ke service yang gagal berulang kali.
Mencegah efek domino kegagalan di sistem.
Resilience4j, Hystrix, Istio
Atur threshold kegagalan dengan cermat agar tidak terlalu agresif atau lambat.
Retry Pattern
Mencoba ulang request yang gagal karena masalah sementara (transient failure).
Mengatasi error jaringan atau service yang sementara down.
Built-in di library seperti Spring Retry
Selalu kombinasikan dengan exponential backoff untuk menghindari banjir request.
Exponential Backoff
Strategi retry dengan jeda yang semakin lama setiap percobaan gagal.
Mengurangi beban server saat error dan mencegah DoS tak sengaja.
Implementasi di SDK seperti AWS SDK, gRPC
Gunakan batas maksimum retry agar tidak berulang tanpa henti.
Rate Limiting
Membatasi jumlah request per user/IP dalam periode tertentu.
Melindungi dari spam, abuse, atau serangan DDoS.
Token Bucket, Leaky Bucket, Redis-based limiter
Atur limit sesuai kapasitas server dan pola penggunaan aplikasi.
Bulkhead Pattern
Memisahkan resource (thread, connection pool) antar service untuk isolasi.
Mencegah kegagalan satu service memengaruhi yang lain.
Resilience4j, Istio, thread pool isolation
Cocok untuk sistem dengan banyak service yang saling bergantung.
Saga Pattern
Pola untuk mengelola transaksi terdistribusi di microservices.
Tidak ada transaksi ACID lintas service; saga memastikan konsistensi.
Choreography (Kafka), Orchestration (Camunda)
Choreography lebih scalable, orchestration lebih mudah di-debug.
Event-Driven Architecture
Service berkomunikasi via event (pesan) bukan request langsung.
Mendukung loose coupling dan pemrosesan asinkronus.
Kafka, RabbitMQ, NATS, AWS SNS/SQS
Pastikan event idempotent untuk menghindari duplikasi pemrosesan.
Idempotency
Operasi yang menghasilkan efek sama meski dijalankan berulang kali.
Mencegah efek ganda saat retry atau duplikasi request.
Idempotency key di payment gateway
Gunakan unique key untuk setiap operasi kritis (contoh: pembayaran).
Service Mesh
Layer untuk mengatur komunikasi antar service (security, observability, dll).
Menyederhanakan pengelolaan komunikasi tanpa ubah kode aplikasi.
Istio, Linkerd, Consul Connect
Membutuhkan resource tambahan; pertimbangkan overhead di sistem kecil.
Sidecar Pattern
Container tambahan di samping container utama untuk fungsi tambahan.
Menambahkan fitur seperti logging, proxy, tanpa ubah kode aplikasi.
Envoy (Istio), Dapr sidecar
Pastikan sidecar ringan agar tidak membebani pod/container.
Canary Deployment
Merilis versi baru ke sebagian kecil pengguna untuk pengujian.
Mengurangi risiko bug atau error saat deployment.
Kubernetes, Istio, Spinnaker
Monitor metrik performa selama canary untuk deteksi dini masalah.
Blue-Green Deployment
Dua lingkungan identik (blue & green); switch traffic ke versi baru.
Memastikan zero downtime saat deployment.
Kubernetes, AWS ECS, Spinnaker
Siapkan rollback plan jika versi baru bermasalah.
Distributed Tracing
Melacak perjalanan request lintas banyak service untuk debugging.
Membantu identifikasi bottleneck atau error di sistem terdistribusi.
Jaeger, Zipkin, OpenTelemetry
Integrasikan dengan logging untuk visibilitas maksimal.
Health Check
Endpoint/mekanisme untuk memeriksa status kesehatan service.
Mendukung monitoring dan auto-recovery (contoh: restart pod di Kubernetes).
/health endpoint, Kubernetes liveness probe
Pastikan health check mencakup dependensi eksternal (DB, API).
Graceful Shutdown
Mematikan service dengan menyelesaikan request aktif terlebih dulu.
Mencegah data corruption atau kehilangan request.
SIGTERM handling di aplikasi
Atur timeout shutdown agar tidak terlalu lama menunggu.
Fault Tolerance
Kemampuan sistem tetap berjalan meski ada komponen yang gagal.
Memastikan high availability di sistem terdistribusi.
Circuit breaker, retry, bulkhead
Uji skenario kegagalan (chaos engineering) untuk validasi.
Configuration Management
Mengelola konfigurasi service secara terpusat dan dinamis.
Memudahkan update konfigurasi tanpa redeploy.
Spring Cloud Config, Consul, AWS SSM
Gunakan enkripsi untuk konfigurasi sensitif (contoh: API key).
Feature Toggle/Flag
Menghidupkan/mematikan fitur tanpa redeploy aplikasi.
Memungkinkan pengujian fitur baru secara bertahap.
LaunchDarkly, Unleash, Flagger
Hindari terlalu banyak flag agar kode tetap maintainable.
Kill Switch
Mekanisme untuk mematikan service/fitur secara instan di kondisi darurat.
Menghentikan dampak bug kritis atau serangan keamanan.
Custom toggle di kode, API Gateway rule
Siapkan logging untuk mencatat alasan aktivasi kill switch.
CQRS (Command Query Responsibility Segregation)
Memisahkan operasi tulis (command) dan baca (query) ke model berbeda.
Mengoptimalkan performa baca/tulis di sistem kompleks.
Event Sourcing, Kafka, Axon Framework
Cocok untuk aplikasi dengan kebutuhan baca/tulis yang berbeda drastis.
Event Sourcing
Menyimpan semua perubahan state sebagai urutan event, bukan state akhir.
Memungkinkan audit trail dan rebuild state dari event.
Kafka, EventStoreDB
Butuh desain cermat untuk menangani replay event dan konsistensi.
Outbox Pattern
Menyimpan event di database lokal sebelum dikirim ke message broker.
Memastikan event tidak hilang meski ada kegagalan pengiriman.
Debezium, Transactional Outbox
Cocok untuk integrasi database dengan event-driven system.
Strangler Fig Pattern
Mengganti sistem monolith secara bertahap dengan microservices.
Mengurangi risiko migrasi dari monolith ke microservices.
API Gateway, feature toggle
Prioritaskan modul yang paling mudah dipisah dari monolith.
Backpressure
Mekanisme untuk mengontrol aliran data saat konsumen tidak mampu menangani.
Mencegah overload pada service yang lambat.
Reactive Streams, Kafka consumer limits
Terapkan di sistem dengan throughput tinggi untuk stabilitas.
Last updated