Il y a 2 années · 5 minutes · Cloud

Votre application web dans le cloud avec AWS Elastic Beanstalk

Lorsque vous arrivez sur la console d’AWS (Amazon Web Services), vous vous retrouvez face à une quarantaine de services et vous vous sentez vite perdus si vous n’êtes pas habitués au monde Amazon. Bien que la documentation d’Amazon soit bien faite, vous pouvez commettre plusieurs erreurs pour déployer votre première application web : vous allez peut-être créer vous même une instance EC2 et la configurer à la main, vous allez peut-être gérer le déploiement de vos releases vous même, vous allez ensuite devoir configurer un load balancer et un auto scalling group, et vous aurez seulement répondu à une petite partie de toutes les problématiques que vous allez finalement devoir gérer. Stop ! Vous perdez votre temps, commencez par utiliser le service AWS Elastic Beanstalk, il est fait pour votre besoin.

Elastic Beanstalk ?

Elastic Beanstalk est une sur-couche gratuite de différents services d’AWS qui vous permet de déployer une application web dans le cloud. Elastic Beanstalk est compatible avec les technologies suivantes :

Capture-d’écran-2015-01-24-à-20.23.13.png

En utilisant l’API d’AWS ou l’interface graphique, vous allez créer votre application puis uploader votre binaire pour créer une première version de cette application. Elastic Beanstalk va ensuite créer une infrastructure optimisée et configurable pour la technologie que vous avez choisi : une ou plusieurs machines EC2, un load balancer, un auto-scalling group et une URL sur le domaine elasticbeanstalk.com.

Voyons à présent quelles sont les principales fonctionnalités d’Elastic Beanstalk.

Multi-environnements

Pour une application dans Elastic Beanstalk, vous pouvez créer plusieurs environnements : production, pré-production, recette etc. Vous avez donc la garantie que vos environnements sont construits de la même manière. Fini donc les galères de tests sur des environnements créés à l’opposé de la production.

Pour chaque environnement, vous choisissez notamment le type d’instance EC2, les variables d’environnement, le nombre d’instances EC2 etc.

Ce qui est également intéressant, c’est qu’en quelques clics (environ 5 minutes top chrono), vous créez un nouvel environnement à disposition de vos équipes de développement. Inutile de trouver un serveur disponible, Amazon s’en charge pour vous.

Déploiements automatisés

L’API d’AWS vous permet de complètement automatiser vos déploiements dans votre usine logicielle avec votre langage préféré. En effet, l’API est disponible dans plusieurs langages : Java, Python, Ruby, Node.js etc. Ceci vous permet d’écrire vos scripts de déploiement dans le même langage que celui de votre applicatif, et donc de tester ces scripts avec les mêmes outils.

Chaque version que vous créez est stockée sur AWS S3. Vous pouvez donc promouvoir une version d’un environnement à un autre, ou rollbacker un environnement sur une version antérieure.
Enfin, Elastic Beanstalk permet de configurer de quelle manière les serveurs seront mis à jour. Par exemple, vous pouvez préciser combien de serveurs en simultané doivent être migrés, ce qui vous assure d’avoir toujours une application disponible en production. Ainsi, que vous changiez la configuration d’un environnement pour avoir des instances plus puissantes, ou que vous fassiez un nouveau déploiement, vous en avez terminé avec les déploiements à 5 heures du matin !

Load balancing et auto-scalabilité

Une fonctionnalité phare d’Elastic Beanstalk est l’utilisation du load balancer et de l’auto scalling group :

En configurant le nombre minimum et le nombre maximum d’instances EC2 autorisées pour votre production, l’auto scalling group va automatiquement adapter le nombre d’instances dans le pool du load balancer en fonction de la charge sur votre application web. Ceci se configure sur des critères techniques : usage CPU, latence, nombre de requêtes entrantes ou sortantes etc. Par exemple, vous pouvez préciser que si la latence moyenne de votre application web est supérieure à 2 secondes, alors une nouvelle instance doit être rajoutée dans le pool.

Si le principal avantage de l’auto-scalabilité est de vous offrir la garantie que votre application répondra lorsque la charge est plus importante que d’habitude, le graphique suivant (sources : AWS) représente parfaitement un deuxième intérêt de l’auto-scalabilité : son impact sur les coûts de votre infrastructure.

Sur ce schéma, la courbe bleu représente le traffic sur votre application. La courbe rouge représente la capacité d’un hébergement traditionnel et la courbe verte représente la capacité d’un hébergement avec de l’auto-scalabilité. Dans un hébergement tradtionnel, on ne sait pas adapter automatiquement la capacité à la charge. Pour que l’application reste performante et disponible lors des pics de charge, la capacité doit donc être au niveau des plus hauts pics de charge. À contrario, avec de l’auto scalabilité, la capacité s’adapte automatiquement lors des pics de charge. Vous évitez donc de payer des ressources inutilisées lors des phases où il y a moins de trafic (visible en rayé rouge sur le graphique).

Last but not least, si une de vos instances tombe, une nouvelle instance est automatiquement créée. Elastic Beanstalk se charge définitivement de tout.

Monitoring

En utilisant le meilleur de Cloudwatch, le service de monitoring d’AWS, Elastic Beanstalk vous propose un dashboard avec des métriques techniques : usage CPU, latence, requêtes sur le système de fichier, requêtes sur le réseau etc. Pour chacune de ces métriques, vous pouvez configurer des alertes sur des canaux variés grâce au service de notification d’AWS : Simple Notification Service.

De plus, vous pouvez configurer votre environnement pour recevoir un email lors de chaque événement majeur : modification du nombre d’instances dans le pool, indisponibilité du service, nouveau déploiement etc.

Pour aller plus loin

Vous savez à présent déployer une application web sur le cloud d’Amazon. Pour aller plus loin, je vous invite à brancher d’autres services d’Amazon Web Services sur votre application web. Entre autres :

  • Besoin d’un cluster de cache sur du Memcached ou du Redis : utilisez Elasticache
  • Besoin de mettre en place une base de données relationnelle sur du MySQL, du PostgreSQL, du SQL Server ou de l’Oracle : utilisez RDS
  • Besoin d’acheter un nom de domaine ou de configurer un DNS : utilisez Route 53
  • Besoin d’un moteur de recherche : utilisez Cloudsearch
  • Besoin d’un CDN : utilisez Cloudfront
  • Besoin d’une base NoSQL : utilisez DynamoDB
  • Besoin de traiter un large volume de données en temps réel : utilisez Kinesis

Les possibilités sont infinies et les produits s’enrichissent sans cesse, amusez vous bien !

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *