我公司开发的.NET MVC应用程序,并已开始与AWS玩耍,并通过Visual Studio的工具包进行部署。 我已经成功地部署使用工具箱弹性魔豆选项的应用程序。
当我正想在教程与工具部署.NET应用到AWS,我注意到有与部署教程既弹性青苗和CloudFormation 。 什么是这两者之间的区别?
从我所知道的,好像他们都基本上是在做同样的事情 - 使其更容易应用程序部署到AWS的云(设置EC2实例,负载均衡,自动缩放等)。 我试图在他们俩读书,但我似乎无法得到比一堆听起来同样的事情对我来说时髦的话其他任何东西。 我甚至发现了一个FAQ的AWS网站是应该回答这个问题询问上,但我真的不明白。
我应该使用一个或其他? 都?
它们实际上是相当不同的。 弹性魔豆的目的是让开发者的生活更轻松。 CloudFormation的目的是使系统工程师的生活更轻松。
弹性魔豆ontop的AWS的公司的IaaS服务的PaaS状层,抽象了底层的EC2实例,弹性负载均衡器,自动缩放组等。这使得很多开发商,不希望被处理所有谁更容易该系统的东西,才能得到迅速部署在AWS他们的应用程序。 这是非常相似的其他的PaaS产品,如Heroku的,EngineYard的,谷歌应用程序引擎等。随着弹性魔豆,你不需要了解任何潜在的魔力作品。
CloudFormation,而另一方面,不会自动做任何事情。 这是一个简单的方式来定义在一个巨大的JSON文件部署所需的所有资源。 因此,一个CloudFormation模板实际上可能会创建两个ElasticBeanstalk环境(生产和分期),一对夫妇ElasticCache集群,一个DyanmoDB表,然后在适当的DNS中Route53。 我然后上传这个模板AWS,走开,45分钟后,一切准备就绪,等待着。 由于它只是一个纯文本的JSON文件,我可以在我的源代码控制提供了一个很好的方式,以我的版本的应用程序部署坚持下去。 它还确保我有一个可重复的,“正确”的配置,我可以在不同的区域快速部署。
对于入门快速部署一个标准的.NET Web的应用程序, 弹性魔豆是适合你的服务。
AWS CloudFormation :“模板驱动的供应”
AWS CloudFormation为开发人员和系统管理员提供了一个简单的方法来创建和管理相关的AWS资源,配置的集合,有序和可预测的方式予以更新。
CloudFormation(CFN)是通过现有的API AWS一种重量轻,低级别的抽象。 使用静态JSON / YAML 模板文件,声明一组资源 (如EC2实例或S3桶 ),对应于CRUD操作上的AWS的API。
当你创建一个CloudFormation堆栈,CloudFormation调用相应的API来创建相关的资源,当你删除一个堆栈,CloudFormation调用相应的API将其删除。 大多数(但不是全部)AWS的API支持。
AWS弹性魔豆 :“Web应用程序一点通”
AWS弹性魔豆是一个易于使用的服务进行部署和扩展与开发的Web应用程序和服务的Java , .NET , PHP , Node.js的 , Python中 , 红宝石 , 围棋 ,和泊坞窗上常见的服务器,如Apache,Nginx的,乘客和IIS。
您只需上传您的代码和弹性魔豆自动处理部署,从容量配置,负载平衡,自动缩放到应用程序的健康监测。
弹性魔豆(EB)是一种更高层次的,有管理的“平台即服务”(PaaS的)托管的Web应用程序,在范围上类似的Heroku 。 而不是直接处理低级别的AWS资源,EB提供在这里你完全管理平台创建应用环境使用Web界面 ,选择哪个平台应用程序使用,创建并上传源代码包 ,以及EB处理剩下的。
使用EB,你会得到各种各样的内置功能为监测您的应用程序环境和部署应用程序的新版本 。
引擎盖下,EB使用CloudFormation创建和管理应用程序的各种AWS资源。 您可以自定义,并通过添加扩展默认EB环境CloudFormation资源到EB配置文件部署应用程序。
结论
如果您的应用程序是使用弹性青苗支持的平台的一个标准的Web层应用程序,并且要易于管理,高扩展性的托管服务为您的应用程序, 使用弹性魔豆 。
如果你:
- 要管理所有直接应用程序的AWS资源;
- 要管理或大量定制您的实例,配置或部署过程;
- 需要使用不是由弹性魔豆支持的应用平台; 要么
- 只是不希望/需要任何的更高级别的弹性魔豆特点
然后直接使用CloudFormation和避免弹性豆茎的增加的配置层。
云的形成是一种服务,让你部署AWS服务。 您创建一个描述你想要的服务模板文件。 当您部署模板,云的形成创造了你的资源为“包”。 你在你的模板中定义的所有资源都开始和结束在一起。 的类型,可以用云的形成创造资源的例子有:S3,EC2实例,自动缩放,DynamoDb等。EC2,云的形成也使您能够利用“CFN-初始化”脚本的能力; 可在结合使用模板来举你的情况。
弹性青苗使用云的形成模板和scipts:1.创建一个负载均衡和自动伸缩群,2.将代码复制到S3,3引导EC2实例,从S3下载的代码和部署。
云的形成并不容易,因为EB使用,但它更强大,因为你可以创造出比EC2实例等资源,控制如何CFN-的init脚本,等。
还有值得一提的其他方面的差异。 弹性豆茎是设计用于一个单一的应用程序的容器。 我有一组几个网站和服务的,但发现很难与部署豆茎多个网站和被告知,经过多次尝试,通过AWS帮助使用云的形成在这种情况下,因为它具有更大的灵活性。 即使世界上的自举AWS云的形成和更新正在运行的网站真正有用的文章在这里那比AWS页面更加清晰。 仍然努力工作,我们是否可以从VS直接部署到存储在S3的云的形成模板,并得到像豆茎自动更新...
弹性魔豆自动处理部署,从容量配置,负载平衡,自动缩放到应用程序健康监测根据您上传到它的代码,其中作为CloudFormation是一种自动化的配置引擎设计通过JSON脚本来部署整个云环境。
弹性豆茎会自动处理您的代码部署 - 从容量配置,负载平衡,自动缩放到应用程序健康监测基础上的代码上传到它,而cloudFormation是一个自动的发动机设计通过JSON来部署整个云环境脚本。
文章来源: What is the difference between Elastic Beanstalk and CloudFormation for a .NET project?