Ringkasan: Ukur dulu, temukan bottleneck (biasanya database atau panggilan eksternal), lalu terapkan caching, antrean, dan batasan yang tepat.

1. Ukur yang Benar

  • Pantau p50, p95, p99 latency per endpoint, bukan hanya rata-rata.
  • Catat error rate, throughput, dan penggunaan CPU/memori.
  • Gunakan tracing (OpenTelemetry) untuk melihat waktu tiap langkah dalam satu request.

2. Bottleneck Paling Umum

Penyebab Gejala Solusi
Query database lambat/N+1 Latency naik seiring data Optimasi database
Panggilan API eksternal berurutan Latency = jumlah semua panggilan Paralelkan, cache, timeout
Tugas berat di dalam request Request lama/timeout Pindah ke antrean
Payload terlalu besar Transfer lambat Paginasi, pilih field, kompresi
Event loop terblokir (Node.js) Semua request melambat Pindah ke worker, hindari operasi sinkron berat

3. Caching

  • Cache aplikasi (Redis) untuk data yang sering dibaca dan jarang berubah, dengan TTL dan strategi invalidasi yang jelas.
  • Cache HTTP (ETag, Cache-Control) untuk respons yang bisa dibagi.
  • CDN untuk aset dan respons publik.
  • Hati-hati dengan data pengguna: jangan cache respons personal di cache bersama.

4. Antrean untuk Tugas Berat

Kirim email, buat laporan, proses gambar/PDF, panggil AI: jangan lakukan di dalam request. Masukkan ke antrean (BullMQ/Redis atau RabbitMQ), balas cepat ke pengguna, dan proses di worker dengan retry.

5. Paginasi dan Batasan

  • Selalu paginasi daftar; gunakan keyset untuk data besar.
  • Batasi ukuran request dan jumlah hasil.
  • Rate limiting untuk melindungi dari lonjakan dan penyalahgunaan.
  • Timeout dan circuit breaker untuk dependensi eksternal agar satu layanan lambat tidak menjatuhkan semuanya.

6. Konkurensi dan Skala

Mulai dari satu server yang disetel baik; tambah instance di belakang load balancer bila perlu. Pastikan aplikasi stateless (sesi di Redis/database) sebelum scale-out.

7. Uji Beban

Gunakan k6 atau Artillery pada staging dengan pola trafik realistis. Cari titik patah sebelum pelanggan menemukannya.

Integrasi Pihak Ketiga

Dokumentasikan batas rate vendor dan terapkan retry dengan backoff (praktik integrasi API).

FAQ

Kapan perlu microservices?

Jarang untuk tahap awal. Monolit modular yang dioptimasi biasanya cukup sampai ada kebutuhan skala atau tim yang jelas.

Apakah Redis wajib?

Tidak. Gunakan bila ada data yang terbukti sering dibaca dan mahal dihitung.

Langkah selanjutnya

Minta audit performa API dengan membagikan metrik atau log endpoint paling lambat.