Testarea și deploymentul API-urilor

Dezvoltarea aplicațiilor pe AWS

Ricardo Sueiras

Principal Technologist

Infrastructure-as-Code pentru dezvoltatori

 

iac

  • Aplicațiile cloud native se deployează cu Infrastructure-as-Code (IaC).
  • Resursele cloud se definesc în fișiere de configurare.
  • Elimină configurarea manuală în AWS Management Console (clickops).
Dezvoltarea aplicațiilor pe AWS

AWS CloudFormation

 

cloudformation

  • Serviciul IaC de bază din AWS.
  • Definește resurse AWS prin șabloane YAML sau JSON.
Dezvoltarea aplicațiilor pe AWS

AWS Cloud Development Kit (CDK)

 

cdk

  • CDK definește IaC folosind cod.
  • Scrie în Python, TypeScript sau Java în loc de YAML sau JSON.
  • Aplicațiile se sintetizează în șabloane CloudFormation la deploy.
Dezvoltarea aplicațiilor pe AWS

AWS Serverless Application Model (SAM)

  • Extinde CloudFormation.
  • Sintaxă simplificată pentru resurse serverless și API-uri.
  • Funcționează ca un nivel de transformare.
  • Traduce sintaxa SAM în șabloane CloudFormation complete.

 

sam

Dezvoltarea aplicațiilor pe AWS

Funcționalități SAM

  • Generează automat roluri IAM cu privilegii minime, cu posibilitate de ajustare.
  • Definește pipeline-ul de deployment ca și configurare.
  • Împachetează și deployează cu sam build și sam deploy.
  • Detectează erori de șablon din timp cu sam validate.
  • Emulează Lambda local cu sam local start-lambda.
    • Oferă un endpoint local persistent

 

funcționalități SAM

Dezvoltarea aplicațiilor pe AWS

Testare cu SAM

  • Construiește, invocă și testează aplicații serverless local înainte de deploy.
  • Testează funcții Lambda și integrările cu API Gateway.
  • Invocă o funcție local cu sam local invoke.
    • Invocare unică
  • Emulează API Gateway cu sam local start-api.

 

testare cu SAM

Dezvoltarea aplicațiilor pe AWS

Teste unitare

 

teste unitare

  • Folosește SAM cu teste unitare pentru a valida comportamentul Lambda.
  • Testarea locală accelerează ciclurile de dezvoltare.
  • Combină cu framework-uri precum pytest, JUnit sau Jest.
Dezvoltarea aplicațiilor pe AWS

Fluxul de testare

 

flux de testare

  • Generează evenimente de test cu sam local generate-event.
  • Produce fișiere JSON cu evenimente.
  • Invocă local cu sam local invoke FunctionName -e event.json.
  • Adaugă aserțiuni în framework pentru a verifica răspunsul înainte de deploy.
Dezvoltarea aplicațiilor pe AWS

Mocking pentru serviciile AWS

 

testare cu mocking

  • Combină testarea locală cu biblioteci de mocking precum moto.
  • Interacționează cu servicii AWS simulate, fără apeluri reale.
  • Îmbunătățește viteza testelor.
  • Reduce costurile de testare.
  • Validează scenarii de eroare, precum throttling sau eșecuri.
Dezvoltarea aplicațiilor pe AWS

Integrare continuă și deployment continuu (CI/CD)

  • Aplicațiile SAM se deployează de obicei prin pipeline-uri CI/CD.
  • Automatizează construirea, testarea, împachetarea și deploymentul.
  • AWS CodeCommit stochează codul și șabloanele SAM.
  • AWS CodeBuild rulează testele și sam build.
  • AWS CodePipeline orchestrează fluxul de lucru.

 

cicd

Dezvoltarea aplicațiilor pe AWS

Flux CI/CD

  • Commitează codul sursă și șablonul SAM într-un repo.
  • Rulează teste automate și validare.
  • Împachetează aplicația cu sam build.
  • Deployează resursele cu sam deploy.
  • Monitorizează după deployment cu CloudWatch.

 

flux de lucru

Dezvoltarea aplicațiilor pe AWS

Depanarea deploymenturilor

  depanare

  • Depanarea este o abilitate operațională esențială.
  • Erori frecvente la deployment:
  • Probleme de permisiuni IAM.
  • Șabloane SAM sau CloudFormation invalide.
  • Erori la împachetarea Lambda sau dependențe lipsă.
  • Configurări incorecte ale API Gateway.
Dezvoltarea aplicațiilor pe AWS

Depanarea deploymenturilor

  depanare

  • Deploymenturile SAM rulează pe CloudFormation în fundal.
  • Oferă evenimente de stivă și rollback automat.
  • Ajută la identificarea eșecurilor de deployment.
  • Efectuează rollback pentru a restaura starea anterioară.
Dezvoltarea aplicațiilor pe AWS

Depanarea deploymenturilor

  depanare

  • Depanează problemele folosind:
  • CloudWatch Logs.
  • Jurnalele de execuție API Gateway.
  • Jurnalele Lambda.
  • Metrici CloudWatch.
Dezvoltarea aplicațiilor pe AWS

Hai să exersăm!

Dezvoltarea aplicațiilor pe AWS

Preparing Video For Download...