Merancang API di AWS

Mengembangkan Aplikasi di AWS

Ricardo Sueiras

Principal Technologist

API Gateway

 

Apa itu API

 

  • Amazon API Gateway: layanan terkelola untuk membangun API.
  • Rancang, deploy, kelola, dan amankan API Anda.
Mengembangkan Aplikasi di AWS

Kemampuan Amazon API Gateway

 

Kemampuan API

  • Implementasikan beragam jenis API.
Mengembangkan Aplikasi di AWS

Kemampuan Amazon API Gateway

 

Kemampuan API

  • Implementasikan beragam jenis API.
  • Integrasikan dengan layanan backend.
Mengembangkan Aplikasi di AWS

Kemampuan Amazon API Gateway

 

Kemampuan API Gateway

  • Implementasikan beragam jenis API.
  • Integrasikan dengan layanan backend.
  • Amankan akses ke API.
Mengembangkan Aplikasi di AWS

Kemampuan Amazon API Gateway

 

Kemampuan API Gateway

  • Implementasikan beragam jenis API.
  • Integrasikan dengan layanan backend.
  • Amankan akses ke API.
  • Batasi laju permintaan untuk melindungi backend.
Mengembangkan Aplikasi di AWS

Kemampuan Amazon API Gateway

 

Kemampuan API Gateway

  • Implementasikan beragam jenis API.
  • Integrasikan dengan layanan backend.
  • Amankan akses ke API.
  • Batasi laju permintaan untuk melindungi backend.
  • Transformasi payload permintaan dan respons.
Mengembangkan Aplikasi di AWS

Kemampuan Amazon API Gateway

 

Kemampuan API Gateway

  • Implementasikan beragam jenis API.
  • Integrasikan dengan layanan backend.
  • Amankan akses ke API.
  • Batasi laju permintaan untuk melindungi backend.
  • Transformasi payload permintaan dan respons.
  • Publikasikan API untuk konsumen.
Mengembangkan Aplikasi di AWS

Kemampuan Amazon API Gateway

 

Kemampuan API Gateway

  • Implementasikan beragam jenis API.
  • Integrasikan dengan layanan backend.
  • Amankan akses ke API.
  • Batasi laju permintaan untuk melindungi backend.
  • Transformasi payload permintaan dan respons.
  • Publikasikan API untuk konsumen.
  • Kelola siklus hidup API: versioning, deployment, alias.
Mengembangkan Aplikasi di AWS

Jenis API

  • API Gateway mendukung tiga jenis API:
    • REST API
    • HTTP API
    • WebSocket API

 

Jenis API

Mengembangkan Aplikasi di AWS

Endpoint API Gateway

  • Endpoint mengatur cara klien mengakses API Anda.
  • Edge-optimized: CloudFront terkelola AWS untuk latensi global rendah.
  • Regional: dideploy ke AWS Region tertentu.
  • Private: hanya dapat dijangkau via AWS PrivateLink.
  • Endpoint privat tidak melalui internet publik.

 

Endpoint

Mengembangkan Aplikasi di AWS

REST API

  • Penawaran API Gateway paling kaya fitur.
  • Dibangun pada model permintaan/respons sinkron.

 

REST API

Mengembangkan Aplikasi di AWS

Use case REST API

 

Use case API REST

  • API perusahaan yang butuh manajemen siklus hidup penuh.
  • API yang memerlukan kontrol keamanan lanjutan.
  • Ekosistem pengembang pihak ketiga dengan kunci API dan rencana penggunaan.
  • Integrasi layanan AWS langsung tanpa Lambda.
Mengembangkan Aplikasi di AWS

Dukungan REST API di API Gateway

 

Dukungan REST API

  • Validasi permintaan.
  • Kunci API.
  • Rencana penggunaan dan throttling.
  • Caching respons dengan TTL yang dapat dikonfigurasi.
  • Transformasi permintaan/respons via template VTL.
  • Autentikasi IAM (Signature V4).
  • Otorisasi Lambda, kumpulan pengguna Cognito.
Mengembangkan Aplikasi di AWS

Dukungan REST API di API Gateway

 

 

Dukungan REST API

  • Tiga jenis endpoint didukung:
    • Edge-optimized
    • Regional
    • Private
  • Perlindungan eksploit web dengan AWS WAF.
  • Deployment canary release.
  • Observabilitas via AWS X-Ray dan logging CloudWatch.
Mengembangkan Aplikasi di AWS

Kompromi REST API

  • Lebih mahal daripada HTTP API.
  • Sedikit lebih tinggi latensinya.

 

Kompromi REST

Mengembangkan Aplikasi di AWS

HTTP API

  • Dioptimalkan untuk kinerja dan biaya dibanding kelengkapan fitur:
    • Kinerja
    • Biaya

 

HTTP API

Mengembangkan Aplikasi di AWS

Use case HTTP API

  • Beban kerja serverless dan API berbasis Lambda.
  • Microservices dan API proxy ringan.
  • Aplikasi sensitif latensi.
  • API yang menggunakan autentikasi OAuth 2.0 / OIDC.

 

Use case HTTP API

Mengembangkan Aplikasi di AWS

Dukungan HTTP API di API Gateway

 

Fitur HTTP API

  • Integrasi dan authorizer Lambda proxy.
  • Otorisasi JWT/OIDC native (Cognito, Auth0, Okta).
  • Konfigurasi CORS bawaan di level API.
  • Integrasi VPC privat via VPC Link.
  • Pemetaan parameter dasar untuk header, query string, dan path.
Mengembangkan Aplikasi di AWS

Kompromi HTTP API

 

Batasan HTTP API

  • HTTP API TIDAK mendukung:

    • Kunci API
    • Rencana penggunaan
    • Validasi permintaan
    • Caching respons
    • Tracing dengan AWS X-Ray
    • Transformasi payload VTL

    • Hanya mendukung:

      • Endpoint edge atau privat (hanya regional)
Mengembangkan Aplikasi di AWS

WebSocket API

 

WebSocket API

  • Komunikasi dua arah antara klien dan server.
  • Koneksi tetap terbuka, tidak seperti REST dan HTTP API.
  • Server dapat mendorong data ke klien yang tersambung.
Mengembangkan Aplikasi di AWS

Use case WebSocket API

  • Aplikasi chat.
  • Notifikasi real-time.
  • Dasbor real-time.

 

use case

Mengembangkan Aplikasi di AWS

Dukungan WebSocket API di API Gateway

  • Transformasi data payload.
  • Validasi permintaan.
  • Rute bawaan khusus:
    • $connect: klien membuat koneksi
    • $disconnect: klien memutus koneksi
    • $default: tidak ada rute yang cocok

 

Fitur WebSocket API

Mengembangkan Aplikasi di AWS

Caching API

  • Caching respons mengurangi beban backend.
  • Meningkatkan kinerja API.
  • Use case umum:
    • Data yang sering diminta
    • API dengan beban baca tinggi
    • Mengurangi pemanggilan Lambda

 

Caching API

Mengembangkan Aplikasi di AWS

Caching API

 

Respons API yang di-cache

  • Respons yang di-cache kedaluwarsa setelah TTL yang dikonfigurasi.
  • Kelola data basi dengan:
    • Mengatur masa berlaku cache
    • Mengosongkan cache
Mengembangkan Aplikasi di AWS

Praktik terbaik desain API: penamaan resource yang jelas

 

Desain API - nomina

  • Path harus merepresentasikan resource, bukan aksi.
  • Gunakan nomina, bukan verba.
  • Baik:
    • GET /orders/123
  • Hindari:
    • GET /getOrder/123
Mengembangkan Aplikasi di AWS

Praktik terbaik desain API: versi API

 

Versioning API

  • Versikan API agar dapat berkembang aman seiring waktu.
  • Hindari merusak klien yang sudah ada.
  • Pendekatan umum:
    • Versioning di URI: GET /v1/orders
    • Parameter kueri: GET /orders?version=1
    • Header HTTP: Accept-Version: v1
Mengembangkan Aplikasi di AWS

Portal pengembang API

  • Publikasikan dan bagikan REST API melalui portal web.
  • Sediakan dokumentasi untuk konsumen API.
  • Fitur utama:
    • Dokumentasi API (berkas Swagger)
    • Onboarding konsumen
    • Unduhan SDK
    • Pendaftaran kunci API dan alur langganan

 

portal api gateway

Mengembangkan Aplikasi di AWS

Spesifikasi OpenAPI

  • OpenAPI (Swagger): standar untuk mendeskripsikan REST API.
  • API Gateway dapat mengimpor dan mengekspor spesifikasi OpenAPI.

 

Dukungan Swagger di API Gateway

Mengembangkan Aplikasi di AWS

Ayo berlatih!

Mengembangkan Aplikasi di AWS

Preparing Video For Download...