Créer une infrastructure High Available sur AWS

Introduction

Vous avez créé une application et vous l’avez déployé sur un VPS, mais vous vous rendez compte que celui-ci ne pourra pas encaisser des pics de charge ou des incidents matériels. Pour encaisser plus de traffic, vous pourriez augmenter les ressources de votre VPS (scaling vertical), mais cela reviendrait plus cher pour quelques pics de traffic dans la journée.

Notre objectif est donc de créer une infrastructure qui s'étend sur plusieurs emplacements physiques afin de résister à des incidents matériels, réseaux, électriques, etc et qui puisse s'élargir ou se rétrécir selon la charge effective.

Composants nécessaires

Pour ce tutoriel, nous allons avoir besoin de 4 composants :

Créer l'infrastructure réseau

La première étape est de créer notre infrastructure réseau. Pour cela, connectez-vous sur la Console AWS et sélectionnez la région de votre choix (la région devra rester la même pour toutes les étapes suivantes) :

Ensuite, rendez-vous dans VPC :

Puis cliquez sur . Les options à sélectionner sont :

  • 2 Availability Zone
  • 2 Public subnets
  • 0 Private subnets
  • Aucun VPC Endpoint

Pour le reste, vous pouvez laisser ce qui est par défaut.

Nous venons donc de créer un réseau virtuel (VPC) qui s'étend sur deux emplacements physiques (Availability Zones) au travers de deux subnets.

Créer le template EC2

Maintenant que notre infrastructure réseau est prête, nous allons pouvoir créer un template EC2. C'est ce template qui sera utilisé pour créer de nouvelles instances selon la charge.

Ensuite, nous allons nous rendre dans la section Launch Template puis cliquer sur

Sur cette page, vous allez pouvoir définir toutes les options de votre template. Attention, la plupart des champs sont optionnels, donc voici une liste de ce que vous devez penser à fournir :

  • OS Image
  • Instance Type
  • Key pair (clé SSH vous permettant de vous connecter)
  • :
  • Ajouter une interface réseau et ajouter une IP publique :
  • Advanced Details > User Data : Ce champ contient le script shell exécuté à la création de l'instance. Donc c'est ici que vous configurerez votre application pour qu'elle puisse tourner sur l'instance.
Pour accélérer l'installation de vos instances, vous pouvez créer une image personnalisée à l'aide de EC2 Image Builder.

Une fois terminé, vous pouvez cliquer sur . Vous pouvez éventuellement tester le bon fonctionnement du template en lançant une instance:

Ensuite sélectionnez un des deux subnets créé plus tôt puis cliquez sur . Vous pouvez récupérer l'IP de l'instance sur la page de celle-ci :

N'oubliez pas de supprimer l'instance une fois que vous avez testé pour éviter des coûts supplémentaires inutiles :

Créer l’Autoscaling Group et l'Application Load Balancer

Il ne nous manque plus qu'à créer deux éléments : un Autoscaling Group et un Load Balancer. Ce sont eux les éléments principaux pour atteindre l' et l'ajustement automatisé de l'infrastructure.

Cliquez sur , sélectionnez le template créé précédemment puis cliquez sur .

Sélectionnez le VPC créé plus tôt ainsi que toutes les Availability Zones. Laissez la distribution sur Balanced best effort

À l'étape suivante, sélectionnez Attach to a new load balancer et remplissez la configuration suivante :

  • Load balancer type : Application load Balancer
  • Load balancer scheme : Internet-facing
  • Listeners and routing → Default routing : Create a target group

Dans la section Health Checks, sélectionnez Turn on Elactic Load Balancing health checks puis cliquez sur

Dans la section Scaling, sélectionnez vos limites, puis créez une Target tracking scaling policy :

Dans la plupart des cas, je ne recommande pas d'utiliser autre chose que l'utilisation du CPU comme métrique.

Vous pouvez ensuite cliquer sur puis .

Rendez-vous ensuite dans la section Load balancers et sélectionnez le Load Balancer créé précédemment.

Une fois que le statut sera passé sur Active, vous pourrez ouvrir le lien pour vérifier le bon fonctionnement.

Si vous souhaitez utiliser un nom de domaine personnalisé, vous pouvez créer un enregistrement CNAME auprès de votre registrar qui pointe vers le DNS Name disponible dans les paramètres de votre load balancer.

Conclusion

Et voilà, vous avez maintenant une application High Available et capable de résister à des pics de charge sans vider votre portefeuille. Si vous souhaitez aller plus loin, vous pouvez :

  • rendre votre application disponible dans d'autres régions et router les requêtes DNS vers la région la plus proche à l'aide de Route 53
  • Mettre en place le déploiement automatique de votre application à l'aide de CodePipeline
  • Utiliser quelques Spot Instances pour réduire vos frais

Vous voulez travailler avec moi ?

Parlons de votre projet, et je vous enverrai un devis personnalisé sous 48 heures.

Copyright © 2026

Made with 🥖 in Sud Ouest, France