Ontwerp fouttolerante en veerkrachtige applicaties op AWS

Toepassingen ontwikkelen op AWS

Ricardo Sueiras

Principal Technologist

Bouwen voor veerkracht

bouwen voor veerkracht

Toepassingen ontwikkelen op AWS

alles gaat een keer stuk

Toepassingen ontwikkelen op AWS

Tijdelijke fouten

 

tijdelijke fouten

  • Begrijp de veelvoorkomende faalmodi:
  • Tijdelijke fouten verdwijnen vanzelf, opnieuw proberen is meestal veilig.
Toepassingen ontwikkelen op AWS

Timeouts

 

timeouts

  • Begrijp de veelvoorkomende faalmodi:
  • Tijdelijke fouten verdwijnen vanzelf, opnieuw proberen is meestal veilig.
  • Timeouts: externe service reageert te traag.
Toepassingen ontwikkelen op AWS

Permanente fouten

 

permanente fouten

  • Begrijp de veelvoorkomende faalmodi:
  • Tijdelijke fouten verdwijnen vanzelf, opnieuw proberen is meestal veilig.
  • Timeouts: externe service reageert te traag.
  • Permanente fouten: verzoek is fundamenteel kapot, opnieuw proberen helpt niet.
Toepassingen ontwikkelen op AWS

API-limieten

 

api-limieten

  • Begrijp de veelvoorkomende faalmodi:
  • Tijdelijke fouten verdwijnen vanzelf, opnieuw proberen is meestal veilig.
  • Timeouts: externe service reageert te traag.
  • Permanente fouten: verzoek is fundamenteel kapot, opnieuw proberen helpt niet.
  • API-verzoeklimieten: te veel verzoeken, verwacht HTTP 429 Too Many Requests.
Toepassingen ontwikkelen op AWS

Retry-strategieën

  • Fouten in gedistribueerde systemen zijn vaak tijdelijk.
  • Een opnieuw verzonden verzoek slaagt vaak.
  • Voeg retry-logica zorgvuldig toe; blind retrypen kan het erger maken.
  • Exponentiële backoff: vergroot de wachttijd tussen retries.
  • Jitter: voeg willekeur toe om retry-pieken te vermijden.
  • Retry-limieten: voorkom eindeloze lussen.

 

retry-strategieën

Toepassingen ontwikkelen op AWS

AWS SDK-native mogelijkheden

  • AWS SDK's verwerken retry-logica automatisch.
  • Ingebouwde retries omvatten exponentiële backoff en jitter.
  • Mislukte of gethrottlede verzoeken worden met oplopende vertragingen herhaald.
  • Minder foutafhandelingscode die je zelf moet schrijven.

 

sdk-mogelijkheden

Toepassingen ontwikkelen op AWS

Retry-logica beheren

 

niet opnieuw proberen

  • Retry-logica is niet altijd de oplossing.
  • HTTP 4xx-fouten: server begreep en wees je verzoek af.
  • Niet-idempotente verzoeken: opnieuw proberen kan dubbele of inconsistente acties geven.
Toepassingen ontwikkelen op AWS

Timeouts beheren

 

Timeouts beheren

  • Onbeperkt retrypen kan problemen onder load verergeren.
  • Combineer retries met timeouts.
  • Een timeout zet de max. wachttijd op een antwoord.
  • Geef elke externe servicecall een timeout.
Toepassingen ontwikkelen op AWS

Circuitbreakers

  • Als een service blijft falen, zijn retries niet genoeg.
  • Blijven sturen kan de falende service overbelasten.
  • Het circuitbreaker-patroon stopt tijdelijk verzoeken naar een ongezonde afhankelijkheid.
  • Gesloten status: verzoeken gaan normaal door.

 

circuit breakers

Toepassingen ontwikkelen op AWS

Circuitbreakers

  • Als fouten een drempel overschrijden, opent het circuit.
  • Volgende verzoeken worden geblokkeerd.

 

circuit breaker

Toepassingen ontwikkelen op AWS

Circuitbreakers

  • Na afkoelen gaat het circuit halfopen om herstel te testen.
  • Service reageert goed: normale werking hervat.
  • Nog steeds fouten: circuit blijft open.
  • Implementeer circuitbreakers op applicatieniveau.

 

circuit breaker

Toepassingen ontwikkelen op AWS

Dead letter queues

 

dql

  • Berichten die blijven falen kunnen het systeem blokkeren.
  • Haal ze uit de hoofdverwerkingsstroom.
  • Mislukte berichten komen in een Dead Letter Queue.
  • Essentieel voor veerkrachtige applicaties.
  • Begrijp wel de trade-offs
Toepassingen ontwikkelen op AWS

AWS API-limieten

 

API-limieten

  • Je gebruikt AWS-services via API's.
  • Elke service heeft eigen API-verzoeklimieten.
  • Overschrijden leidt tot throttling (HTTP 429 Too Many Requests).
  • Ontwerp je applicatie om throttling soepel af te handelen.
Toepassingen ontwikkelen op AWS

Integreren met diensten van derden

  • Externe diensten brengen onzekerheid mee.
  • Je hebt geen controle over hun prestaties of beschikbaarheid.
  • Stel timeouts in om lang wachten te voorkomen.
  • Gebruik retries met backoff bij tijdelijke problemen.
  • Isoleer afhankelijkheden om de impact te beperken.

 

derden

Toepassingen ontwikkelen op AWS

Integreren met derden

  • Overweeg de stap van synchroon naar asynchroon.
  • Je systeem blijft verwerken, ook als de externe service vertraagt.

 

derden beheren

Toepassingen ontwikkelen op AWS

Laten we oefenen!

Toepassingen ontwikkelen op AWS

Preparing Video For Download...