การออกแบบ API บน AWS

การพัฒนาแอปพลิเคชันบน AWS

Ricardo Sueiras

Principal Technologist

API Gateway

 

API คืออะไร

 

  • Amazon API Gateway: บริการแบบ managed สำหรับสร้าง API
  • ออกแบบ, deploy, จัดการ และรักษาความปลอดภัย API
การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Amazon API Gateway

 

ความสามารถของ API

  • รองรับ API หลายประเภท
การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Amazon API Gateway

 

ความสามารถของ API

  • รองรับ API หลายประเภท
  • เชื่อมต่อกับบริการ backend
การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Amazon API Gateway

 

ความสามารถของ API Gateway

  • รองรับ API หลายประเภท
  • เชื่อมต่อกับบริการ backend
  • ควบคุมการเข้าถึง API อย่างปลอดภัย
การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Amazon API Gateway

 

ความสามารถของ API Gateway

  • รองรับ API หลายประเภท
  • เชื่อมต่อกับบริการ backend
  • ควบคุมการเข้าถึง API อย่างปลอดภัย
  • จำกัดอัตรา request เพื่อป้องกัน backend
การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Amazon API Gateway

 

ความสามารถของ API Gateway

  • รองรับ API หลายประเภท
  • เชื่อมต่อกับบริการ backend
  • ควบคุมการเข้าถึง API อย่างปลอดภัย
  • จำกัดอัตรา request เพื่อป้องกัน backend
  • แปลง payload ของ request และ response
การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Amazon API Gateway

 

ความสามารถของ API Gateway

  • รองรับ API หลายประเภท
  • เชื่อมต่อกับบริการ backend
  • ควบคุมการเข้าถึง API อย่างปลอดภัย
  • จำกัดอัตรา request เพื่อป้องกัน backend
  • แปลง payload ของ request และ response
  • เผยแพร่ API ให้ผู้ใช้งาน
การพัฒนาแอปพลิเคชันบน AWS

ความสามารถของ Amazon API Gateway

 

ความสามารถของ API Gateway

  • รองรับ API หลายประเภท
  • เชื่อมต่อกับบริการ backend
  • ควบคุมการเข้าถึง API อย่างปลอดภัย
  • จำกัดอัตรา request เพื่อป้องกัน backend
  • แปลง payload ของ request และ response
  • เผยแพร่ API ให้ผู้ใช้งาน
  • จัดการวงจรชีวิต API: versioning, deployment, aliases
การพัฒนาแอปพลิเคชันบน AWS

ประเภทของ API

  • API Gateway รองรับ API 3 ประเภท:
    • REST APIs
    • HTTP APIs
    • WebSocket APIs

 

ประเภทของ API

การพัฒนาแอปพลิเคชันบน AWS

Endpoint ของ API Gateway

  • Endpoint กำหนดวิธีที่ client เข้าถึง API
  • Edge-optimized: ใช้ CloudFront ที่ AWS จัดการเพื่อลด latency ทั่วโลก
  • Regional: deploy ในภูมิภาค AWS ที่กำหนด
  • Private: เข้าถึงได้เฉพาะผ่าน AWS PrivateLink
  • Private endpoint ไม่เปิดเผยบนอินเทอร์เน็ตสาธารณะ

 

Endpoints

การพัฒนาแอปพลิเคชันบน AWS

REST APIs

  • เป็น API Gateway ที่มีฟีเจอร์ครบครันที่สุด
  • ทำงานบนโมเดล request/response แบบ synchronous

 

REST APIs

การพัฒนาแอปพลิเคชันบน AWS

กรณีการใช้งาน REST API

 

กรณีการใช้งาน REST API

  • API ระดับองค์กรที่ต้องการจัดการวงจรชีวิตแบบครบวงจร
  • API ที่ต้องการการควบคุมความปลอดภัยขั้นสูง
  • ระบบ ecosystem สำหรับนักพัฒนาภายนอกพร้อม API key และ usage plan
  • การเชื่อมต่อโดยตรงกับบริการ AWS โดยไม่ต้องใช้ Lambda
การพัฒนาแอปพลิเคชันบน AWS

การรองรับ REST API ของ API Gateway

 

การรองรับ REST API

  • การตรวจสอบ request
  • API key
  • Usage plan และการจำกัดอัตรา
  • การแคช response พร้อมกำหนด TTL ได้
  • การแปลง request/response ผ่าน VTL template
  • การยืนยันตัวตนด้วย IAM (Signature V4)
  • Lambda authorizer และ Cognito user pool
การพัฒนาแอปพลิเคชันบน AWS

การรองรับ REST API ของ API Gateway

 

 

การรองรับ REST API

  • รองรับ endpoint 3 ประเภท:
    • Edge-optimized
    • Regional
    • Private
  • ป้องกัน web exploit ด้วย AWS WAF
  • รองรับ Canary release deployment
  • ตรวจสอบระบบผ่าน AWS X-Ray และ CloudWatch logging
การพัฒนาแอปพลิเคชันบน AWS

ข้อแลกเปลี่ยนของ REST API

  • ค่าใช้จ่ายสูงกว่า HTTP API
  • Latency สูงกว่าเล็กน้อย

 

ข้อแลกเปลี่ยนของ REST

การพัฒนาแอปพลิเคชันบน AWS

HTTP APIs

  • เพิ่มประสิทธิภาพด้านความเร็วและต้นทุนมากกว่าความครบครันของฟีเจอร์:
    • ประสิทธิภาพ
    • ต้นทุน

 

HTTP APIs

การพัฒนาแอปพลิเคชันบน AWS

กรณีการใช้งาน HTTP API

  • งาน serverless และ API ที่ใช้ Lambda
  • Microservice และ API แบบ lightweight proxy
  • แอปพลิเคชันที่ต้องการ latency ต่ำ
  • API ที่ใช้การยืนยันตัวตนแบบ OAuth 2.0 / OIDC

 

กรณีการใช้งาน HTTP API

การพัฒนาแอปพลิเคชันบน AWS

การรองรับ HTTP API ของ API Gateway

 

ฟีเจอร์ของ HTTP API

  • Lambda proxy integration และ authorizer
  • การยืนยันตัวตน JWT/OIDC แบบ native (Cognito, Auth0, Okta)
  • ตั้งค่า CORS ในตัวระดับ API
  • Private VPC integration ผ่าน VPC Link
  • การ mapping พารามิเตอร์พื้นฐานสำหรับ header, query string และ path
การพัฒนาแอปพลิเคชันบน AWS

ข้อแลกเปลี่ยนของ HTTP API

 

ข้อจำกัดของ HTTP API

  • HTTP API ไม่รองรับ:

    • API key
    • Usage plan
    • การตรวจสอบ request
    • การแคช response
    • การ tracing ด้วย AWS X-Ray
    • การแปลง payload ด้วย VTL

    • รองรับเฉพาะ:

      • Edge หรือ private endpoint (regional เท่านั้น)
การพัฒนาแอปพลิเคชันบน AWS

WebSocket APIs

 

WebSocket APIs

  • การสื่อสารสองทิศทางระหว่าง client และ server
  • การเชื่อมต่อคงอยู่ตลอด ต่างจาก REST และ HTTP API
  • Server สามารถส่งข้อมูลไปยัง client ที่เชื่อมต่ออยู่ได้
การพัฒนาแอปพลิเคชันบน AWS

กรณีการใช้งาน WebSocket API

  • แอปพลิเคชันแชท
  • การแจ้งเตือนแบบ real-time
  • แดชบอร์ดแบบ real-time

 

กรณีการใช้งาน

การพัฒนาแอปพลิเคชันบน AWS

การรองรับ WebSocket API ของ API Gateway

  • การแปลง payload
  • การตรวจสอบ request
  • Route พิเศษในตัว:
    • $connect: client สร้างการเชื่อมต่อ
    • $disconnect: client ตัดการเชื่อมต่อ
    • $default: ไม่พบ route ที่ตรงกัน

 

ฟีเจอร์ของ WebSocket API

การพัฒนาแอปพลิเคชันบน AWS

การแคช API

  • การแคช response ช่วยลดภาระของ backend
  • ช่วยเพิ่มประสิทธิภาพของ API
  • กรณีการใช้งานทั่วไป:
    • ข้อมูลที่มีการร้องขอบ่อย
    • API ที่มีการอ่านข้อมูลสูง
    • ลดการเรียกใช้ Lambda

 

การแคช API

การพัฒนาแอปพลิเคชันบน AWS

การแคช API

 

response ที่ถูกแคช

  • response ที่แคชไว้จะหมดอายุตาม TTL ที่กำหนด
  • จัดการข้อมูลที่ล้าสมัยโดย:
    • ตั้งค่าให้แคชหมดอายุ
    • ล้างแคช
การพัฒนาแอปพลิเคชันบน AWS

แนวปฏิบัติที่ดีในการออกแบบ API: ตั้งชื่อ resource ให้ชัดเจน

 

การออกแบบ API - noun

  • Path ควรแทน resource ไม่ใช่ action
  • ใช้คำนาม ไม่ใช่คำกริยา
  • ดี:
    • GET /orders/123
  • หลีกเลี่ยง:
    • GET /getOrder/123
การพัฒนาแอปพลิเคชันบน AWS

แนวปฏิบัติที่ดีในการออกแบบ API: กำหนดเวอร์ชัน API

 

การกำหนดเวอร์ชัน API

  • กำหนดเวอร์ชัน API เพื่อพัฒนาได้อย่างปลอดภัย
  • ป้องกันการกระทบต่อ client ที่มีอยู่เดิม
  • วิธีที่นิยมใช้:
    • URI versioning: GET /v1/orders
    • Query parameter: GET /orders?version=1
    • HTTP header: Accept-Version: v1
การพัฒนาแอปพลิเคชันบน AWS

Developer portal ของ API

  • เผยแพร่และแชร์ REST API ผ่าน web portal
  • ให้เอกสารประกอบแก่ผู้ใช้งาน API
  • ฟีเจอร์หลัก:
    • เอกสาร API (Swagger file)
    • การ onboarding ผู้ใช้งาน
    • ดาวน์โหลด SDK
    • การลงทะเบียน API key และขั้นตอน subscription

 

api gateway portal

การพัฒนาแอปพลิเคชันบน AWS

OpenAPI specification

  • OpenAPI (Swagger): มาตรฐานในการอธิบาย REST API
  • API Gateway สามารถนำเข้าและส่งออก OpenAPI spec ได้

 

การรองรับ Swagger ใน API Gateway

การพัฒนาแอปพลิเคชันบน AWS

มาฝึกกันเถอะ!

การพัฒนาแอปพลิเคชันบน AWS

Preparing Video For Download...