Recraftory

API Gateway

Memahami peran API Gateway dalam arsitektur backend

Apa itu API Gateway

  • Entry point tunggal untuk semua request ke backend
  • Routing request ke service yang sesuai
  • Mengelola concern umum seperti autentikasi dan rate limiting

Fungsi API Gateway

Routing

  • Menerima request dan meneruskannya ke service yang tepat
  • Contoh: /users/* ke user service, /orders/* ke order service
  • Client hanya perlu tahu satu endpoint

Authentication

  • Memverifikasi token atau API key sebelum meneruskan request
  • Service di belakang gateway tidak perlu handle autentikasi
  • Centralized auth memudahkan management

Rate Limiting

  • Membatasi jumlah request per user atau IP
  • Melindungi service di belakang dari overload
  • Bisa diatur berbeda per endpoint atau per user

SSL Termination

  • Meng-handle HTTPS di gateway
  • Service internal bisa berkomunikasi dengan HTTP
  • Mengurangi beban enkripsi di setiap service

Request/Response Transformation

  • Mengubah format request sebelum diteruskan
  • Menggabungkan response dari beberapa service
  • Protocol translation seperti REST ke gRPC

Keuntungan API Gateway

  • Client hanya perlu tahu satu endpoint
  • Service internal bisa berubah tanpa mengubah client
  • Centralized management untuk cross-cutting concern
  • Load balancing antar instance service

Kekurangan API Gateway

  • Single point of failure tanpa redundancy
  • Latency tambahan karena hop ekstra
  • Kompleksitas konfigurasi meningkat
  • Bottleneck jika tidak di-scale dengan baik

API Gateway Populer

  • Kong: open source dengan plugin ecosystem
  • NGINX: proxy dengan fitur gateway
  • AWS API Gateway: managed service dari AWS
  • Envoy: proxy untuk service mesh

Kapan Menggunakan API Gateway

Gunakan

  • Arsitektur microservices dengan banyak service
  • Banyak client dengan kebutuhan berbeda
  • Butuh centralized autentikasi dan rate limiting

Hindari

  • Monolith sederhana dengan sedikit endpoint
  • Latency kritis yang tidak bisa ditoleransi
  • Butuh control granular di setiap service

Praktik Terbaik

  • Jangan letakkan business logic di gateway
  • Health check untuk deteksi service yang mati
  • Circuit breaker untuk mencegah cascade failure
  • Logging dan monitoring di gateway untuk observability
  • Rate limit gateway itu sendiri untuk self-protection