超越传统软件开发技术
51CTO:王老师,阿里软件是国内较早进入SaaS领域的厂商,也是目前国内用户数量最多的SaaS平台之一。作为阿里软件的核心开发人员,您对SaaS有怎样的认识?您如何看待近年SaaS的发展的?
王安全:对于SaaS有两种理解,一种是Software as a Service,另一种是Service as a Software;无论哪种理解都是两个关键词:Software和Service。
对于一个软件开发者来说从SaaS里引出的关键词有:互联网、WEB、大规模、Service、定制、软件、服务,连起来说就是我们在互联网环境下为大规模用户开发可定制的软件和服务(定制是SaaS发展的高级阶段)。这个大规模对我们来说其实有两层含义:一是用户量大,二是数据量大。
51CTO:SaaS、云计算、虚拟化……,我们处在一个新名词,新概念,新技术层出不穷的时代,您觉得SaaS是一个商业词汇?还是一个技术词汇?开发人员该如何面对不断出现的新概念和新技术?
王安全:SaaS既是一个商业词汇,也是一个技术词汇;说他是商业词汇是因为SaaS是一种新的商业模式,在这种模式下软件、数据都可以成为一种服务,可按时长或次数等多种计费模式进行消费;
说他是技术词汇是因为SaaS模式下的软件开发有很了许多新的技术,比如说Multi-Tenant架构、定制、OpenAPI、计费等,也增加了许多约束,如多用户、大数据量、高并发等,都需要用超越传统软件开发的方法去解决这些问题。
51CTO:云计算也是当前比较热门的技术;SaaS为云计算提供了良好的表现和实现形式。您如何看待云计算与SaaS的关系?商业云在阿里的整个SaaS体系中处于怎样的位置?
王安全:首先要对云计算有一个清晰的定义才行,目前对于云计算并没有教科书式的经典定义,市场上主要的供应商的定义和产品也各不相同,比如Amazon和微软就各有重点,但是基本上描述的都是计算和存储能力。
阿里软件也有自己的云计算方案和产品,我们的云叫做商业云(Business Cloud),我们认为云和云端的出现不仅仅是SaaS的运行和表现容器,更是SaaS的升级模式;如果计算能力总是用最初级的CPU频率和计算时间来表示,那就太过于底层了,对ISV和终端用户来说麻烦和抽象,我们认为计算能力的更具象的表现是商业服务,比如处理一个流程,更高级的比如订一张从北京到杭州的机票,这样更接近现实生活,对用户来说更简单和形象。
我们认为SaaS中的S会构成一个巨大的云,这些S既有OS层的计算、存储能力等底层服务,也有流程处理、搜索等独立商业服务,更有订机票、招聘等完整的商务流高级服务,这些服务在云里的表现形式或是App,或是API。
51CTO:阿里软件通过开放API的方式吸引了大批开发者参与到阿里平台的建设,同时,开发者也提供了更多优秀的软件供用户使用。现在,Open API受到了越来越多厂商和开发人员的关注。在SaaS时代的API与我们传统API有哪些改变?
王安全:首先API的含义发生了改变。API其实是一种能力的抽象和暴露,在单机上(比如一台Intel + Windows)API只是将硬件和Windows的能力抽象和暴露出来。
在SaaS模式下,API可以把整个互联网的能力进行抽象和暴露,每个API后面的含义更加丰富了,不再是冰冷的纯硬件或软件,可能是一个有多人完成的复杂现实业务,比如说一个订酒店的API就代表了一组呼叫中心的客服代表和酒店间的业务交互,这在单机环境下不可想象的。
API的表现形式也发生了很大的改变。最简单的API是在单机上同一编程语言的API形式,即源码形式;复杂一些的是内存空间相同,编程语言不同,像OLE、COM之类;更复杂的就是不同内存空间和编程语言也不相同,像COM+、CORBA、RMI、WEB Service等;
到了互联网时代许多不同的平台和技术需要联通,这就需要更好的API的表现形式和载体,HTTP和URL的提出是一个巨大的进步,SaaS基于互联网,很自然的采用了HTTP协议,所以SaaS中API开放大规模采用WEB Service方式,在WEB Service的多种方式里,阿里软件更喜欢REST,REST轻量、易懂,语义化更强。
阿里软件目前公开的API列表在这里:
http://wiki.isv.alisoft.com/index.php/%E6%9C%8D%E5%8A%A1%E9%9B%86%E6%88%90%E5%B9%B3%E5%8F%B0_API_%E5%88%97%E8%A1%A8
http://wiki.isv.alisoft.com/index.php/%E6%9C%8D%E5%8A%A1%E9%9B%86%E6%88%90%E5%B9%B3%E5%8F%B0_API_%E5%88%97%E8%A1%A8
51CTO:与SOAP相比,REST更加轻量、高效和简洁。但阿里平台上的API有些会涉及到交易和用户方面的业务,对于安全性要求较高的接口,REST是否合适?
王安全:就安全方面来说,REST和SOAP本身是一样的,可以支持任何方式,包括证书认证,SOAP本身不存在安全规则,仅仅是在WS-Security附加在SOAP上才有了成熟的安全机制。
SaaS时代的编程语言
51CTO:SaaS对开发人员所使用的程序语言会产生什么影响?我们最近经常看到函数语言和动态语言方面的报道,比如函数语言(Erlang、F#)对于云端高并发、低副作用的优势和动态语言(Ruyb、Python)在敏捷方面的优势等等。您如何看待程序语言的发展?
王安全:在SaaS初期来看单纯就编程语言上来看并没有太多的变化,采用Java、Python、PHP都可以,但是从发展的趋势来看动态语言越来越流行,主要原因有下面两个:
1、简单、易学易用
2、Hosting环境多,成本低
2、Hosting环境多,成本低
在越来越多的开发者切换到SaaS开发上来了后,就会出现SaaS技术支撑平台(即我们所谓的PaaS),为开发者提供计算、存储、监控、工作流、任务调度等基础设施,使开发者快速开发出稳定的、高性能的SaaS应用,此时开发语言就会跟提供计算能力的环境就有些关系,比如Google的AppEngine目前就限定使用了Python。
阿里软件目前也在致力于计算能力的提供,相信在今年就会有具体的产品和大家见面。
51CTO:阿里平台现在支持.NET、Java和PHP来开发,您比较推荐那种语言?您理想中的SaaS开发语言应该具备怎样的特性?
王安全:我们目前覆盖了主流的开发语言,单纯从言语的角度来说应该是没有优劣之分,从部署成本来说脚本语言有些优势,如果不做平台的话我比较推荐轻量级的脚本语言,如PHP、Python都可以;
从长远来看会依赖于SaaS开发平台,比如Google的App Engine采用了Python,阿里软件将来的开发平台会以定义配置为主,小量的地方需要开发人员写代码逻辑,采用Java和JS。
说实在的,我没有什么理想中的SaaS开发言语,只要他具备描述业务和调用WEB Service接口就应该可以了。
51CTO:目前阿里平台只提供了B/S类型的接入,阿里何时会推出C/S的接入类型?Web无疑是实现SaaS最理想的载体和实现方式,您如何看待SaaS时代的C/S软件的发展?
王安全:其实阿里软件早就推出了C/S软件的接入,我们不但做了接入的SDK,还在做将客户的C/S软件作为插件插入到我们的阿里旺旺上的桌面平台,目前已经有很多C/S应用成为了阿里旺旺的插件。
C/S目前还是数量多、用户粘度高,C/S软件的SaaS化还是大有可为的:
1、SaaS化不单是技术和产品的需要,更是软件公司商业的需要。软件的付费模式、服务方式要SaaS花才有出路,网游就是最好的C/S形式的SaaS软件。
2、原有的C/S软件改造成B/S软件成本高。
3、有些软件必须运行在客户端,比如有使用到一些硬件特性的软件,如摄像头,OS或者平台是不会全部将工作做完的,需要我们进行必要的开发。
51CTO:SaaS的软件架构与传统的软件架构方面有哪些不同?软件在需求和研发方面有哪些不同?
王安全:建议你购买阿里软件9位架构师合著的《互联网时代的软件革命-SaaS架构设计》,里面有你需要的详细答案。
SaaS时代的程序员
51CTO:面对这种变化,程序员在SaaS时代命运如何?
王安全:说实在的,在SaaS时代,技术将退居二线。因为SaaS是以服务用户为中心的,任何技术都必须围绕商业需求转。在SaaS平台方面,运营才是王道;而在SaaS应用方面,快速满足用户需求才是制胜之道。
所以,程序员必须树立以商业需求为中心的开发思想,程序员的命由用户需求说了算。特别是SaaS应用的开发,每个应用软件的功能都差不多,价钱也便宜多点少点也无所为,谁能快速满足市场需求,谁的软件就买的好。
这时,在SaaS平台上开发就会有很大优势,比如,阿里软件正在打造的Xplatform就是一个快速开发平台,她的最终目标就是实现大规模集成和大规模定制。
走进SaaS应用开发
51CTO:51CTO网友在看到我们的访谈后,也想进入SaaS开发,他们应该做怎样的准备?
王安全:SaaS将使程序员产生分化,即SaaS平台开发人员和SaaS应用开发人员。与当年的系统开发和应用开发相似。这取决于你想加入SaaS平台开发还是应用开发。但应用开发一定是占大多数的。
要成为SaaS平台开发人员,最好加入Salesforce, Google,Microsoft, 或者咱们阿里软件这样的公司,平台开发不是小公司能做的。如果想在SaaS应用方面大展拳脚,也建议大家在SaaS平台上开发,最起码也要调用SaaS平台提供的API。
平台并不仅仅是一个开发平台,更重要的是一个资源平台。比如,阿里软件互联平台就包含阿里巴巴1个亿的客户资源,还有大量及时的B2B, C2C信息资源,她既是资源平台也是SaaS市场平台,开发人员可以直接在这个平台上开发和销售的。
51CTO:SaaS平台开发人员和SaaS应用开发人员的分化对他们的技术结构有哪些不同的要求?这两类开发人员都需要具备哪些知识呢?
王安全:首先是要会一门编程语言。目前WEB是主流,所以确切的说是一门WEB开发语言,如Java。
第二是数据库技术。熟悉基本的SQL和数据调优技术。
第三是WEB前端开发技术。WEB成为主流,用户体验要求越来越高,目前JS仍然是WEB的重器,掌握一到两个JS框架是不可少的,如jQuery;Flex、JavaFx等技术目前还没有成为主流,可以关注一些。
第四点是WEB Service技术。在SaaS下的Open基本上都会采用WEB Service来进行,你必须知道WEB Service技术和相关的知识,如REST。
最后,第五点就是3G在中国已经发牌,未来3~5年手机上的应用一定会火起来,你的应用是否需要一个手版本这就很重要了,目前手机端的开发技术有WAP、OS Native、J2ME、Widget、中间件等模式。Apple和Google的AppStore和Android Market是不错的模式,他们的开发都是基于自己的一套标准开发,相信不久的将来就会在手机上出现更接近Native的中间件。
51CTO:SaaS开发的学习难度怎样?我们需要留意那些技术?
王安全:世上无难事,只怕有些人。其实,学习SaaS开发与传统开发并没有多大不同,只是你得适应SaaS开发的模式,适应SaaS那些WEB API调用形式。刚开始接触SaaS应用开发的程序员会觉得SaaS平台那些API长得很奇怪,调用模式也不同,有同步的。有异步的,涉及一大堆确保调用安全的必备参数,甚至还要对每次签名等等。其实,适应之后就好了。
SaaS目前还处在高速发展阶段,技术上远没有成熟,需要不断的吸收各个方面和领域的技术和知识,WEB2.0技术是讨论很热的区域,很多技术我们都需要用到:
◆ LAMP,性价比很高的SaaS环境搭建技术,无论是用来搭建单个SaaS应用,还是搭建一个SaaS技术平台;目前阿里软件就采用了MySQL来搭建分布式的结构化存储集群,很多关键应用已经开始跑在上面。
◆搜索,比如说Lucene,搜索是一个很重要的技术,阿里巴巴有完整知识产权的高性能搜索引擎,我们也采用Lucene这类优秀的开源产品。
◆前端技术,SaaS对前端技术有很高的要求,目前以JS为主,相信接下来Flex等RIA技术会大放异彩。
◆Hadoop,分布式计算设施,对于要搭建SaaS平台的公司来说是一个高性价比、快速的方案。
◆SNS,SNS在SaaS运营中会起到巨大的作用,一般来说,很多SaaS产品都可以植入SNS,达到病毒式营销的效果。SNS技术的重点有好友关系、好友搜索、好友动态。
◆OpenID, 可以稍微了解一下,目前支持的公司不是很多,但是OpenID的技术思想可以借鉴。
51CTO:现在有很多的SaaS平台,开发人员应该如何面对?怎样挑选适合自己的开发平台?
王安全:平台的差异比操作系统的差异更让程序员头痛,这的确是个大问题。
我想,在SaaS平台还没有完全进化为WEB OS之后,相关的WEB API规范都成熟之后,问题会好很多。不过,阿里软件有一个SIP中心,也就是WEB API调用中心。这个SIP集中了淘宝、支付宝、以及众多第三方的WEB API,这些WEB API在阿里软件互联平台上有一个统一的调用规范。而且,SIP还在不断地引入其他公司的WEB API。
因此,如果使用阿里软件的SIP,开发人员只会面对一套WEB API,不会面对众多的SaaS平台。这也是阿里软件互联平台与其他SaaS平台不同的地方。
51CTO:网友看过我们的访谈后,想到阿里平台上开发自己的应用,您又哪些经验可以跟我们分享?需要注意什么问题?
王安全:首先,一定要认识到未来的开发一定是很大一部分基于互联网的开发,互联网操作系统一定会出现,我们要把眼光放远些。
其次,开发人员不再处于单打独斗的年代,求伯君很难再现,协作、共享、平台化是开发的新模式,重用能力比开发能力更重要,不要成天想着发明轮子,用现有的轮子搭个车更有价值。
最后,创新力是差异化的杀手锏,在互联网时代,小小的创新可以被放大到非常惊人的经济效益,我们要善于发现现实和网络生活中的不便,思考出更简单、高效的方法改造这些不便的地方。
3G已经来临,我们应该试着开发几个手机应用了!
51CTO:通过本次访谈,我们基本了解了SaaS时代的开发人员应该具有怎样的技术结构和知识储备,深入了解了如何在SaaS平台上进行应用开发,王老师向我们全面展示了SaaS应用开发的过程和相关的开发技术,与我们分享了阿里平台应用开发的相关经验。让我们对SaaS时代的开发技术有了一个全面深刻的认识,感谢王老师细致耐心的讲解。
网友精彩问答
网友子非:云计算描述的是计算和存储能力吗?
王安全:云计算原本是强大分布式计算和存储能力的一个代名词而已,本质上就是计算时间和存储能力的提供。在云上开发出不同的软件或服务只不过是将计算和存储具体化,更接近客户。
网友Jack:在阿里的SaaS平台上开发应用是不是跟以前集成支付宝接口是一样的吗?
王安全:有些不一样了,我们提供了一个叫做SIP(Service Integeration Platform)的基础设施,通过RESTFul Style形式进行服务调用,保证接口技术是统一的,以后我们会逐步提供业务语义标准化的接口,如如何买一张机票的接口
网友lokke:一般,在阿里平台开发一个应用软件要多久?一般的,像流量统计什么的
王安全:目前开发一个应用要视什么样的业务类型,如淘宝类型的,就会很快,因为我们已经接入了淘宝的API;我们还会逐步将许多不同行业的API接入,提供给我们的开发者,这是从业务层面说。从技术层面,我们会提供用一些非常有用的基础设施,如搜索、流程、任务、性能监控、用户等,极大的减少开发时间,只需要调用我们的服务即可,像流量统计就不需要开发了,我们已经提供了基础的服务;另外我们试图提供一个在线的开发平台,这个平台集成了我上面列举的基础服务和业务组件,我们也提供了一系列的开发标准,如UI组件标准。
网友Jack:在阿里平台上,是不是可以想开发什么就开发什么?阿里有没有一些用户需求方面的引导?
王安全:没有限制,但是阿里软件会将用户需求提供给我们的开发者,一方面让开发者可以一对一提供开发服务,另一方随着开发者需求的积累完全可以把这个软件开放给更多的人来使用,获得更多的客户,阿里软件就是帮助开发者开发软件,撮合用户和开发者的软件交易。
网友DSDC:王老师可不可以给我们介绍一下阿里软件的电子商务云计算中心
王安全:首先,我们不可避免的会提供计算和存储的服务,但是我们肯定和google、amazon会有非常大的差异,差异目前还是商业机密,不好意思,暂时不能暴露,相信大家在不久的将来就会看到我们的商业云产品了(business cloud)
51CTO网友:阿里现在开放的API能全部满足软件需求中的功能吗?如果不能满足怎么办?要自己写API?自己写了API 能放到阿里的云上吗?那些api应该都是webservices实现的吧?
王安全:阿里软件提供的API肯定不能完全满足开发的需求。如果不满足可以自己写,写好后同过我们的SIP接入到阿里软件的平台上,提供给自己或别人用,可以按调用次数或包月等方式进行交易。另外我们也一直会不断的引入各种各样的API,你也可以成我们的服务提供商(ISP),我们希望这个平台上有非常多的API,而且希望这些API背后不是一个简单的机器计算,而更多的是一个商业服务。
目前是的,但是我们会逐步在技术上将很多东西转化成一个API,比如一个网页,以方便开发者将自己的东西变成服务。
网友kkdk:在校的计算机专业的学生能做SaaS开发吗?您提倡一开始就做SaaS开发吗?
王安全:能,非常好的尝试。未来的开发者一定会是SaaS开发模式,因为我们开发出来的应用要给很多人用,希望有好的收入,希望能够快速开发。。。做网站就是SaaS的初级阶段,软件互联化一定是潮流。
51CTO网友:这种SaaS开发对技术有怎样的要求?比如两年经验,三年经验,开发过几个项目,有类似的技能要求吗?
跟你依赖的平台有关,平台越完整,开发者就越简单和快速。但是我们来说对用户的理解和用户体验的改进是需要时间的,这一点时间我们不能节约,但是我想阿里软件SaaS平台上的庞大用户群和众多的基础设施、API会帮助到你。对于技术,必须要知道一门开发语言,知道XML、Web Service、Http等相关的知识,门槛还是不高的。