Styles d'architecture et modes de communication

Développer des applications sur AWS

Ricardo Sueiras

Principal Technologist

Votre formateur

formateur

Développer des applications sur AWS

Qu'est-ce qu'un modèle d'architecture ?

 

 

Architecture d'application

 

  • Solution reproductible à un problème courant.
  • Les modèles aident à assembler les services AWS.
  • L'architecture détermine le comportement sous charge.
  • Plusieurs modèles d'architecture à connaître.
Développer des applications sur AWS

Monolithes

 

 

schéma d'un exemple d'architecture monolithique

 

 

  • Un seul bloc fortement couplé.
  • Un codebase, un déploiement.
  • Simple au départ.
  • Difficile à faire évoluer : tout scale ensemble.
Développer des applications sur AWS

Microservices

 

architecture microservices

 

  • Petits services indépendants : chacun gère une capacité métier.
  • Déployer, scaler et mettre à jour chaque service séparément.
  • Compromis : plus de complexité opérationnelle et de communication inter-services.
Développer des applications sur AWS

Serverless

  • Aucune infrastructure à gérer : seulement code et configuration.
  • Construire en composant des services AWS managés.
  • AWS gère le provisionnement, le scaling et la maintenance.
  • Compromis : limites de temps d'exécution, cold starts, verrou fournisseur.
  • Surcharge opérationnelle quasi nulle et scalabilité automatique.

 

architecture serverless

Développer des applications sur AWS

Architecture pilotée par les événements (EDA)

  • Les composants communiquent via des événements, pas par appels directs.
  • Un événement enregistre un fait (commande passée, paiement reçu, article expédié).
  • Les producteurs émettent des événements.
  • Les consommateurs s'abonnent aux événements utiles.

 

architecture pilotée par les événements

Développer des applications sur AWS

Systèmes fortement et faiblement couplés

  • Les apps cloud modernes combinent plusieurs services.
  • Les services doivent communiquer et se coordonner.
  • La communication synchrone est fortement couplée.
  • L'asynchrone est faiblement couplée.

systèmes fortement et faiblement couplés

Développer des applications sur AWS

Communication synchrone

 

communications synch

  • Un service envoie une requête et attend la réponse.
  • L'appelant est bloqué jusqu'à réponse ou expiration.
  • Simple à implémenter et à comprendre.
  • Fort couplage : lenteur/panne en aval peut se propager.
  • Atténuer via timeouts, retries et coupe-circuits.
Développer des applications sur AWS

Modèle : requête/réponse

requête-réponse

  • Ossature de la plupart des interfaces applicatives.
  • Comportement prévisible.
  • Retour immédiat pour les utilisateurs.
Développer des applications sur AWS

Communication asynchrone

 

communications asynch

  • L'émetteur n'attend pas de réponse.
  • Envoie un message/événement, puis continue.
  • Le récepteur traite le message indépendamment.
  • Faible couplage : meilleure scalabilité et tolérance aux pannes.
  • Gère mieux pics de trafic et pannes partielles.
  • Défis : doublons, ordre, cohérence éventuelle.
Développer des applications sur AWS

Modèle : découplage via file d'attente

  • Le producteur envoie des messages à une file d'attente.
  • Le consommateur tire et traite les messages de façon indépendante.
  • Évite l'effet domino des défaillances.
  • Producteur et consommateur scalent séparément.

  découplage par file d'attente

Développer des applications sur AWS

Modèle : file de travailleurs

  • Plusieurs workers tirent des messages d'une même file.
  • Traitement en parallèle.
  • Permet le scaling horizontal et un débit accru.
  • Ordre des messages non garanti.

file de travailleurs

Développer des applications sur AWS

Modèle : publication/abonnement

  • Les éditeurs envoient des messages à un sujet SNS.
  • Plusieurs abonnés reçoivent le même message.
  • Diffusion en temps réel à de nombreux consommateurs.

 

modèle publication/abonnement

Développer des applications sur AWS

Modèle : fan-out

diffusion "fan-out"

  • Un message livré simultanément à plusieurs consommateurs.
  • Très utilisé en architectures événementielles.
  • Utile quand plusieurs services doivent réagir au même événement.
Développer des applications sur AWS

Ordonnancement des messages

ordonnancement des messages

  • Certains traitements exigent l'ordre exact des messages.
  • Amazon SQS FIFO et Kinesis prennent en charge l'ordre.
  • L'ordre strict réduit le débit.
  • Équilibrer justesse et scalabilité.
Développer des applications sur AWS

Passons à la pratique !

Développer des applications sur AWS

Preparing Video For Download...