我是一名RoR初学者程序员,计划使用Heroku部署我的应用程序。我的其他顾问朋友说,Heroku真的很简单,很好用。唯一的问题是我仍然不知道赫鲁是做什么的…
我看了他们的网站,简而言之,Heroku所做的是帮助缩放,但是……这有什么关系呢?Heroku如何帮助:
速度——我的研究表明,如果我的目标受众是美国/亚洲,那么在美国东海岸部署AWS将是最快的。
安全性——他们有多安全?
缩放-它实际上是如何工作的?
成本效率——有一些像动态的东西,使其易于扩展。
他们在竞争对手面前表现如何?比如Engine Yard和bluebox?
请用外行的英语术语来解释……我是一个初级程序员。
从开发、IT和业务目标来看,有很多不同的方法来看待这个决定,所以如果它看起来势不可挡,也不要感到难过。但是,不要过度考虑可伸缩性。
想想你的需求。
我设计的网站每天服务超过800万次,每周提供tb的视频,这些网站建立在25万美元的硬件基础设施上,由庞大的IT劳动力组成。
但我也有一些较小的网站,它们的设计目标是每年产生1 - 2万美元,没有很高的流量、数据库或处理要求,我用一个每月10美元的通用托管账户毫不妥协地运行这些网站。
在未来,部署将更像Heroku而不是AWS,这只是因为进步。扩大互联网基础设施的IT旋钮没有任何价值,因为它不能越来越自动化,而且它与你所提供的产品或服务的价值没有任何关系。
此外,要记住,对于一个商业网站来说,可扩展性是我们通常所说的“好问题”——尽管像Facebook和Twitter这样的网站的可扩展性问题非常引人注目,但它们对他们的成功没有任何负面影响——这条新闻甚至可能有助于更多的注册(所有的新闻都是好新闻)。
如果你有一个每天生成超过10万份文件的服务,并且存在伸缩性问题,我很乐意帮你解决这个问题,不管你运行的是什么语言、数据库、平台或基础设施!
可伸缩性是一个可修复的实现问题——没有客户是一个存在的问题。
正如Kristian Glass所说,IaaS(AWS)和PaaS(Heroku, EngineYard)之间没有可比性。
PaaS基本上帮助开发人员加快应用程序的开发,从而节省资金,最重要的是创新他们的应用程序和业务,而不是设置配置和管理服务器和数据库之类的东西。使用PaaS的其他特性是应用程序部署过程,如敏捷性、高可用性、监视、扩展/去规模化、对专业知识的需求有限、易于部署以及减少成本和开发时间。
但PaaS仍有其黑暗的一面,这阻碍了PaaS的采用:
减少对服务器和数据库的控制
如果管理不当,成本将非常高
在当今时代,不成熟的,可疑的
除此之外,你应该有足够的技能来管理你的IaaS:
硬件采购
操作系统
服务器软件
服务器端脚本环境
Web服务器
数据库管理系统(Mysql, Redis等)
配置生产服务器
用于测试和部署的工具
监控应用程序
高可用性
负载均衡/ Http路由
业务备份策略
团队协作
重新生产
如果您的业务规模较小,PaaS将是您的最佳选择:
现付现付
启动成本低
把管道问题留给专家
PaaS处理自动缩放/除垢、负载平衡、灾难恢复
PaaS管理所有安全需求
PaaS管理可靠性、高可用性
Paas为您管理许多第三方附加组件
这完全是基于个人需求的选择。您可以在我的PPT托管Rails应用程序上获得详细信息。
AWS / Heroku对于小型业余项目(开始时)都是免费的。
如果你想立即启动一个应用程序,而不需要对架构进行太多定制,那么选择Heroku。
如果你想专注于架构,并能够使用不同的web服务器,那么选择AWS。AWS更耗时,具体取决于您选择的服务/产品,但这是值得的。AWS还附带了许多插件服务和产品。
希罗库
平台即服务(PAAS)
好的文档
具有内置的工具和体系结构。
在设计应用程序时,对架构的控制有限。
部署(通过GitHub自动部署或通过git命令或CLI手动部署)。
不浪费时间。
AWS
基础设施即服务(IAAS)
多功能-具有许多产品,如EC2, LAMBDA, EMR等。
可以使用专用实例对体系结构进行更多控制,例如选择操作系统、软件版本等。后台层不止一个。
Elastic Beanstalk是一个类似于Heroku的PAAS的功能。
可以使用自动部署,也可以自行部署。