Modèles d'architecture d'application sur AWS

Déployer des applications sur AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Faites connaissance avec votre formateur

Formateur du cours, Dunieski Otano, architecte de solutions AWS, avec environ dix ans d'expérience infonuagique

Déployer des applications sur AWS

Pourquoi la bonne architecture compte

Schéma décisionnel en thème clair où un choix d'architecture se ramifie en trois facteurs, couplage, état et communication, au-dessus d'une petite icône de balance pour les compromis

  • L'architecture est une suite de compromis, pas une bonne réponse unique
    • Trois questions guident chaque choix :
      • Les composants sont-ils fortement couplés ?
      • Où se trouve l'état ?
      • La communication est-elle synchrone ou asynchrone ?
    • Alignez le modèle sur la charge de travail, pas sur la mode
Déployer des applications sur AWS

La cascade du vendredi soir

  • Une API de paiement lente fige tout le passage à la caisse
  • Tous les services attendaient dessus de façon synchrone
  • La solution est architecturale, pas une API plus rapide

Comparaison côte à côte de services fortement couplés qui bloquent versus services découplés par une file de messages

Déployer des applications sur AWS

Pourquoi l'architecture oriente le déploiement

Schéma comparant une architecture fragile fortement couplée où une défaillance se propage à tous les services, versus une conception résiliente où une file tampons isole la panne pour que les autres services continuent de répondre

  • Le modèle choisi détermine comment l'appli monte en charge et échoue
    • Un couplage fort casse sous la charge
  • Le bon modèle rend le déploiement prévisible
    • Même code, comportement en prod très différent
Déployer des applications sur AWS

Les principaux modèles d'architecture

  • Monolithique : une unité déployable, simple au départ
  • Microservices : services indépendants, déployés séparément
  • Axée sur les événements : composants réagissent à des événements, pas à des appels directs
    • Le diffuseur est un sous-modèle événementiel : un événement atteint de nombreux consommateurs

 

Trois modèles d'architecture d'application côte à côte : monolithique comme un seul bloc empilé, microservices comme services déployables indépendants, et axée sur les événements avec un autobus d'événements, le diffuseur indiqué comme sous-modèle publiant un événement vers de nombreux consommateurs

Déployer des applications sur AWS

Avec état vs sans état

  • Sans état : aucune donnée cliente conservée entre les requêtes
    • N'importe quelle instance peut traiter n'importe quelle requête
  • Avec état : l'instance se souvient des interactions précédentes
  • Le « sans état » permet de monter en charge horizontalement
    • Externalisez l'état partagé vers DynamoDB ou ElastiCache

Fonction sans état que toute requête peut atteindre à gauche, versus instance avec état liée à une session cliente à droite

Déployer des applications sur AWS

Couplage fort vs lâche

Couplage fort avec l'appelant bloqué en attendant un appel lent, versus couplage lâche avec une file SQS qui met en tampon les messages pour que le producteur continue

  • Couplage fort : l'appelant attend la réponse de l'appelé
  • Un service lent bloque toute la chaîne
  • Couplage lâche : une file Amazon SQS entre les services
  • Le producteur continue même si le consommateur est en panne
Déployer des applications sur AWS

Synchrone vs asynchrone

  • Synchrone : l'appelant se bloque et attend le résultat
  • À utiliser quand la réponse est requise immédiatement
  • Asynchrone : l'appelant délègue le travail et revient
  • À utiliser pour du travail lent, en rafales ou non urgent

 

Appel synchrone avec l'appelant bloqué jusqu'à la réponse à gauche, versus remise asynchrone revenant immédiatement avec traitement en arrière-plan à droite

Déployer des applications sur AWS

Modèles de résilience pour appels tiers

  • Reprise avec repli exponentiel : attendez plus longtemps entre les tentatives
  • Disjoncteur : cessez d'appeler un service en échec pendant un temps
  • File des lettres mortes : mettez de côté les messages qui échouent toujours
  • Combinez-les ; des reprises généralisées aggravent les pannes

Trois modèles de résilience : courbe de reprise avec repli exponentiel, disjoncteur arrêtant les appels à un service en échec, et file des lettres mortes capturant les messages après épuisement des reprises

Déployer des applications sur AWS

Passons à la pratique !

Déployer des applications sur AWS

Preparing Video For Download...