技术世界存在一种趋势,即假定我们应该使用最新的创新方案解决所有问题。我们通常套用马洛斯锤子定律来解释这件事:如果你手握一把锤子,所有问题都好似钉子。云计算也不例外,一切事物都在进入云端,或者至少我们被这样告知。
为了符合这个隐喻,厂商提供的云计算的任何部分都会成为一把锤子,公司的所有工作负载和应用都会变成钉子。问题在于哪一种分布式模型适合企业的需求,不管是IaaS、PaaS还是SaaS。
IT马洛斯锤子定律
软件即服务(SaaS)是一种典型的“自制或外购的对决”决策;如果你可以购买到能够符合绝大多数需求的服务,那么这就是最经济适用的云。但是不要让构建应用的恐惧促使你购买任何不符合业务需求的服务。你的业务流程是企业立足市场的关键区别基础,因此不要让这些竞争优势向开箱即用的选择妥协。
如果在评估了开箱即用选择后,你确定你的需求最适合的是自定制构建应用,那么下一步就是确定你是否需要云。你的问题是规模性的问题吗?如果不是,就会有更经济的方式来解决。如果是,云就是最佳选择,但是治理或者一些其他外部代理导致的法规或者法律问题就会是你要面临的问题。
推断出云就是最适合自定制构建应用的方法后,云厂商的传统观点就是为你展示一种二分法的选择:你必须选择平台即服务(PaaS)或者基础架构即服务(IaaS)。云厂商推荐这种选择的意图很明显,但是如果我们仔细看,会发现这样并不能套牢客户。
关于三种可扩展场景:事务处理、数据和地理,即IaaS层,你可以立即抽取数据和地理位置,就像PaaS产品的存储能力对于谷歌App Engine或者Windows Azure或者Heroku、Cloudbees等都是一样的。此外,地理分布是云服务的基础。需要给予执行资源做出选择,要符合作为软件应用实现的需求。
但是PaaS产品,比如Windows Azure,都是一个有价值的交易。开发者从低价值的管理功能中得到了自由,放弃了一些细粒度的环境控制。PaaS开发者所工作的个环境都是这项服务所定义的。虽然一个产品可能涉及变更底层环境,但是这种方法在PaaS中不可行。PaaS的经济价值并非在涉及阶段创建基础架构图景,因此不必在生产中进行维护。
以一种开放的心态来看,PaaS完全符合大部分云应用的需求。然而,在PaaS中运营应用的有些场景过于复杂,导致实践起来很困难。对于这样的场景,IaaS通常更为合适。这项决策的制定必须足够清晰明了,因为会产生直接的经济影响。实际上,提供了对立的价值交易:开发者通过接纳构建和管理环境的责任,在交换中获得环境的细粒度控制。这种责任包括设计时间中的上市时间,以及维护和运营领域的持续成本。
所以选择PaaS的正确率是多少?套用爱因斯坦的名言:你应该使用尽可能多的PaaS,但是不要超出合理性范围。