155 votes

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 à la déployer via le Visual Studio Toolkit. J'ai réussi à déployer l'application en utilisant l'option Elastic Beanstalk dans la boîte à outils.

En parcourant les didacticiels sur le déploiement d'applications .NET sur AWS avec la boîte à outils, j'ai remarqué qu'il y avait des didacticiels pour le déploiement avec à la fois Elastic Beanstalk et CloudFormation . Quelle est la différence entre les deux ?

D'après ce que je peux voir, il semble que les deux font essentiellement la même chose - faciliter le déploiement de votre application dans le nuage AWS (mise en place d'instances EC2, équilibreur de charge, mise à l'échelle automatique, etc.) J'ai essayé de me documenter sur les deux, mais je n'ai rien trouvé d'autre qu'un tas de mots à la mode qui ressemblent à la même chose pour moi. J'ai même trouvé un FAQ sur le site de l'AWS qui est censé répondre à cette question exacte, mais je ne comprends pas vraiment.

Devrais-je utiliser l'un ou l'autre ? Les deux ?

286voto

jamieb Points 2892

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

Elastic Beanstalk est une couche de type PaaS au-dessus des services IaaS d'AWS qui fait abstraction des instances EC2 sous-jacentes, des équilibreurs de charge élastiques, des groupes de mise à l'échelle automatique, etc. Il est ainsi beaucoup plus facile pour les développeurs, qui ne veulent pas s'occuper de tous les systèmes, de déployer rapidement leur application sur AWS. C'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 comment fonctionne la magie sous-jacente.

CloudFormation, en revanche, ne fait rien automatiquement. Il s'agit simplement d'un moyen de définir toutes les ressources nécessaires au déploiement dans un énorme fichier JSON/YAML. Ainsi, un modèle CloudFormation peut créer deux environnements Elastic Beanstalk (production et staging), deux clusters ElasticCache, une table DynamoDB, puis le DNS approprié dans Route53. Je télécharge ensuite ce modèle sur AWS, je m'éloigne et 45 minutes plus tard, tout est prêt et en attente. Comme il s'agit simplement d'un fichier JSON/YAML en texte clair, je peux le placer dans mon contrôle de source, ce qui constitue un excellent moyen de versionner les déploiements de mes applications. Cela me permet également de disposer d'une configuration répétable et "connue" que je peux rapidement déployer dans une autre région.

84voto

wjordan Points 11

Pour commencer à déployer rapidement une application Web .NET standard, Elastic Beanstalk est le service qui vous convient.

App Services Comparison Graphic

AWS CloudFormation : "Template-Driven Provisioning"

AWS CloudFormation offre aux développeurs et aux administrateurs de systèmes un moyen simple de créer et de gérer une collection de ressources AWS connexes, en les approvisionnant 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 sur les API AWS existantes. À l'aide d'un fichier statique JSON/YAML modèle vous déclarez un ensemble de Ressources (comme un instance EC2 ou un Seau S3 ) qui correspondent à des 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 des API AWS (mais pas toutes) sont prises en charge.

AWS Elastic Beanstalk : "Web Apps Made Easy"

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 à l'aide des technologies suivantes Java , .NET , PHP , Node.js , Python , Ruby , Allez sur et Docker sur des serveurs familiers tels qu'Apache, Nginx, Passenger et IIS.

Il vous suffit de télécharger votre code et Elastic Beanstalk se charge automatiquement du déploiement, de l'approvisionnement en capacité, de l'équilibrage des charges, de la mise à l'échelle automatique et de la surveillance de la santé des applications.

Elastic Beanstalk (EB) est une "plateforme en tant que service" (PaaS) gérée de plus haut niveau pour l'hébergement d'applications web, similaire en termes de portée à Heroku . Plutôt que de traiter directement avec les ressources AWS de bas niveau, EB fournit une plateforme entièrement gérée où vous créer un environnement d'application en utilisant un interface internet choisir lequel plateforme que votre application utilise, créez et téléchargez un faisceau de sources et EB s'occupe du reste.

Avec EB, vous disposez de toutes sortes de fonctions intégrées pour surveillance de l'environnement de votre environnement d'application y le déploiement 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-tier standard utilisant l'une des plates-formes prises en charge par Elastic Beanstalk, et que vous souhaitez un hébergement facile à gérer et hautement évolutif pour votre application, utiliser Elastic Beanstalk .

Si vous :

  • Vous voulez gérer directement toutes les ressources AWS de votre application ;
  • Vous souhaitez gérer ou personnaliser fortement votre processus d'approvisionnement ou de déploiement d'instances ;
  • Besoin d'utiliser une plate-forme d'application non prise en charge par Elastic Beanstalk ; ou
  • Vous n'avez pas besoin des fonctions supérieures d'Elastic Beanstalk.

puis utiliser directement CloudFormation et éviter la couche de configuration supplémentaire d'Elastic Beanstalk.

18voto

Edwin Points 795

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 "paquet". Toutes les ressources que vous avez définies dans votre modèle sont démarrées et terminées ensemble. Voici des exemples de types de ressources qui peuvent être créées avec Cloud Formation : S3, instances EC2, AutoScaling, DynamoDb, etc. Pour EC2, Cloud Formation vous donne également la possibilité de faire usage de "cfn-init" scripts ; qui peuvent être utilisés conjointement avec le modèle pour démarrer vos instances.

Elastic Beanstalk utilise les modèles et les scipts de Cloud Formation pour : 1. Créer un équilibreur de charge et un groupe de mise à l'échelle automatique, 2. Copier votre code sur S3, 3. Amorcer une instance Ec2 pour télécharger le code depuis S3 et le déployer.

Cloud Formation n'est pas aussi facile à utiliser que EB, mais il est beaucoup plus puissant, car vous pouvez créer des ressources autres que des instances EC2, contrôler la façon dont le cfn-init script, etc.

11voto

Matt Points 99

Il existe d'autres différences qui méritent d'être soulignées. Elastic beanstalk est conçu comme un conteneur pour une seule application. J'ai un ensemble de plusieurs sites Web et services, mais j'ai trouvé qu'il était très difficile de déployer plusieurs sites Web avec beanstalk et l'aide d'AWS m'a conseillé, après plusieurs tentatives, d'utiliser cloud formation dans cette situation, car il offre une flexibilité supplémentaire. Il existe un article très utile sur le démarrage de la formation en nuage AWS et la mise à jour d'un site en cours d'exécution. ici C'est beaucoup plus clair que les pages de l'AWS. J'essaie toujours de déterminer si nous pouvons déployer depuis VS directement vers le modèle de formation en nuage stocké sur S3 et le faire mettre à jour automatiquement comme beanstalk...

3voto

Moi Points 165

Ces services sont conçus pour se compléter mutuellement. AWS Elastic Beanstalk fournit un environnement permettant de déployer et d'exécuter facilement des applications dans le cloud. Il est intégré aux outils de développement et vous offre une expérience unique pour gérer le cycle de vie de vos applications. AWS CloudFormation est un mécanisme de provisionnement pratique pour un large éventail de ressources AWS et tierces. Il prend en charge les besoins en infrastructure de nombreux types d'applications différents, tels que les applications d'entreprise existantes, les applications héritées, les applications construites à l'aide de diverses ressources AWS et les solutions basées sur des conteneurs (notamment celles construites à l'aide d'AWS Elastic Beanstalk).

AWS CloudFormation prend en charge les environnements d'application Elastic Beanstalk comme l'un des types de ressources AWS. Cela vous permet, par exemple, de créer et de gérer une application hébergée par AWS Elastic Beanstalk ainsi qu'une base de données RDS pour stocker les données de l'application. En plus des instances RDS, toute autre ressource AWS prise en charge peut également être ajoutée au groupe.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X