J'ai développé une application .NET MVC et j'ai commencé à jouer avec AWS et à la déployer via Visual Studio Toolkit. J'ai déployé avec succès l'application à l'aide de l'option Elastic Beanstalk dans la boîte à outils.
Alors que je parcourais les didacticiels de déploiement d'applications .NET sur AWS avec la boîte à outils, j'ai remarqué qu'il existe des didacticiels pour 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 semble qu'ils fassent tous les deux 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 lire sur les deux, mais je n'arrive pas à trouver autre chose qu'un tas de mots à la mode qui sonnent comme la même chose pour moi. J'ai même trouvé une FAQ sur le site Web AWS qui est censée répondre à cette question exacte, mais je ne comprends pas vraiment.
Dois-je utiliser l'un ou l'autre? Tous les deux?
Réponses:
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èmes.
Elastic Beanstalk est une couche de type PaaS au-dessus des services IaaS d'AWS qui fait abstraction des instances EC2 sous-jacentes, des Elastic Load Balancers, des groupes de mise à l'échelle automatique, etc. les éléments système, 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 comment fonctionne 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 énorme fichier JSON. Ainsi, un modèle CloudFormation peut en fait créer deux environnements ElasticBeanstalk (production et préparation), quelques clusters ElasticCache, une table DyanmoDB, puis le DNS approprié dans Route53. Je télécharge ensuite ce modèle sur AWS, je m'en vais et 45 minutes plus tard, tout est prêt et en attente. Comme il ne s'agit que d'un fichier JSON en texte brut, je peux le coller dans mon contrôle de source, ce qui constitue un excellent moyen de version de mes déploiements d'application. Cela garantit également que je dispose d'une configuration répétable et «connue en bon état» que je peux déployer rapidement dans une région différente.
la source
Pour démarrer rapidement le déploiement d'une application Web .NET standard, Elastic Beanstalk est le service qu'il vous faut.
AWS CloudFormation : "Provisioning basé sur un modèle"
CloudFormation (CFn) est une abstraction légère et de bas niveau sur les API AWS existantes. À l'aide d'un document de modèle JSON / YAML statique , vous déclarez un ensemble de ressources (comme une 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 des API AWS (mais pas toutes) sont prises en charge.
AWS Elastic Beanstalk : "Web Apps Made Easy"
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, d'une portée similaire à Heroku . Plutôt que de gérer directement les ressources AWS de bas niveau, EB fournit une plate-forme entièrement gérée dans laquelle vous créez un environnement d'application à l' aide d'une interface Web , sélectionnez la plate - forme utilisée par votre application, créez et téléchargez un bundle source , et EB s'occupe du reste.
En utilisant EB, vous bénéficiez de toutes sortes de fonctionnalités intégrées pour surveiller votre environnement d'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 des ressources CloudFormation à un fichier de configuration EB déployé avec votre application.
Conclusion
Si votre application est une application de niveau Web 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, utilisez Elastic Beanstalk. .
Si vous:
puis utilisez CloudFormation directement et évitez la couche de configuration supplémentaire d'Elastic Beanstalk.
la source
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 souhaités. Lorsque vous déployez ce modèle, Cloud Formation crée les ressources pour vous sous la forme d'un «package». Toutes les ressources que vous avez définies dans votre modèle sont démarrées et terminées ensemble. Exemples de types de ressources pouvant être créés avec Cloud Formation: S3, instances EC2, AutoScaling, DynamoDb, etc. Pour EC2, Cloud Formation vous donne également la possibilité d'utiliser des scripts "cfn-init"; qui peut être utilisé avec le modèle pour démarrer vos instances.
Elastic Beanstalk utilise des modèles et des scipts Cloud Formation pour: 1. créer un équilibreur de charge et un groupe Auto Scaling, 2. copier votre code dans S3, 3. démarrer une instance Ec2 pour télécharger le code depuis S3 et le déployer.
Cloud Formation n'est pas aussi facile à utiliser qu'EB, mais il est beaucoup plus puissant, car vous pouvez créer des ressources autres que des instances EC2, contrôler la manière dont le script cfn-init, etc.
la source
Il y a d'autres différences à noter. 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é très difficile de déployer plusieurs sites Web avec beanstalk et AWS m'a conseillé, après plusieurs tentatives, d'utiliser la formation du cloud dans cette situation car elle offre une flexibilité supplémentaire. Il y a un article vraiment utile sur le démarrage de la formation du cloud AWS et la mise à jour d'un site en cours d'exécution ici qui est beaucoup plus clair que les pages AWS. J'essaie toujours de déterminer si nous pouvons déployer à partir de VS directement vers le modèle de formation de nuage stocké sur S3 et le mettre à jour automatiquement comme beanstalk ...
la source
Ces services sont conçus pour se compléter. AWS Elastic Beanstalk fournit un environnement pour déployer et exécuter facilement des applications dans le cloud. Il est intégré aux outils de développement et offre une expérience unique pour vous permettre de gérer le cycle de vie de vos applications. AWS CloudFormation est un mécanisme de provisionnement pratique pour une large gamme de ressources AWS et tierces. Il prend en charge les besoins d'infrastructure de nombreux types d'applications tels que les applications d'entreprise existantes, les applications héritées, les applications créées à l'aide de diverses ressources AWS et des solutions basées sur des conteneurs (y compris celles créées à 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 avec une base de données RDS pour stocker les données d'application. En plus des instances RDS, toute autre ressource AWS prise en charge peut également être ajoutée au groupe.
la source
Elastic Beanstalk gère automatiquement le déploiement, du provisionnement de la capacité, de l'équilibrage de charge, de la mise à l'échelle automatique à la surveillance de la santé des applications en fonction du code que vous y téléchargez, alors que CloudFormation est un moteur de provisionnement automatisé conçu pour déployer des environnements cloud entiers via un script JSON.
la source