Pengembangan API

Mengembangkan Aplikasi di AWS

Ricardo Sueiras

Principal Technologist

Integrasi API Gateway

 

Integrasi API Gateway

  • Banyak opsi integrasi back-end
  • HTTP: endpoint publik mana pun
  • API layanan AWS seperti DynamoDB atau SNS
  • Fungsi Lambda
  • Sumber daya privat via tautan VPC
  • Respons tiruan tanpa back-end nyata
Mengembangkan Aplikasi di AWS

Jenis integrasi: proxy

 

Jenis integrasi API

  • Jenis integrasi menentukan seberapa besar kontrol API Gateway
  • Tipe proxy: AWS_PROXY dan HTTP_PROXY
  • Seluruh permintaan HTTP dikirim langsung ke back-end
  • API Gateway hanya meneruskan secara transparan
  • Respons disusun oleh back-end
Mengembangkan Aplikasi di AWS

Jenis integrasi: non-proxy

  • Tipe non-proxy: AWS dan HTTP
  • Anda mengonfigurasi transformasi permintaan dan respons
  • Digerakkan oleh templat pemetaan
  • Templat ditulis dalam Velocity Template Language (VTL)

 

Jenis integrasi API

Mengembangkan Aplikasi di AWS

Validasi permintaan

 

validasi permintaan

  • Validasi permintaan sebelum mencapai back-end
  • Menangkap field wajib yang hilang
  • Menangkap format JSON tidak valid
  • Menangkap tipe parameter yang salah
  • Kegagalan biasanya mengembalikan 400 Bad Request
Mengembangkan Aplikasi di AWS

Validasi permintaan

 

validasi permintaan

  • Validasi dapat mencakup:
    • Header
    • Parameter query string
    • Body permintaan
    • Skema JSON
Mengembangkan Aplikasi di AWS

Validasi permintaan

 

validasi permintaan

  • Manfaat validasi:
    • Mengurangi permintaan back-end tidak valid
    • Menurunkan biaya eksekusi Lambda
    • Meningkatkan keandalan API
Mengembangkan Aplikasi di AWS

Transformasi

  • Bentuk ulang permintaan dan respons tanpa mengubah kode back-end
    • Ubah struktur payload
    • Ganti nama field
    • Transform header
    • Konversi format data
    • Sembunyikan detail implementasi
  • Didukung templat pemetaan VTL

 

Transformasi API

Mengembangkan Aplikasi di AWS

Menangani kesalahan

 

Kesalahan API

  • Dua kategori kesalahan
    • Kesalahan gateway: dipicu oleh API Gateway
    • Kesalahan integrasi: kegagalan back-end
  • Kesalahan gateway umum:
    • 400 Bad Request: validasi permintaan gagal
    • 429 Too Many Requests: batas throttling terlampaui
Mengembangkan Aplikasi di AWS

Menangani kesalahan

 

Kesalahan API

  • Kesalahan integrasi umum:
    • 502 Bad Gateway: respons rusak/tidak valid
    • 503 Service Unavailable: back-end tidak tersedia/kelebihan beban
    • 504 Gateway Timeout: melewati batas waktu 29 detik
    • REST API Regional dan Privat bisa melebihi 29 detik
Mengembangkan Aplikasi di AWS

Pencatatan log

  • Log eksekusi dan metrik CloudWatch adalah kunci pemecahan masalah
  • API Gateway terintegrasi dengan CloudWatch untuk:
    • Log
    • Metrik
    • Pelacakan eksekusi

 

 

Keteramatan API

Mengembangkan Aplikasi di AWS

Pencatatan log

  • Log CloudWatch membantu mengatasi:
    • Integrasi yang gagal
    • Kesalahan transformasi
    • Kegagalan otorisasi
    • Masalah eksekusi Lambda

 

 

Keteramatan API

Mengembangkan Aplikasi di AWS

Stage: mengelola API lintas lingkungan

 

Tahapan

  • Satu definisi API melayani banyak lingkungan
  • Stage adalah cara API Gateway mengelola lingkungan tersebut
Mengembangkan Aplikasi di AWS

Stage: mengelola API lintas lingkungan

 

Tahapan

  • Satu definisi API melayani banyak lingkungan
  • Stage adalah cara API Gateway mengelola lingkungan tersebut
  • Stage adalah referensi bernama
  • Mengarah ke snapshot deployment dari konfigurasi API Anda
Mengembangkan Aplikasi di AWS

Stage: mengelola API lintas lingkungan

 

Tahapan

  • Satu definisi API melayani banyak lingkungan
  • Stage adalah cara API Gateway mengelola lingkungan tersebut
  • Stage adalah referensi bernama
  • Mengarah ke snapshot deployment dari konfigurasi API Anda
  • Nama stage umum:
    • Dev
    • Test
    • QA dan Prod
Mengembangkan Aplikasi di AWS

Stage: mengelola API lintas lingkungan

 

Tahapan

  • Satu definisi API melayani banyak lingkungan
  • Stage adalah cara API Gateway mengelola lingkungan tersebut
  • Stage adalah referensi bernama
  • Mengarah ke snapshot deployment dari konfigurasi API Anda
  • Nama stage umum: Dev, Test, QA, Prod
  • URL invoke mencerminkan setiap stage
Mengembangkan Aplikasi di AWS

Stage: mengelola API lintas lingkungan

 

Tahapan

  • Satu definisi API melayani banyak lingkungan
  • Stage adalah cara API Gateway mengelola lingkungan tersebut
  • Stage adalah referensi bernama
  • Mengarah ke snapshot deployment dari konfigurasi API Anda
  • Nama stage umum: Dev, Test, QA, Prod
  • URL invoke mencerminkan setiap stage
  • Beberapa stage dapat menunjuk satu deployment untuk rollback instan
Mengembangkan Aplikasi di AWS

Stage: mengelola API lintas lingkungan

 

Tahapan

  • Perubahan aktif hanya setelah dideploy ke sebuah stage
Mengembangkan Aplikasi di AWS

Kemampuan stage

  • Tiap stage dikonfigurasi secara mandiri
  • Konfigurasi mencakup variabel stage
  • Variabel stage berupa pasangan key-value
  • Arahkan satu deployment ke back-end berbeda
  • Perubahan lingkungan tanpa redeploy

 

stage

Mengembangkan Aplikasi di AWS

Kemampuan stage

  • Deployment canary
    • Hanya REST API
    • Kirim persentase trafik ke deployment baru
    • Promosikan menjadi rilis penuh
    • Hapus canary untuk rollback

 

stage

Mengembangkan Aplikasi di AWS

Kemampuan stage

  • Throttling
    • Diatur pada level stage
    • Berlaku untuk semua method, bisa override per-method

 

stage

Mengembangkan Aplikasi di AWS

Kemampuan stage

  • Throttling
    • Diatur pada level stage
    • Berlaku untuk semua method, bisa override per-method
  • Caching
    • Hanya REST API
    • Menyimpan respons back-end pada stage
    • Klien dapat melewati dengan Cache-Control
    • TTL 0–3.600 detik, default 300

 

stage

Mengembangkan Aplikasi di AWS

Kemampuan stage

  • Logging memiliki dua mode
    • Access log
    • Dibangun dari variabel $context, dikirim ke grup log CloudWatch
    • Execution log
    • Menangkap detail permintaan dan respons penuh

 

stage

Mengembangkan Aplikasi di AWS

Ayo berlatih!

Mengembangkan Aplikasi di AWS

Preparing Video For Download...