据小编了解,“云计算”这个标签适用于很多项技术,遍布于业界和厂商的炒作。但是大部分人都知道,云计算绝不是公用计算(utility computing)或者像其它的服务这么简单。
这种区别对于软件开发人员来说特别的重要;他们都知道,这一大热门技术,很有可能影响自己的工作。聪明的人往往会关注职业的发展,编程人员总是在千方百计的提升自己的技能,那么为下一项不可或缺的技术作好充分的准备也是理所当然的。
与“普通的”Web开发相比,云计算开发到底有什么不同?如果编程人员想准备好充分利用任何一种云计算:软件即服务(SaaS)、平台即服务(PaaS)或基础架构即服务(Iaas),那么他应该关注哪些技术呢?如果贵公司之前一向从事Web开发,但现在打算大规模采用云计算,那你又应该关注哪些独特的技能呢?由于SaaS开发人员操心的问题可能与使用虚拟开发环境的人员操心的问题全然不同,而业界把“云计算”视作是一种整体式技术,所以学习过程可能会更让人晕头转向。
我请教了经验丰富的开发人员和开发商(因操心这些问题而夜不能寐的技术人员,而不是营销人员),听听他们有何高见。
“在云计算环境开发应用程序就有点像是从美国到访加拿大。几乎每个方面都一样,但是你会注意到存在一些细小的差异,必须顾及到。”--Standing Cloud公司的David J. Jilk
因而,下面概述了你在探索云计算时需要关注的几个方面,包括工具、可扩展性、安全性、架构设计以及不断增加的基础架构知识。
了解你的工具
我们不妨先把简单的部分搞定。向云计算迁移可能需要你学习新的应用编程接口(API),比如面向谷歌应用引擎、SalesForce.com或者你的应用程序将来依赖的任何软件的API。对于大多数开发人员来说,学习新的API、研究新的数据库工具或者探究新的开源平台是很平常的事,不过你的确需要为此留出时间。
另外,虽然一些开发工具拥有允许部署在云计算的插件,但是编程人员必须学习那些功能特性。Ektron公司的工程主管Alpesh Patel说:“以微软SQL Azure为例,存在‘普通的’Web开发环境没有的技术障碍。”你可能只好尽快熟悉稀疏列(sparse column)、扩展存储过程(extended stored procedure)、服务代理(Service Broker)或通用语言运行时环境(CLR)和CLR用户定义类型。
这些工具或升级版有许多比较新颖,所以你可能要注意它们存在的局限性。Patel说:“根据我本人的经验,微软Windows Azure平台不允许在网站中使用混合语言。网站模板、控件、应用程序代码及其他几种组件都必须作为单一语言来运行。我们只好把原先基于SQL服务代理的队列技术改成自定义的队列解决方案。”