web-dev-qa-db-fra.com

Quelle est la différence entre Elastic Beanstalk et CloudFormation pour un projet .NET?

J'ai développé une application .NET MVC et j'ai commencé à jouer avec AWS et à le déployer via Visual Studio Toolkit. J'ai réussi à déployer l'application à l'aide de l'option Elastic Beanstalk dans la boîte à outils.

En parcourant les didacticiels sur le déploiement d'applications .NET sur AWS avec le kit d'outils, j'ai remarqué qu'il existe des didacticiels sur le déploiement avec Elastic Beanstalk et CloudFormation . Quelle est la différence entre ces deux? 

D'après ce que je peux dire, il semblerait qu'ils fassent essentiellement la même chose: faciliter le déploiement de votre application sur le cloud AWS (configuration d'instances EC2, équilibrage de charge, mise à l'échelle automatique, etc.). J'ai essayé de les lire tous les deux, mais je ne peux apparemment rien avoir d'autre qu'un tas de mots à la mode qui sonnent comme la même chose pour moi. J'ai même trouvé un FAQ sur le site Web AWS qui est censé répondre à cette question précise, mais je ne comprends pas vraiment.

Devrais-je utiliser l'un ou l'autre? Tous les deux?

78
kspearrin

Ils sont en fait assez différents. Elastic Beanstalk est conçu pour faciliter la vie des développeurs. CloudFormation est conçu pour faciliter la vie des ingénieurs système.

Elastic Beanstalk est une couche ontop-like de PaaS des services IaaS d’AWS, qui extrait les instances EC2 sous-jacentes, Elastic Load Balancers, les groupes de mise à l’échelle automatique, etc., sous-jacents. les systèmes, pour que leur application soit rapidement déployée sur AWS. Il est très similaire à d'autres produits PaaS tels que Heroku, EngineYard, Google App Engine, etc. Avec Elastic Beanstalk, vous n'avez pas besoin de comprendre le fonctionnement de la magie sous-jacente.

CloudFormation, en revanche, ne fait rien automatiquement. C'est simplement un moyen de définir toutes les ressources nécessaires au déploiement dans un très gros fichier JSON. Ainsi, un modèle CloudFormation peut en fait créer deux environnements ElasticBeanstalk (production et transfert), quelques clusters ElasticCache, une table DyanmoDB, puis le DNS approprié dans Route53. Ensuite, je télécharge ce modèle sur AWS, puis 45 minutes plus tard, tout est prêt et en attente. Puisqu'il ne s'agit que d'un fichier JSON en texte brut, je peux le coller dans mon contrôle de code source, ce qui constitue un excellent moyen de mettre à jour les déploiements de mes applications. Cela garantit également que je dispose d'une configuration répétable "en bon état" que je peux rapidement déployer dans une autre région. 

151
jamieb

Pour démarrer rapidement le déploiement d’une application Web .NET standard, Elastic Beanstalk est le service qui vous convient.

App Services Comparison Graphic

AWS CloudFormation : "Provisioning basé sur des modèles"

AWS CloudFormation offre aux développeurs et aux administrateurs système un moyen simple de créer et de gérer un ensemble de ressources AWS associées, en les provisionnant et en les mettant à jour de manière ordonnée et prévisible.

CloudFormation (CFn) est une abstraction légère et de bas niveau par rapport aux API AWS existantes. À l'aide d'un document JSON/YAML modèle statique, vous déclarez un ensemble de Ressources (tel qu'un instance EC2 ou un compartiment S3 ). qui correspondent aux opérations CRUD sur les API AWS.

Lorsque vous créez une pile CloudFormation, CloudFormation appelle les API correspondantes pour créer les ressources associées et, lorsque vous supprimez une pile, CloudFormation appelle les API correspondantes pour les supprimer. La plupart (mais pas toutes) les API AWS sont prises en charge.

AWS Elastic Beanstalk : "Applications Web simplifiées"

AWS Elastic Beanstalk est un service facile à utiliser pour le déploiement et la mise à l'échelle d'applications et de services Web développés avec Java , .NET , PHP , Node.js , Python , Ruby , Go et Docker sur des serveurs familiers tels qu'Apache, Nginx, Passenger et IIS.

Vous pouvez simplement télécharger votre code et Elastic Beanstalk gère automatiquement le déploiement, du provisionnement de capacité, de l'équilibrage de charge, de la mise à l'échelle automatique à la surveillance de l'intégrité des applications.

Elastic Beanstalk (EB) est une «plate-forme en tant que service» (PaaS) gérée de niveau supérieur pour l'hébergement d'applications Web, d'une portée similaire à Heroku . Plutôt que de traiter directement avec des ressources AWS de bas niveau, EB fournit une plate-forme entièrement gérée où vous créez un environnement d'application à l'aide d'une interface Web , sélectionnez laquelle plate-forme votre application utilise, crée et télécharge un source bundle , et EB gère le reste.

En utilisant EB, vous obtenez toutes sortes de fonctionnalités intégrées pour surveiller l'environnement de votre application } _ et déployer de nouvelles versions de votre application .

Sous le capot, EB utilise CloudFormation pour créer et gérer les différentes ressources AWS de l'application. Vous pouvez personnaliser et étendre l'environnement EB par défaut en ajoutant Ressources CloudFormation à un fichier de configuration EB déployé avec votre application.

Conclusion

Si votre application est une application Web standard utilisant l'une des plateformes prises en charge par Elastic Beanstalk et que vous souhaitez un hébergement facile à gérer et hautement évolutif pour votre application, utilisez Elastic Beanstalk.

Si vous:

  • Vous souhaitez gérer toutes les ressources AWS de votre application directement;
  • Vous souhaitez gérer ou fortement personnaliser votre processus de déploiement d'instance ou de déploiement d'instance;
  • Nécessité d'utiliser une plate-forme d'application non prise en charge par Elastic Beanstalk; ou
  • Il suffit de ne pas avoir besoin des fonctionnalités Elastic Beanstalk de niveau supérieur.

alors utilisez CloudFormation directement et évitez la couche de configuration ajoutée d'Elastic Beanstalk.

23
wjordan

Il y a d'autres différences à noter. Elastic Beanstalk est conçu comme un conteneur pour une application unique. J'ai un ensemble de plusieurs sites Web et services mais j'ai trouvé très difficile de déployer plusieurs sites Web avec beanstalk et AWS a conseillé, après plusieurs tentatives, d'utiliser la formation en nuage dans cette situation car elle offre une flexibilité supplémentaire . Theres un article très utile sur le démarrage de la formation du cloud AWS et la mise à jour d'un site actif ici / beaucoup plus clair que les pages AWS. Nous essayons toujours de savoir si nous pouvons déployer depuis le VS directement vers le modèle de formation dans le cloud stocké sur S3 et le faire mettre à jour automatiquement comme beanstalk ...

10
Matt

Cloud Formation est un service qui vous permet de déployer des services AWS. Vous créez un fichier modèle qui décrit les services que vous souhaitez. Lorsque vous déployez ce modèle, Cloud Formation crée les ressources pour vous sous forme de "package". Toutes les ressources que vous avez définies dans votre modèle sont démarrées et terminées ensemble. Les exemples de types de ressources pouvant être créés avec Cloud Formation sont: S3, instances EC2, AutoScaling, DynamoDb, etc. Pour EC2, Cloud Formation vous offre également la possibilité d'utiliser des scripts "cfn-init"; qui peut être utilisé conjointement avec le modèle pour amorcer la sangle de vos instances.

Elastic Beanstalk utilise des modèles et des notes de formation dans le Cloud pour: 1. Créer un groupe d'équilibrage de charge et Auto Scaling, 2. Copier votre code sur S3, 3. Démarrer une instance Ec2 pour télécharger le code à partir de S3 et le déployer. 

L'utilisation de Cloud Formation n'est pas aussi simple à utiliser que EB, mais elle est beaucoup plus puissante, car vous pouvez créer des ressources autres que les instances EC2, contrôler le fonctionnement du script cfn-init, etc.

10
Edwin

Elastic Beanstalk gère automatiquement le déploiement, depuis le provisionnement de la capacité, l’équilibrage de la charge, la mise à l’échelle automatique, en passant par la surveillance de l’état de l’application en fonction du code que vous y avez chargé.

1
Mahesh Bablu

Elastic Beanstalk gère automatiquement le déploiement de votre code - du provisionnement de la capacité, de l'équilibrage de la charge, de la mise à l'échelle automatique à la surveillance de l'intégrité des applications, en fonction du code que vous y avez chargé, tandis que cloudFormation est un moteur automatisé conçu pour déployer des environnements de cloud entiers via JSON scénario.

0
Prateek Gupta