InfoQ上有一篇访谈,其中Adron Hall谈及了云开发的业务特点,个人深表赞同,引用如下:
首先我会定义当听到“云开发人员”这个词时会想到什么。一名云开发人员就是负责这样的代码解决方案的人,解决方案是基于水平扩展的、分布式的、幂等的和异步处 理,同时具有可伸缩、高度可用和弹性存储的特点。
我说在回答这个问题时当然应完全根据这个定义。一名普通的开发人员经常是在某个传统的RDBMS数据库的基础之上构建应用,在此过程中他会使用某个框架或是其它基于此框架之上的工具,并受到垂直扩展的限制。这并不是不好的开发方式,但是对于云或其它任何可水平扩展的环境来说,以这种方式来构建应用或服务效率会非常低。一旦达 到最大物理扩展极限,开发者就完全无能为力了,因为他再也没有办法使用任何合理的方式来提升性能。
一位云开发人员会横跨广阔的资源范围来构建应用,他经常将某个应用的功能拆分成更为具体的服务或模块。云开发人员也常需要涉足于某些含有更多语言的工具包,这些语言包括从JavaScript到C#、Ruby或其它语言等。这样做的原因固然经常是出于必要,但 在很大程度上也是为了在每个特定工作最适合使用的工具之间提供匹配。
在开发云分布式应用时,开发者会掉入很多巨大的陷阱之中。从纯粹的开发者角度来看,最大的错误在于很容易在云的计算和存储环境中只是简单地构建一个传统的垂直堆叠在一起的应用。在云环境中使用按照传统架构信条所构建的应用,会付出高昂的代价,并且效率很低。然而一次又一次,我看到人们只是重新实现 某个垂直设计的应用 — Sharepoint、WebSphere和其他所能想到的。他们通常只有单一的 RDBMS,在此之上有个数据层,以及一个或者可能是几个应用节点,而这几个应用节点却位于某个有着SPOF的缓存层之上。