Je API's testen en deployen

Toepassingen ontwikkelen op AWS

Ricardo Sueiras

Principal Technologist

Infrastructure-as-Code voor developers

 

iac

  • Cloud-native apps deploy je met Infrastructure-as-Code (IaC).
  • Definieer cloudresources in configuratiebestanden.
  • Vermijdt handmatige setup in de AWS Management Console (clickops).
Toepassingen ontwikkelen op AWS

AWS CloudFormation

 

cloudformation

  • De basis-IaC-service in AWS.
  • Definieer AWS-resources met YAML- of JSON-templates.
Toepassingen ontwikkelen op AWS

AWS Cloud Development Kit (CDK)

 

cdk

  • CDK definieert IaC met code.
  • Schrijf in Python, TypeScript of Java in plaats van YAML of JSON.
  • Apps worden bij deploy gesynthetiseerd tot CloudFormation-templates.
Toepassingen ontwikkelen op AWS

AWS Serverless Application Model (SAM)

  • Breidt CloudFormation uit.
  • Vereenvoudigde syntax voor serverless resources en API's.
  • Werkt als een transformatielaag.
  • Zet SAM-syntax om naar volledige CloudFormation-templates.

 

sam

Toepassingen ontwikkelen op AWS

SAM-functies

  • Genereert automatisch least-privilege IAM-rollen, met ruimte voor fine-tuning.
  • Definieer je deployment-pijplijn als configuratie.
  • Package en deploy met sam build en sam deploy.
  • Vang templatefouten vroeg af met sam validate.
  • Emuleer Lambda lokaal met sam local start-lambda.
    • Biedt een persistente lokale endpoint

 

sam features

Toepassingen ontwikkelen op AWS

Testen met SAM

  • Bouw, voer uit en test serverless apps lokaal vóór deploy.
  • Test Lambda-functies en API Gateway-integraties.
  • Roep een functie lokaal aan met sam local invoke.
    • One-shot-aanroep
  • Emuleer API Gateway met sam local start-api.

 

testing with sam

Toepassingen ontwikkelen op AWS

Unittests

 

unit tests

  • Gebruik SAM met unit tests om Lambda-gedrag te valideren.
  • Lokaal testen versnelt ontwikkelcycli.
  • Combineer met frameworks als pytest, JUnit of Jest.
Toepassingen ontwikkelen op AWS

Testworkflow

 

test workflow

  • Genereer testevents met sam local generate-event.
  • Dit levert JSON-eventbestanden op.
  • Roep lokaal aan met sam local invoke FunctionName -e event.json.
  • Voeg framework-asserties toe om de respons te checken vóór deploy.
Toepassingen ontwikkelen op AWS

AWS-services mocken

 

mocking tests

  • Combineer lokaal testen met mocking-bibliotheken zoals moto.
  • Werk met gesimuleerde AWS-services, zonder echte calls.
  • Verbetert testsnelheid.
  • Verlaagt testkosten.
  • Valideert foutscenario's zoals throttling of failures.
Toepassingen ontwikkelen op AWS

Continuous integration en continuous deployment (CI/CD)

  • SAM-apps worden vaak gedeployed via CI/CD-pijplijnen.
  • Automatiseer builden, testen, packagen en deployen.
  • AWS CodeCommit slaat code en SAM-templates op.
  • AWS CodeBuild draait tests en sam build.
  • AWS CodePipeline orkestreert de workflow.

 

cicd

Toepassingen ontwikkelen op AWS

CI/CD-workflow

  • Commit sourcecode en SAM-template naar een repo.
  • Draai geautomatiseerde tests en validatie.
  • Package de app met sam build.
  • Deploy resources met sam deploy.
  • Monitor na deployment met CloudWatch.

 

workflow

Toepassingen ontwikkelen op AWS

Troubleshooting bij deployments

  troubleshooting

  • Troubleshooting is een kernvaardigheid in operations.
  • Veelvoorkomende deployment-fouten:
  • IAM-permissieproblemen.
  • Ongeldige SAM- of CloudFormation-templates.
  • Mislukt Lambda-packaging of ontbrekende afhankelijkheden.
  • Onjuiste API Gateway-configuraties.
Toepassingen ontwikkelen op AWS

Troubleshooting bij deployments

  troubleshooting

  • SAM-deployments draaien onder water op CloudFormation.
  • Biedt stack-events en automatische rollback.
  • Helpt deployment-fouten te vinden.
  • Rolt terug om de vorige omgevingsstaat te herstellen.
Toepassingen ontwikkelen op AWS

Troubleshooting bij deployments

  troubleshooting

  • Los issues op met:
  • CloudWatch Logs.
  • API Gateway execution logs.
  • Lambda-logs.
  • CloudWatch-metrics.
Toepassingen ontwikkelen op AWS

Laten we oefenen!

Toepassingen ontwikkelen op AWS

Preparing Video For Download...