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:

This article is available in other languages:

Germany 混合云/虚拟化系统的优势France 混合云/虚拟化系统的优势China 混合云/虚拟化系统的优势Netherlands 混合云/虚拟化系统的优势England 混合云/虚拟化系统的优势Portugal 混合云/虚拟化系统的优势

在我们上一篇文章中,我写到了在公共物品的云主机上运行您的应用程序和在自己建立的私有云上运行程序的差异以及你应该如何在两者之间作出选择。

今天,我想要说的是您并非一定要作出选择。在解释如何选择您的主机环境时,我当时遗漏了使之成为一个要么 / 或命题的关键假设,那就是您应用程序整体的一组异构性性能、可用性和预算约束。

这是个简单易做的假设,因为大多数应用程序的开发通常都是以单片集成的方式,用一个代码库,在一个标准环境下开发,而且最终也只做一个生产部署。如果将您的单片应用程序拆分成多个小型组件,那么您便可自行将每一组件寄存至与其自身的限制相得益彰的环境之中。

面向服务或面向资源型架构

将您的应用程序进行拆分的过程通常称之为面向服务型架构或面向资源型架构。至于哪个名称更适用要取决于您拆分应用程序的方式,而且这也不是我们当前的兴趣所在。

在这篇文章里,我要谈的是面向服务型架构(SOA)的优点和不足之处,因为这与主机相关。改变成面向服务型架构(SOA)后的作用域非常之大,我强烈建议您在付诸行动之前先做大量相关性的阅读。

实例一则

在上一篇文章里,我举了数字化内容市场这个例子以及如何将它从云转移至私人虚拟化环境,以获取更快捷的性能和更强的控制力度。

随着时间的推移,我们不断开辟新的市场,应用程序的负载间档也随之发生着巨大变化。我们仍有源源不断一如既往地要求快捷服务的电子商务客户,但在每个新的市场都存在带着截然不同的后处理要求上传的新型文件,而且它们均来自各零星的窗口。

在这种情况下,我们的生产环境只能全力以赴以满足“所有人的需求”。如果我们把使购物变得尽可能简单作为应用程序的主要用途,那么在我们的私有云上运行程序仍是个不错的选择。但如果我们想把应用程序当成一个平台,使人们可以在上面大规模却是以难以预测的负载模式献出内容(以供销售之用),那么公共云所具有的弹性对应用程序来说便显得更为合理。

把应用程序一分为二

由于维持足够松弛容量以处理大量涌入的新内容的成本和为维持足够文件存储空间以容纳所有内容的复杂度的攀升,我们将应用程序进行分离并把100%的资产存储和处理转移至云。

主生产环境会将任何上传的内容保持足够长的时间以将其移至云存储器,并通知新的资产处理服务有新内容可用。资产服务会做所有必要的文件验证,转换,CDN出版等,然后通知主网站这些内容可以使用了。

益处

第一点好处是对收益有利。通过降低我们私人云的松弛容量并将工作移至我们可按需增加或减少容量的公共云,我们可以降低花费却完成更多的“工作”。

第二点是可降低主环境的复杂度。主环境现在可将全部精力放在服务网站上并减少了需要维护的活动部件的数量。由于性能是把私有云作为首选的主要原因之一,环境的简单化可减少潜在的瓶颈并使故障排除变得更为轻松。

最后一点是可更轻松地为客户做好高可用性的维护。通过严格分隔网站和资产处理,我们资产系统中出现的问题将很难级联入网站。

弊端

遗憾的是,事情有利就有弊。

第一个不足是将不同的组件放入不同的数据中心或即使在有供应商提供物理主机或云主机的情况下,把不同的组件放入同一数据中心都将占用您整个系统的执行时间,而且执行时间有很大的可变性。

您需要在工程方面付出相当大的努力以使两个系统间的所有互动做到同步和容错。在您的两个系统之间有很多网络硬件不受您的控制,软件包可能会延期交付或甚至无法交付。如果您网站功能的正常运转完全依赖于其它服务要即时传回数据的话,那么您的网站将陷于瘫痪。

安全性也是一个问题,因为您以前纯内部系统交流的内容现在将经过万恶的互联网。可以建立VPN或如果您服务器间的沟通是通过HTTP进行的话,便需确保您所有的服务器都有可靠的身份验证机制并是在SSL上运行。

最后一点不足是当您从使用单片应用程序转为使用独立运行的多个服务器时,这一转变将增加开发和配置的复杂度。推出新的功能将需要大量的协调努力,以确保所有的服务器继续协调合作。

结论

如果您无法确定是公共云还是私有云更适合您的应用程序,那么答案可能是两者都适合。

请仔细观察您的应用程序。您可能发现其中有两个(或多个)更小的应用程序挣扎着想分离出来,而当它们分离出来后,为每一个小程序配置合适的主机环境就变得容易多了。