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