Proiectarea API-urilor pe AWS

Dezvoltarea aplicațiilor pe AWS

Ricardo Sueiras

Principal Technologist

API Gateway

 

Ce sunt API-urile

 

  • Amazon API Gateway: un serviciu gestionat pentru construirea API-urilor.
  • Proiectează, implementează, gestionează și securizează API-urile tale.
Dezvoltarea aplicațiilor pe AWS

Capabilități Amazon API Gateway

 

Capabilități API

  • Implementează diferite tipuri de API.
Dezvoltarea aplicațiilor pe AWS

Capabilități Amazon API Gateway

 

Capabilități API

  • Implementează diferite tipuri de API.
  • Integrează-te cu servicii backend.
Dezvoltarea aplicațiilor pe AWS

Capabilități Amazon API Gateway

 

Capabilități API Gateway

  • Implementează diferite tipuri de API.
  • Integrează-te cu servicii backend.
  • Securizează accesul la API-uri.
Dezvoltarea aplicațiilor pe AWS

Capabilități Amazon API Gateway

 

Capabilități API Gateway

  • Implementează diferite tipuri de API.
  • Integrează-te cu servicii backend.
  • Securizează accesul la API-uri.
  • Limitează cererile pentru a proteja backend-urile.
Dezvoltarea aplicațiilor pe AWS

Capabilități Amazon API Gateway

 

Capabilități API Gateway

  • Implementează diferite tipuri de API.
  • Integrează-te cu servicii backend.
  • Securizează accesul la API-uri.
  • Limitează cererile pentru a proteja backend-urile.
  • Transformă payload-urile de cereri și răspunsuri.
Dezvoltarea aplicațiilor pe AWS

Capabilități Amazon API Gateway

 

Capabilități API Gateway

  • Implementează diferite tipuri de API.
  • Integrează-te cu servicii backend.
  • Securizează accesul la API-uri.
  • Limitează cererile pentru a proteja backend-urile.
  • Transformă payload-urile de cereri și răspunsuri.
  • Publică API-uri pentru consumatori.
Dezvoltarea aplicațiilor pe AWS

Capabilități Amazon API Gateway

 

Capabilități API Gateway

  • Implementează diferite tipuri de API.
  • Integrează-te cu servicii backend.
  • Securizează accesul la API-uri.
  • Limitează cererile pentru a proteja backend-urile.
  • Transformă payload-urile de cereri și răspunsuri.
  • Publică API-uri pentru consumatori.
  • Gestionează ciclul de viață al API-ului: versionare, implementare, aliasuri.
Dezvoltarea aplicațiilor pe AWS

Tipuri de API

  • API Gateway suportă trei tipuri de API:
    • REST APIs
    • HTTP APIs
    • WebSocket APIs

 

Tipuri de API

Dezvoltarea aplicațiilor pe AWS

Endpoint-uri API Gateway

  • Endpoint-urile controlează cum ajung clienții la API-ul tău.
  • Edge-optimized: CloudFront gestionat de AWS pentru latență globală redusă.
  • Regional: implementat într-o regiune AWS specifică.
  • Private: accesibil doar prin AWS PrivateLink.
  • Endpoint-urile private nu folosesc internetul public.

 

Endpoint-uri

Dezvoltarea aplicațiilor pe AWS

REST APIs

  • Oferta API Gateway cu cele mai multe funcționalități.
  • Bazată pe un model sincron de cerere/răspuns.

 

REST APIs

Dezvoltarea aplicațiilor pe AWS

Cazuri de utilizare REST API

 

Cazuri de utilizare REST API

  • API-uri enterprise cu management complet al ciclului de viață.
  • API-uri cu controale avansate de securitate.
  • Ecosisteme de dezvoltatori terți cu chei API și planuri de utilizare.
  • Integrări directe cu servicii AWS fără Lambda.
Dezvoltarea aplicațiilor pe AWS

Suport API Gateway REST API

 

Suport REST API

  • Validarea cererilor.
  • Chei API.
  • Planuri de utilizare și limitare a ratei.
  • Cache pentru răspunsuri cu TTL configurabil.
  • Transformare cereri/răspunsuri prin șabloane VTL.
  • Autentificare IAM (Signature V4).
  • Autorizatori Lambda, grupuri de utilizatori Cognito.
Dezvoltarea aplicațiilor pe AWS

Suport API Gateway REST API

 

 

Suport REST API

  • Trei tipuri de endpoint-uri suportate:
    • Edge-optimized
    • Regional
    • Private
  • Protecție împotriva exploatărilor web cu AWS WAF.
  • Implementări Canary release.
  • Observabilitate prin AWS X-Ray și jurnalizare CloudWatch.
Dezvoltarea aplicațiilor pe AWS

Compromisuri REST APIs

  • Mai costisitoare decât HTTP APIs.
  • Latență ușor mai mare.

 

Compromisuri REST

Dezvoltarea aplicațiilor pe AWS

HTTP APIs

  • Optimizate pentru performanță și cost în detrimentul funcționalităților:
    • Performanță
    • Cost

 

HTTP APIs

Dezvoltarea aplicațiilor pe AWS

Cazuri de utilizare HTTP API

  • Aplicații serverless și API-uri bazate pe Lambda.
  • Microservicii și API-uri proxy ușoare.
  • Aplicații sensibile la latență.
  • API-uri cu autentificare OAuth 2.0 / OIDC.

 

Cazuri de utilizare HTTP APIs

Dezvoltarea aplicațiilor pe AWS

Suport API Gateway HTTP API

 

Funcționalități HTTP API

  • Integrări proxy Lambda și autorizatori.
  • Autorizare nativă JWT/OIDC (Cognito, Auth0, Okta).
  • Configurare CORS integrată la nivelul API-ului.
  • Integrări VPC private prin VPC Link.
  • Mapare de bază a parametrilor pentru headere, query string-uri și căi.
Dezvoltarea aplicațiilor pe AWS

Compromisuri HTTP API

 

Limitări HTTP API

  • HTTP APIs NU suportă:

    • Chei API
    • Planuri de utilizare
    • Validarea cererilor
    • Cache pentru răspunsuri
    • Trasare cu AWS X-Ray
    • Transformare payload VTL

    • Suportă doar:

      • Endpoint-uri edge sau private (numai regional)
Dezvoltarea aplicațiilor pe AWS

WebSocket APIs

 

WebSocket APIs

  • Comunicare bidirecțională între clienți și servere.
  • Conexiunea rămâne deschisă, spre deosebire de REST și HTTP APIs.
  • Serverele pot trimite date către clienții conectați.
Dezvoltarea aplicațiilor pe AWS

Cazuri de utilizare WebSocket API

  • Aplicații de chat.
  • Notificări în timp real.
  • Dashboard-uri în timp real.

 

cazuri de utilizare

Dezvoltarea aplicațiilor pe AWS

Suport API Gateway WebSocket API

  • Transformări de date payload.
  • Validarea cererilor.
  • Rute speciale integrate:
    • $connect: clientul stabilește o conexiune
    • $disconnect: clientul se deconectează
    • $default: nicio rută corespunzătoare găsită

 

Funcționalități WebSocket API

Dezvoltarea aplicațiilor pe AWS

Cache API

  • Cache-ul răspunsurilor reduce încărcarea backend-ului.
  • Îmbunătățește performanța API-ului.
  • Cazuri tipice de utilizare:
    • Date solicitate frecvent
    • API-uri cu multe operații de citire
    • Reducerea invocărilor Lambda

 

Cache API

Dezvoltarea aplicațiilor pe AWS

Cache API

 

Răspunsuri din cache API

  • Răspunsurile din cache expiră după un TTL configurabil.
  • Gestionează datele expirate prin:
    • Setarea expirării cache-ului
    • Golirea cache-ului
Dezvoltarea aplicațiilor pe AWS

Bune practici de design API: denumiri clare pentru resurse

 

Design API - substantive

  • Căile trebuie să reprezinte resurse, nu acțiuni.
  • Folosește substantive, nu verbe.
  • Recomandat:
    • GET /orders/123
  • De evitat:
    • GET /getOrder/123
Dezvoltarea aplicațiilor pe AWS

Bune practici de design API: versionarea API-urilor

 

Versionarea API-urilor

  • Versionează API-urile pentru a le evolua în siguranță în timp.
  • Evită blocarea clienților existenți.
  • Abordări frecvente:
    • Versionare URI: GET /v1/orders
    • Parametru query: GET /orders?version=1
    • Header HTTP: Accept-Version: v1
Dezvoltarea aplicațiilor pe AWS

Portaluri pentru dezvoltatori API

  • Publică și distribuie REST APIs printr-un portal web.
  • Oferă documentație consumatorilor de API.
  • Funcționalități principale:
    • Documentație API (fișiere Swagger)
    • Integrarea consumatorilor
    • Descărcare SDK
    • Înregistrare chei API și fluxuri de abonare

 

portal api gateway

Dezvoltarea aplicațiilor pe AWS

Specificații OpenAPI

  • OpenAPI (Swagger): modalitatea standard de a descrie REST APIs.
  • API Gateway poate importa și exporta specificații OpenAPI.

 

Suport Swagger în API Gateway

Dezvoltarea aplicațiilor pe AWS

Hai să exersăm!

Dezvoltarea aplicațiilor pe AWS

Preparing Video For Download...