Thiết kế API trên AWS

Phát triển ứng dụng trên AWS

Ricardo Sueiras

Principal Technologist

API Gateway

 

API là gì

 

  • Amazon API Gateway: dịch vụ quản lý để xây dựng API.
  • Thiết kế, triển khai, quản lý và bảo mật API của bạn.
Phát triển ứng dụng trên AWS

Khả năng của Amazon API Gateway

 

Khả năng của API

  • Triển khai nhiều loại API khác nhau.
Phát triển ứng dụng trên AWS

Khả năng của Amazon API Gateway

 

Khả năng API

  • Triển khai nhiều loại API khác nhau.
  • Tích hợp với các dịch vụ backend.
Phát triển ứng dụng trên AWS

Khả năng của Amazon API Gateway

 

Khả năng API Gateway

  • Triển khai nhiều loại API khác nhau.
  • Tích hợp với các dịch vụ backend.
  • Bảo mật truy cập vào API.
Phát triển ứng dụng trên AWS

Khả năng của Amazon API Gateway

 

Khả năng API Gateway

  • Triển khai nhiều loại API khác nhau.
  • Tích hợp với các dịch vụ backend.
  • Bảo mật truy cập vào API.
  • Giới hạn tốc độ yêu cầu để bảo vệ backend.
Phát triển ứng dụng trên AWS

Khả năng của Amazon API Gateway

 

Khả năng API Gateway

  • Triển khai nhiều loại API khác nhau.
  • Tích hợp với các dịch vụ backend.
  • Bảo mật truy cập vào API.
  • Giới hạn tốc độ yêu cầu để bảo vệ backend.
  • Biến đổi payload của yêu cầu và phản hồi.
Phát triển ứng dụng trên AWS

Khả năng của Amazon API Gateway

 

Khả năng API Gateway

  • Triển khai nhiều loại API khác nhau.
  • Tích hợp với các dịch vụ backend.
  • Bảo mật truy cập vào API.
  • Giới hạn tốc độ yêu cầu để bảo vệ backend.
  • Biến đổi payload của yêu cầu và phản hồi.
  • Công bố API cho bên sử dụng.
Phát triển ứng dụng trên AWS

Khả năng của Amazon API Gateway

 

Khả năng API Gateway

  • Triển khai nhiều loại API khác nhau.
  • Tích hợp với các dịch vụ backend.
  • Bảo mật truy cập vào API.
  • Giới hạn tốc độ yêu cầu để bảo vệ backend.
  • Biến đổi payload của yêu cầu và phản hồi.
  • Công bố API cho bên sử dụng.
  • Quản lý vòng đời API: versioning, triển khai, bí danh.
Phát triển ứng dụng trên AWS

Các loại API

  • API Gateway hỗ trợ ba loại API:
    • REST APIs
    • HTTP APIs
    • WebSocket APIs

 

Các loại API

Phát triển ứng dụng trên AWS

Endpoint của API Gateway

  • Endpoint quyết định cách client truy cập API.
  • Edge-optimized: CloudFront do AWS quản lý cho độ trễ thấp toàn cầu.
  • Regional: triển khai trong một AWS Region cụ thể.
  • Private: chỉ truy cập qua AWS PrivateLink.
  • Endpoint riêng tư không đi qua internet công cộng.

 

Endpoint

Phát triển ứng dụng trên AWS

REST APIs

  • Gói tính năng đầy đủ nhất của API Gateway.
  • Dựa trên mô hình yêu cầu/phản hồi đồng bộ.

 

REST APIs

Phát triển ứng dụng trên AWS

Tình huống dùng REST API

 

Tình huống dùng REST API

  • API doanh nghiệp cần quản lý vòng đời đầy đủ.
  • API yêu cầu kiểm soát bảo mật nâng cao.
  • Hệ sinh thái developer bên thứ ba với API key và usage plan.
  • Tích hợp trực tiếp dịch vụ AWS không cần Lambda.
Phát triển ứng dụng trên AWS

Hỗ trợ REST API của API Gateway

 

Hỗ trợ REST API

  • Xác thực yêu cầu.
  • API key.
  • Usage plan và throttling.
  • Bộ nhớ đệm phản hồi với TTL cấu hình được.
  • Biến đổi yêu cầu/phản hồi qua mẫu VTL.
  • Xác thực IAM (Signature V4).
  • Lambda authorizer, Cognito user pool.
Phát triển ứng dụng trên AWS

Hỗ trợ REST API của API Gateway

 

 

Hỗ trợ REST API

  • Hỗ trợ ba loại endpoint:
    • Edge-optimized
    • Regional
    • Private
  • Bảo vệ khỏi tấn công web với AWS WAF.
  • Triển khai canary release.
  • Quan sát với AWS X-Ray và log CloudWatch.
Phát triển ứng dụng trên AWS

Đánh đổi của REST APIs

  • Tốn kém hơn HTTP API.
  • Độ trễ cao hơn một chút.

 

Đánh đổi REST

Phát triển ứng dụng trên AWS

HTTP APIs

  • Tối ưu hiệu năng và chi phí hơn là bề rộng tính năng:
    • Hiệu năng
    • Chi phí

 

HTTP APIs

Phát triển ứng dụng trên AWS

Tình huống dùng HTTP API

  • Tác vụ serverless và API dùng Lambda.
  • Microservice và API proxy nhẹ.
  • Ứng dụng nhạy cảm độ trễ.
  • API dùng xác thực OAuth 2.0 / OIDC.

 

Tình huống dùng HTTP API

Phát triển ứng dụng trên AWS

Hỗ trợ HTTP API của API Gateway

 

Tính năng HTTP API

  • Tích hợp và authorizer dạng Lambda proxy.
  • Ủy quyền JWT/OIDC gốc (Cognito, Auth0, Okta).
  • Cấu hình CORS tích hợp ở cấp API.
  • Tích hợp VPC riêng qua VPC Link.
  • Ánh xạ tham số cơ bản cho header, query string và path.
Phát triển ứng dụng trên AWS

Đánh đổi của HTTP API

 

Giới hạn HTTP API

  • HTTP API KHÔNG hỗ trợ:

    • API key
    • Usage plan
    • Xác thực yêu cầu
    • Bộ nhớ đệm phản hồi
    • Tracing với AWS X-Ray
    • Biến đổi payload bằng VTL

    • Chỉ hỗ trợ:

      • Edge hoặc private endpoint (chỉ regional)
Phát triển ứng dụng trên AWS

WebSocket APIs

 

WebSocket APIs

  • Giao tiếp hai chiều giữa client và server.
  • Kết nối luôn mở, khác REST và HTTP API.
  • Server có thể đẩy dữ liệu tới client đang kết nối.
Phát triển ứng dụng trên AWS

Tình huống dùng WebSocket API

  • Ứng dụng chat.
  • Thông báo thời gian thực.
  • Bảng điều khiển thời gian thực.

 

tình huống dùng

Phát triển ứng dụng trên AWS

Hỗ trợ WebSocket API của API Gateway

  • Biến đổi dữ liệu payload.
  • Xác thực yêu cầu.
  • Route tích hợp sẵn đặc biệt:
    • $connect: client thiết lập kết nối
    • $disconnect: client ngắt kết nối
    • $default: không khớp route nào

 

Tính năng WebSocket API

Phát triển ứng dụng trên AWS

Bộ nhớ đệm API

  • Bộ nhớ đệm phản hồi giảm tải cho backend.
  • Cải thiện hiệu năng API.
  • Tình huống điển hình:
    • Dữ liệu được yêu cầu thường xuyên
    • API thiên về đọc
    • Giảm số lần gọi Lambda

 

Bộ nhớ đệm API

Phát triển ứng dụng trên AWS

Bộ nhớ đệm API

 

Phản hồi được đệm của API

  • Phản hồi được đệm hết hạn sau TTL cấu hình.
  • Quản lý dữ liệu cũ bằng cách:
    • Đặt thời gian hết hạn cho cache
    • Xóa cache (flush)
Phát triển ứng dụng trên AWS

Thực hành tốt khi thiết kế API: đặt tên tài nguyên rõ ràng

 

Thiết kế API - danh từ

  • Đường dẫn nên biểu diễn tài nguyên, không phải hành động.
  • Dùng danh từ, không dùng động từ.
  • Tốt:
    • GET /orders/123
  • Tránh:
    • GET /getOrder/123
Phát triển ứng dụng trên AWS

Thực hành tốt khi thiết kế API: đặt phiên bản API

 

Versioning API

  • Đặt phiên bản cho API để phát triển an toàn theo thời gian.
  • Tránh phá vỡ client hiện có.
  • Cách phổ biến:
    • Version trong URI: GET /v1/orders
    • Tham số truy vấn: GET /orders?version=1
    • HTTP header: Accept-Version: v1
Phát triển ứng dụng trên AWS

Cổng dành cho developer API

  • Công bố và chia sẻ REST API qua cổng web.
  • Cung cấp tài liệu cho bên sử dụng API.
  • Tính năng chính:
    • Tài liệu API (tệp Swagger)
    • Onboarding người dùng
    • Tải SDK
    • Đăng ký API key và quy trình đăng ký sử dụng

 

cổng API gateway

Phát triển ứng dụng trên AWS

Đặc tả OpenAPI

  • OpenAPI (Swagger): chuẩn mô tả REST API.
  • API Gateway có thể nhập và xuất đặc tả OpenAPI.

 

Hỗ trợ Swagger trong API Gateway

Phát triển ứng dụng trên AWS

Cùng luyện tập nào!

Phát triển ứng dụng trên AWS

Preparing Video For Download...