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