This post is sponsored by VMware. Learn about VMware virtualization and cloud solutions for small & mid-size business visit info.vmware.com



This article is available in other languages:

Germany Virtualization vs The Cloud: How do you decide [Mandarin]France Virtualization vs The Cloud: How do you decide [Mandarin]China Virtualization vs The Cloud: How do you decide [Mandarin]Netherlands Virtualization vs The Cloud: How do you decide [Mandarin]England Virtualization vs The Cloud: How do you decide [Mandarin]Portugal Virtualization vs The Cloud: How do you decide [Mandarin]

想象一下,你在一个新潮的网络初创公司里负责技术。你已经发展过了最初的可用产品阶段,你的内部BETA测试取得了巨大成功,现在你将设计应用程序的产品运行环境,以便满足数以百万计的假设客户的需求。

我的猜测是,你已经马上想到将“该应用程序部署到云中去”。商品化的云托管在过去的几年里已经得到了很多媒体的关注,所以你认为它是目前唯一明智的选择,是可以原谅的。

不过,我想谈谈的是,通过在一个像香草一样平常普通的数据中心里购置或租赁的硬件上建立一个虚拟化的环境,从而部署到自己“私有的云”里,以及为什么对你的应用程序而言它可能是正确选择。

我并不是想给出我反对商品化云托管的这一印象。现在我工作的初创公司,一个电影观众的社交网络,就是托管在公共云里。

在共同创办这家公司之前,我在一个在线交易市场托管公司负责技术。我们最畅销的产品是一个网站模板交易市场,但在我们离开的时候,在同一个代码库和托管环境里,我们托管了9种不同的在线交易市场。

在线交易市场的初创公司,我们逆潮流而上,把我们的应用程序从云里搬下,移植到了一个物理硬件在我们控制之下的(几乎是)虚拟化的环境中。所以,我想对比这两个决定,借此希望能帮助你确定你的应用程序是否可能更适合部署在自己私有的云上。

虚拟化的环境是必须的

无论你去到云中,或推出自己的虚拟环境,不管是哪一种方式,你都应该在虚拟服务器中进行部署。对我来说,有两个主要的虚拟化托管的好处是我不能没有。

第一是它将应用程序服务器搭建(或重建)变成一个软件问题。一个常见的Web操作的最佳实践是重建,而不是修复或修改你的服务器。一个服务器池管理的复杂性,很多是在吸积服务器配置随着时间的推移的微小变化,特别是如果用手工来完成。

在过去,你需要很多的预算来储备备用服务器,这样你就可以建立新的数据库,将其插入,转出旧的,再重建这一个。现在,你可以在几分钟内创建一个新的“服务器”,采用你的配置,并点击几下鼠标或运行外壳脚本。第二个是,它可以让你做即时的“Just In Time”容量规划。只要底层的物理容量存在(无论你选择公共的还是私有的云,一个你必须要注意的事项),你可以根据你需要的规格,在你需要的时间,创建新的服务器。

这样,让我们假设你同意我的看法,虚拟服务器是一个不错的主意。现在你是去选择云还是推出自己的?

云和虚拟环境之间的主要区别

公共云托管服务,为你提供了前期成本和灵活性方面最直接的利益,而代价则是较低的未经修饰的性能,高的单个实例故障率,以及在共享环境中,你有一两个糟糕的邻居的风险。

运行自己的虚拟化环境需要较高的前期成本,以及需要管理底层硬件(或找人来为你做)。但是,你得到的回报是更可预测的性能,更高的单个实例可用性和对你环境的总体控制。

您的企业如何发展壮大?

在作出这个决定时,我看的第一件事是“企业将如何增长?”。
在任何其他的技术考虑之前,你需要记住的是你的运行设置是一个系统,是要把美元兑换成的网络流量。你要寻找的是对你的投入在短期和长期内可以产生最佳的回报,要考虑的不只是你花费在硬件上的钱,而且是在该机架上所花工程时间的机会成本。

对于电影观众社交网络,我们不知道什么时候我们的网站会开始获得注意力。立即开始租赁服务器将意味着早花不必要的钱。对于我们来说灵活性超越了所有其他的问题。作为交换,我们放弃了一些性能和一些可用性。对于在这个阶段的企业,我们对这样的安排很高兴。

对于在线交易市场初创公司,情况是完全不同的。我们的产品已稳定下来,但我们更多的增长还没有到来。非常容易预见,收入增长是捆绑在流量增长上,在两年经营之后,我们理解了流量的季节性变化。

有了一个专门的虚拟化环境,在微观层面上我们保持了公共云上的灵活性,同时,在宏观层面上能够有一个“总体规划”,给了我们显著的成本优势。

性能和可用性对你的业务意味着什么?

问问你的CEO,他们很可能会告诉你 “我要五个九(99.999%)的可用性,并在我们的细分市场中拥有最快的网站”。告诉他们,这将花费多少,你很可能会得到一个稍有不同的回答。

正如上面提到的,我们的社交网络,灵活性胜过一切。与我们最近的竞争对手相比,我们有完美的可以接受的性能和正常运行时间,对此我们很高兴。

对于在线交易市场公司,情况要复杂得多。交易市场是为数码内容制作者们向想要买他们产品的客户出售产品而提供的。这意味着,我们要拥有所有普通的电子商务应用的要求,同时要结合高IO性能的需求(因为我们处理大流量的数码产品 – 网页主题,视频,照片,设计模板等)。
在电子商务方面,最终用户的性能是非常重要的。由于你的市场竞争加剧,前端性能的重要性也不断增加。可用性也是非常重要的,网站下线的每分钟意味着你赚不到的钱。

由于有时是个别的,有时是整个区域可用性失败,你需要在云上搭建如何避免这些问题的方法。Netflix在这方面的表现十分出色。该公司的云计算架构的条款是这个主题的黄金标准。

我们这个在线交易市场公司所面临的问题是,我们在技术上受到资源严重不足的制约。所以与其改变我们的应用程序,去适应云计算,我们必须改变我们的云的性质,以适应我们的应用程序。

由于通过对我们网络的内容有了完全的控制权,我们有了更可预测的性能。我们能够定制我们的底层文件储存,为我们的具体负载,带来了最好的IO性能。当我们的数据库中出现了比我们的虚拟服务器可以处理的性能更高的需求时,我们把他们转移到裸机服务器上,紧挨着我们的虚拟环境,以保持低延迟。因为我们已经完全控制了底层的机器,我们知道实例失败的风险是低的,并且保持可用性也得以简化。

为得到所有这一切我们必须做的就是,多花了一点前期费用(随着时间的推移得到了回报),并确保我们不断快速度地在池内增加设备,使我们有能力在我们需要时随时添加新的虚拟服务器。

结论

无论是哪种方式,虚拟化应该是你下一个运行系统的一部分,无论是你现在正在搭建一个新的应用程序或是迁移现有的。

如果你未来的流量是不确定的 – 它可能会急剧地升降,那一定要考虑商品化的云托管。

如果你有一个比较可以预测的负载特征,具有特定的性能或可用性的需求,或者是有点控制狂,绝对要考虑一下建立自己的私有云。