当AWS存在时,为什么人们使用Heroku?Heroku与AWS有什么区别?

我是一名初学者RoR程序员,他计划使用Heroku部署我的应用程序。我的其他顾问的朋友说,Heroku非常简单,使用起来很好。唯一的问题是,我仍然不知道Heroku是做什么的…

我看了他们的网站,简而言之,Heroku做的是帮助扩展,但是……为什么这很重要?Heroku如何帮助:

  1. 速度 – 我的研究表明,如果我针对美国/亚洲的观众,在美国东海岸部署AWS将是最快的。
  2. 安全 – 他们有多安全?
  3. 缩放 – 它是如何工作的?
  4. 成本效益 – 有一些像测功机一样易于扩展。
  5. 他们如何面对竞争对手?例如,Engine Yardbluebox

请使用外行英文术语来解释…我是一名初学者程序员。

答案


AWS / Heroku – 两者对于小型业余爱好项目都是免费的(从开始)。

Heroku是一个平台即服务,您可以在其中使用所有现有的东西。如果你对Heroku提供的架构很好,那么Heroku很棒。

Heroku的

  • PAAS(平台即服务)
  • 文档非常好。
  • 具有内置的工具和体系结构。
  • 设计应用程序时对体系结构的控制有限
  • Heroku最擅长他们提供的。
  • 部署已经完成(仅通过git命令)。
  • 良好的支持。
  • 不费时。

AWS

  • IAAS(基础设施即服务)
  • AWS是多功能的。他们有很多种产品。EC2,LAMBDA,EMR等。
  • 你可以去专门的实例。您可以更好地控制体系结构,例如选择操作系统,软件版本等。有多个后端图层。
  • 我还使用了与Heroku相当的Elastic Beanstalk(AWS)(PAAS)。仍然更喜欢Heroku来BeanStalk。
  • 可以使用自动化部署,或者自己推出。
  • 大力支持。

结论

这取决于开发者想要的选项/努力。如果你想马上启动一个应用程序,没有太多的自定义架构,然后选择Heroku。如果您想构建一个应用程序,并且希望将注意力集中在架构等各种功能上,使用不同的Web服务器,并且如果您还想使用AWS提供的其他服务,那么您可能必须选择AWS。基于您选择的服务/产品,使用AWS进行游戏可能会非常耗时,但不值得。AWS还附带了许多可以插入/播放的服务/产品。

 


首先,AWS和Heroku是不同的东西。AWS提供基础架构即服务(IaaS),而Heroku提供平台即服务(PaaS)。

有什么不同?非常近似,IaaS为您提供了所需的组件,以便在其上构建一些东西; PaaS为您提供了一种只需推送代码和一些基本配置并获得正在运行的应用程序的环境。IaaS可以为您提供更多的动力和灵活性,但需要自行构建和维护更多的代价。

为了让您的代码在AWS上运行,看起来有点像Heroku部署,您需要一些EC2实例 – 您需要在其上安装负载均衡器/缓存层(例如Varnish),您会希望实例运行类似于Passengernginx为您的代码提供服务,您将需要部署和配置类似PostgreSQL的集群数据库实例。你需要一个类似Capistrano的部署系统,以及一些做日志聚合的东西。

这不是一个微不足道的工作来建立和维护。使用Heroku,达到这种阶段所需的努力可能是几行应用程序代码和a git push

所以你到目前为止,你想要扩大规模。大。您正在使用Puppet进行EC2部署,对吗?所以现在你可以配置你的Capistrano文件来根据需要旋转向上/向下的实例; 你重新调整你的Puppet配置,让Varnish知道网络工作者实例,并自动在它们之间建立连接。或者你heroku scale web:+5

希望这给你一个两者之间的比较的想法。现在解决您的具体问题:

速度

目前,Heroku仅在us-east和中的AWS实例上运行eu-west。对你而言,这听起来像你想要的。对于其他人来说,这可能更多的是考虑因素。

安全

我看到很多内部维护的生产服务器在安全更新上落后了,或者通常很糟糕。用Heroku,你有其他人管理这种事情,这可能是祝福或诅咒,这取决于你如何看待它!

部署时,您可以直接将代码直接交给Heroku。这可能是你的一个问题。他们关于Dyno Isolation的文章详细介绍了他们的隔离技术(看起来好像在单个EC2实例上运行多个dynos)。几位同事表达了这些技术的问题和他们孤立的力量; 我很抱歉没有足够的知识/经验来真正评论,但是我目前的Heroku部署认为“足够好”。这可能是你的一个问题,我不知道。

缩放

我提到了如何在上面的IaaS和PaaS比较中实现这一点。大致上,你的应用程序有一个Procfile,它具有表格的行,dyno_type: command_to_run例如(从http://devcenter.heroku.com/articles/process-model分拣):

web:    bundle exec rails server
worker: bundle exec rake jobs:work

这与一个:

heroku scale web:2 worker:10

将导致你有2个webdynos和10个workerdynos运行。好,简单,容易。请注意,这web是一种特殊的dyno类型,可以访问外部世界,并且位于漂亮的Web流量多路复用器(可能是某种Varnish / nginx组合)后面,可以相应地路由流量。您的工作人员可能会与消息队列进行交互,以获取类似的路由,他们将通过环境中的URL从其获取位置。

成本效益

很多人对此有很多不同的意见。目前,测试小时为0.05美元/小时,而AWS微型实例为0.025美元/小时,AWS小型实例为0.09美元/小时。

Heroku的dyno文档说你有大约512MB的内存,所以考虑一个有点像EC2微型实例的dyno 可能不是不合理。它的价格是否值得两倍?你对你的时间有多重视?在IaaS产品之上构建它来达到此标准所需的时间和精力绝对不是很便宜。我无法为你回答这个问题,但不要低估安装和维护的“隐藏成本”。

(有点偏旁,但如果我从这里连接到dyno(heroku run bash),粗略的外观显示了4个内核/proc/cpuinfo和36GB的内存 – 这让我相信我在“高内存双超大实例“ Heroku dyno文档说,每个dyno都会收到512MB的RAM,所以我可能会与其他71个dynos共享(我没有足够的关于Heroku AWS实例的同质数据,所以你的milage可能会有所不同))

他们如何面对竞争对手?

这恐怕我无法真正帮助你。我真正看过的唯一竞争对手就是Google App Engine–当时我正在考虑部署Java应用程序,而对可用框架和技术的限制令人难以置信地令人难以置信。这不仅仅是“仅仅是一件Java事情” – 一般限制和必要考虑(常见问题解答提示)的数量看起来并不方便。相比之下,部署到Heroku是一个梦想。

结论

我希望这可以回答你的问题(请留下您是否有空缺/其他方面的问题)。我觉得我应该提出我的个人立场。我喜欢Heroku“快速部署”。当我开始一个应用程序时,我想要一些便宜的主机(Heroku免费套餐非常棒 – 本质上如果你只需要一个网络测试仪和5MB的PostgreSQL,它可以免费托管一个应用程序),Heroku是我的职位。对于几个付费客户的“严重生产部署”,通过服务级别协议以及花费在操作系统等上的专门时间,我不能让自己把这么多的控​​制权交给Heroku,然后是AWS或者我们自己的服务器一直是首选的主机平台。

最终,它是关于什么最适合你的。你说你是一个“初学者程序员” – 这可能只是使用Heroku将让你专注于编写Ruby,而不必花费时间在你的代码周围建立所有其他基础架构。我一定会试一试。


请注意,AWS实际上有一个支持Ruby,Node.js,PHP,Python,.NET和Java 的PaaS产品Elastic Beanstalk。我认为一般来说,大多数人在看到“AWS”时都会跳转到EC2和S3以及EBS这些绝对是IaaS产品的东西


 

 

正如Kristian Glass Said所说,IaaS(aws)和PaaS(HerokuEngineYard)之间没有任何比较。

PaaS基本上可以帮助开发人员加快应用程序的开发速度,从而节省资金,最重要的是创新应用程序和业务,而不是设置配置和管理服务器和数据库等内容。购买使用PaaS的其他功能是应用程序部署过程,例如敏捷性,高可用性,监控,扩展/去除,对专业知识的需求有限,易于部署以及降低成本和开发时间。

但PaaS仍然存在一个阴影,导致PaaS采用的障碍:

  • 减少对服务器和数据库的控制
  • 如果管理不当,成本将会很高
  • 在当前的日子和年龄过早和可疑

除了上面你应该有足够的技能来管理你的IaaS:

  • 硬件采购
  • 操作系统
  • 服务器软件
  • 服务器端脚本环境
  • 网络服务器
  • 数据库管理系统(Mysql,Redis等)
  • 配置生产服务器
  • 测试和部署工具
  • 监控应用程序
  • 高可用性
  • 加载Blancing / Http路由
  • 服务备份策略
  • 团队合作
  • 重建生产

如果您的企业规模较小,PaaS将成为您的最佳选择:

  • 现收现付
  • 低启动成本
  • 把管道留给专家
  • PaaS处理自动扩展/除垢,负载平衡,灾难恢复
  • PaaS管理所有安全要求
  • PaaS管理可靠性,高可用性
  • Paas为您管理许多第三方附加组件

根据要求它将完全是个人选择。您可以在我的PPT Hosting Rails应用程序上获得详细信息。

添加评论

友情链接:蝴蝶教程