Saturation #
Dalam dunia software engineering, banyak sistem gagal bukan karena bug logika, melainkan karena saturation. Saturation terjadi ketika suatu komponen sistem mencapai atau melampaui kapasitas maksimum yang bisa ditanganinya, sehingga performa menurun drastis, error meningkat, atau sistem benar-benar down.
Artikel ini merupakan versi lanjutan dan diperluas, membahas 20+ jenis saturation, dilengkapi dengan:
- Decision tree: saturation → mitigasi
- Cheatsheet deteksi saturation berbasis metrics
Apa Itu Saturation? #
Saturation adalah kondisi ketika suatu resource tidak mampu lagi memproses tambahan beban, meskipun sistem masih menerima request.
“The system is alive, but it cannot breathe.”
Saturation ≠ bottleneck murni. Bottleneck bisa stabil, saturation bersifat krisis.
Kategori Besar Saturation #
- Resource Saturation – CPU, memory, disk, network
- Concurrency Saturation – worker, thread, lock, queue
- Dependency Saturation – database, cache, external API
- Control Saturation – retry, scheduler, config limit
- Organizational Saturation – manusia & proses
DAFTAR 20+ JENIS SATURATION #
1. Request Worker Saturation #
Worker/thread/process habis menangani request masuk.
Mitigasi:
- Bounded worker pool
- Backpressure
- Autoscaling
2. Thread Pool Saturation (Internal) #
Thread async/internal executor penuh meskipun request masuk normal.
Mitigasi:
- Pisahkan pool per workload
- Monitor queue length internal
3. Connection Saturation #
Limit koneksi tercapai (DB, Redis, HTTP keep-alive).
Mitigasi:
- Connection pooling
- Timeout & reuse
4. Database Connection Saturation #
DB menolak koneksi baru.
Mitigasi:
- Pooling
- Read replica
- Circuit breaker
5. Database Throughput Saturation #
DB tidak mampu memproses query secepat request datang.
Mitigasi:
- Indexing
- Query optimization
- Caching
6. Database Lock Saturation #
Lock contention tinggi (row/table lock).
Mitigasi:
- Kurangi transaksi panjang
- Optimistic locking
7. Cache Memory Saturation #
Cache kehabisan memory atau eviction terlalu agresif.
Mitigasi:
- TTL realistis
- Cache size limit
8. Cache Throughput Saturation #
Cache tidak mampu melayani QPS tinggi.
Mitigasi:
- Sharding cache
- Local cache
9. Memory Saturation #
RAM hampir habis → OOM atau GC thrashing.
Mitigasi:
- Memory limit
- Streaming data
10. Garbage Collector (GC) Saturation #
GC bekerja terlalu sering atau lama.
Mitigasi:
- Heap tuning
- Kurangi allocation
11. CPU Saturation #
CPU 100% terus-menerus.
Mitigasi:
- Profiling
- Offload async job
12. Disk I/O Saturation #
Disk tidak mampu melayani read/write.
Mitigasi:
- SSD
- Async logging
13. Network Bandwidth Saturation #
Bandwidth habis atau packet loss tinggi.
Mitigasi:
- Compression
- CDN
14. File Descriptor Saturation #
Limit file/socket OS tercapai.
Mitigasi:
- Close resource
- Naikkan ulimit
15. Kernel / OS Saturation #
Ephemeral port, TCP backlog, SYN queue penuh.
Mitigasi:
- OS tuning
- Load balancing
16. Queue / Message Broker Saturation #
Producer > consumer.
Mitigasi:
- Tambah consumer
- Rate limit producer
17. Retry Saturation (Self-inflicted) #
Retry berlebihan memperparah overload.
Mitigasi:
- Exponential backoff
- Jitter
18. Scheduler / Job Runner Saturation #
Background job menumpuk atau overlap.
Mitigasi:
- Distributed scheduler
- Job limit
19. Configuration Limit Saturation #
Request ditolak karena batas konfigurasi.
Mitigasi:
- Review limit
- Validation awal
20. External API Dependency Saturation #
Dependency eksternal overload.
Mitigasi:
- Circuit breaker
- Timeout ketat
21. Lock / Mutex Saturation #
Thread menunggu lock terlalu lama.
Mitigasi:
- Kurangi critical section
- Sharding lock
22. Human / Operational Saturation #
Tim tidak mampu merespons incident.
Mitigasi:
- Runbook
- Alert hygiene
DECISION TREE: SATURATION → MITIGASI #
Latency naik?
|
+-- CPU tinggi? --------> CPU Saturation → Profiling / Scale
|
+-- Memory tinggi? -----> Memory / GC Saturation → Heap / Limit
|
+-- Error timeout?
|
+-- DB slow? -----> DB Saturation → Index / Replica
|
+-- Dependency? --> Circuit Breaker / Fail Fast
CHEATSHEET DETEKSI SATURATION (METRICS-BASED) #
| Metrics | Indikasi Saturation | Aksi Awal |
|---|---|---|
| CPU > 85% | CPU Saturation | Profiling |
| Memory > 80% | Memory / GC | Heap tuning |
| DB Conn ~ Max | Connection | Pool limit |
| Queue length naik | Queue | Scale consumer |
| Cache hit ratio turun | Cache | TTL / Size |
| Timeout naik | Dependency | Circuit breaker |
| Retry rate naik | Retry storm | Backoff |
Prinsip Emas Menghadapi Saturation #
- Bound everything (queue, pool, retry)
- Fail fast > fail late
- Backpressure lebih sehat daripada autoscale buta
- Observability adalah early warning system
Kesimpulan #
Saturation adalah keniscayaan, bukan kesalahan.
Sistem matang bukan yang tidak pernah saturation, tapi yang:
- Mengenali lebih awal
- Menolak beban dengan elegan
- Pulih tanpa domino effect
“Design for saturation, not for perfection.”