Episode 33 membangun GraphQL gateway dan API management: tanggung jawab gateway layer, Kong Gateway dengan rate limiting dan autentikasi, AWS AppSync sebagai managed GraphQL, Hasura untuk instant GraphQL dari database, hingga manajemen API keys dan developer portal.

Semakin besar organisasi, semakin banyak service, client, dan tim yang perlu diatur. Episode 33 membahas GraphQL Gateway dan API Management — lapisan yang berdiri di depan service-service kalian dan mengatur lalu lintas, autentikasi, dan batas penggunaan.
Kita akan mempelajari tanggung jawab gateway, menggunakan Kong Gateway, mengeksplorasi AWS AppSync dan Hasura sebagai solusi terkelola, serta membahas manajemen API secara menyeluruh.
Gateway berdiri di antara client dan service. Tanggung jawab utamanya:
Pola umum: client hanya berinteraksi dengan gateway; service-service di belakangnya tidak pernah diekspos langsung. Ini menyederhanakan keamanan dan memungkinkan perubahan backend tanpa memengaruhi client.
Kong adalah API gateway open-source yang mendukung GraphQL. Jalankan via Docker:
docker run -d --name kong \
-p 8000:8000 -p 8001:8001 \
-e "KONG_DATABASE=postgres" \
-e "KONG_PG_HOST=localhost" \
kong:3.8Lalu daftarkan service GraphQL dan route lewat Kong Admin API, misalnya dengan curl -X POST http://localhost:8001/services -d name=graphql-api -d url=http://api:4000.
Tambahkan plugin rate limiting dan key-auth:
curl -X POST http://localhost:8001/services/graphql-api/plugins \
-d name=rate-limiting \
-d config.minute=100 \
-d config.policy=localcurl -X POST http://localhost:8001/services/graphql-api/plugins \
-d name=key-authDengan plugin key-auth, setiap consumer harus menyertakan API key — manajemen consumer dan key dilakukan lewat Kong Admin API. Kong menangani pembatasan dan autentikasi sebelum request sampai ke GraphQL server.
AWS AppSync adalah layanan GraphQL terkelola penuh dari AWS:
AppSync cocok ketika kalian sudah berada di AWS dan ingin menghilangkan beban operasional server. Trade-off-nya: vendor lock-in dan resolvers berbasis VTL atau JavaScript yang kurang fleksibel dibandingkan menulis resolver bebas.
Hasura menghasilkan API GraphQL secara otomatis dari database PostgreSQL. Setup:
docker run -d -p 8080:8080 \
-e HASURA_GRAPHQL_DATABASE_URL=postgres://user:pass@host/db \
-e HASURA_GRAPHQL_ADMIN_SECRET=rahasia \
hasura/graphql-engine:latestDengan satu perintah, Hasura membaca skema database dan menyediakan query, mutation, filter, aggregasi, dan subscriptions secara instan. Keunggulan utamanya:
Hasura cocok untuk memulai cepat dengan kecepatan tinggi, terutama saat data berada di PostgreSQL. Kekurangannya: logika bisnis tetap perlu di-handle lewat remote schema atau actions.
Terlepas dari gateway yang dipakai, manajemen API membutuhkan:
type UsageReport {
consumerId: ID!
requestCount: Int!
totalCost: Float!
period: String!
}Banyak perusahaan menggabungkan gateway (Kong, Apollo Gateway) dengan platform terkelola seperti StepZen atau platform API penuh yang menyediakan portal developer terintegrasi.
Inti yang harus dibawa pulang:
Di episode 34 selanjutnya kalian akan mempelajari scaling GraphQL — vertical scaling dengan optimasi resource, horizontal scaling dengan load balancing dan stateless design, scaling database dengan read replicas dan connection pooling, caching berlapis, scaling WebSocket subscriptions, hingga circuit breakers dan bulkhead. API kalian siap melayani jutaan request!