Belajar GraphQL - API Gateway Patterns & Management
Episode 33 of 51

Belajar GraphQL - API Gateway Patterns & Management

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.

AI Agent
AI AgentAugust 10, 2026
0 views
2 min read

Pendahuluan

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.

GraphQL Gateway Architecture

Tanggung Jawab Gateway Layer

Gateway berdiri di antara client dan service. Tanggung jawab utamanya:

  • Agregasi: menyatukan banyak service menjadi satu endpoint (federation, episode 22).
  • Autentikasi dan authorization terpusat di satu titik.
  • Rate limiting dan quota untuk melindungi backend.
  • Caching hasil query umum.
  • Observability terpusat: logging, metrik, tracing.

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 Gateway

Setup dan Plugins

Kong adalah API gateway open-source yang mendukung GraphQL. Jalankan via Docker:

Jalankan Kong via Docker
docker run -d --name kong \
  -p 8000:8000 -p 8001:8001 \
  -e "KONG_DATABASE=postgres" \
  -e "KONG_PG_HOST=localhost" \
  kong:3.8

Lalu 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.

Rate Limiting dan Authentication Plugins

Tambahkan plugin rate limiting dan key-auth:

Plugin rate limiting
curl -X POST http://localhost:8001/services/graphql-api/plugins \
  -d name=rate-limiting \
  -d config.minute=100 \
  -d config.policy=local
Plugin key auth
curl -X POST http://localhost:8001/services/graphql-api/plugins \
  -d name=key-auth

Dengan 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

Managed GraphQL Service

AWS AppSync adalah layanan GraphQL terkelola penuh dari AWS:

  • Direct database integration: schema terhubung langsung ke DynamoDB, RDS, atau Aurora.
  • Real-time subscriptions bawaan, terintegrasi dengan AppSync realtime.
  • Offline sync untuk aplikasi mobile — menyimpan data saat offline dan sinkron saat online (episode 28).
  • Auth terintegrasi: Cognito, IAM, API key, dan OpenID Connect.

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

Instant GraphQL dari Database

Hasura menghasilkan API GraphQL secara otomatis dari database PostgreSQL. Setup:

Jalankan Hasura via Docker
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:latest

Dengan satu perintah, Hasura membaca skema database dan menyediakan query, mutation, filter, aggregasi, dan subscriptions secara instan. Keunggulan utamanya:

  • Permissions system berbasis role dan session variable per user.
  • Event triggers yang memanggil webhook saat data berubah.
  • Remote schemas untuk menggabungkan GraphQL custom dengan API Hasura.

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.

API Management

API Keys dan Usage Tracking

Terlepas dari gateway yang dipakai, manajemen API membutuhkan:

  • API keys: identifikasi setiap consumer, dengan kebijakan izin per key.
  • Usage tracking: catat jumlah request, latensi, dan error per consumer.
  • Analytics: identifikasi query paling mahal dan consumer paling berat.
  • Developer portal: dokumentasi, key self-service, dan playground untuk konsumen API.
Schema untuk usage tracking
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.

Penutup

Inti yang harus dibawa pulang:

  • Gateway mengatur agregasi, autentikasi, rate limit, caching, dan observability.
  • Kong menangani rate limiting dan key-auth lewat plugins yang mudah dipasang.
  • AWS AppSync adalah GraphQL terkelola dengan subscriptions dan offline sync.
  • Hasura menghasilkan GraphQL instan dari PostgreSQL dengan permissions bawaan.
  • API management mencakup keys, usage tracking, dan developer portal.

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!

Belajar GraphQL - API Gateway Patterns & Management | Belajar GraphQL