软件新动向

来源:互联网 发布:可以用手机开淘宝店吗 编辑:程序博客网 时间:2024/04/28 14:51
PaaS支撑了云计算

尽管互联网软件的架构体系千差万别,但不管是SaaS应用结构也好,云计算应用结构也好,我们基本可以将整个互联网软件技术划分为三个层次。这三个层次从上到下分别是:

1. SaaS (Software as a Service)

2. PaaS (Platform as a Service)

3. HaaS (Hardware as a Service)

当然,这些技术层次的形成也有一定过程。早期的SaaS应用都是直接运行在硬件设施之上,也没有什么PaaS的支持。后来,随着虚拟技术的发展,以及云计算模式的日渐清晰,

不管是从理论上还是从现实中,都需要HaaS和PaaS的技术来支撑上层的SaaS 应用。于是,HaaS、PaaS 和SaaS的三个技术层次就逐渐获得大家的认同。

虽然,这三个层次都是以WEB技术作为支撑的,但与传统应用结构却有着很大的相似性。图1 简单说明了云计算的三层技术与传统应用的技术结构的对比。

 vs

 

 

图1

其中的PaaS技术,是云计算技术中最关键的技术层,在整个云计算体系中起着支撑的作用。尽管HaaS用虚拟化硬件或虚拟运行引擎的方式,为用户提供了可伸缩的计算能力和存储能力,但HaaS仅仅起到的是云计算的基础设施的作用,就好比传统应用中的硬件设施一样。而PaaS就相当于系统软件的作用,可以为上层提供丰富的API,以开发各种各样的SaaS应用。不过PaaS的目标并不仅仅像传统的系统软件那样提供一些基础性的API,而是提供了更多高级的服务型API。这样,上层的应用就可以利用这些高级服务,轻松地打造面向最终用户的具体应用。

那么,到底什么是PaaS呢?

我认为,PaaS 就是以特定的互联网资源为中心,以开放平台的形式,对外提供WEB API服务的模式。因此,PaaS有下述三个明显特征。

 互联网资源中心

如今,互联网行业的竞争已不再是纯粹的技术竞争,而是越来越多的转向互联网资源的竞争。这些互联网资源包括用户群、可检索内容、商业信息、网络关系群体和在线服务资源等等。从某种意义上说,PaaS的目的就是以平台服务的形式对外提供互联网资源的增值服务。事实上,PaaS平台就是为了互联网资源而生的,对于缺乏互联网资源的PaaS平台是没有任何生命力的。唯有PaaS平台上有价值的互联网资源,才是对平台开发者最大的诱惑。

此外,各种领域知名的互联网公司也纷纷将自己长期积累的资源进行重新整合,推出各自的PaaS平台,对外提供特定领域的增值服务。当然,向外开放资源的也不仅仅只有互联网公司,一些其他行业的企业也加入到资源开放行列。这使得互联网可以被平台化的资源越来越多,越来越丰富,而PaaS平台的发展也越来越迅速。

 开放平台

开放是互联网的精神,而PaaS正是这种开放精神的具体体现。早些年,互联网的资源都给拥有资源的企业自己掌握的,对外仅仅提供最终客户的应用,几乎不开放给第三方开发者。

而当这些资源越来越多,价值越来越大的时候,拥有资源的企业本身已不再有能力去开发更多的增值应用。与此同时,有能力开发更多增值应用的第三方开发者,要求资源拥有方开放资源的呼声也越来越高。于是乎,一些资源拥有者开始逐渐开放访问资源的WEB API 接口,并伴随这些WEBAPI的设计规划以及运营监控,久而久之就形成了PaaS平台。

对于第三方开发者来说,他们没有能力去积累庞大的互联网资源,但通过调用PaaS平台开放的WEB API,就能为最终用户提供满足其需求的应用。这些丰富的应用极大地发挥了原来被封闭的互联网资源的价值,让互联网资源真正成为了创造社会财富的工具,这正是PaaS开放平台的最大成功!

WEB API

PaaS平台是以WEB API 形式体现的。除基本的后台管理功能外,不像最终的应用软件,人们看不到任何界面上的东西。PaaS平台完全是通过网络之间的WEB API 调用发挥其平台服务的威力的。这些WEB API 都是面向第三方开发人员的,最终用户看不到也不会去关心它。

WEB API 与传统软件的API 有很大区别,它与特定的语言和操作系统无关,完全采用标准的WEB协议或技术。任何语言或系统,只要遵循WEBAPI所使用的标准协议或技术,都能互相调用对方的WEB API。一个PaaS平台往往都会采用统一的标准协议来开放其WEB API,这些协议大都是建立在HTTP协议基础之上的,开发者只需按不同PaaS平台的规定来调用其WEB API即可。

在 WEB API 的形式方面大致有SOAP 和REST 两种风格。不过,由于SOAP在易用性和效率方面的问题,已逐渐被许多PaaS平台所抛弃;许多PaaS平台开始转向使用高效方便的REST 风格的WEB API。由于REST风格的WEB API 接口先天就是面向资源,因此在以资源为中心的PaaS平台中得到了迅速的发展。

PaaS的实质是将互联网的资源服务化为可编程接口,为第三方开发者提供有商业价值的资源和服务平台。有了PaaS平台的支撑,云计算的开发者就获得了大量的可编程元素,这些可编程元素是有具体的业务逻辑的。这就为云计算的开发带来了极大的方便,不但提高了开发效率,还节约了开发成本。有了PaaS平台的支持,WEB应用的开发变得更加敏捷。快速响应用户需求的开发能力,也为最终用户带来了实实在在的利益。正是因为这些原因,PaaS才成为云计算中最关键的技术之一。

 

PaaS运营模式

当前,PaaS平台技术成了各大互联网企业和阵营激烈争夺的主要战场,这场争夺战一点也不亚于当年的系统软件的争夺战。

然而,要做平台就意味着大量的资源和技术的投入。这不是一般的小企业能够做的,或者说小企业在做平台方面并没有什么优势。如果您是一家互联网企业的决策人,就应当清醒地认识到这一点。如果你拥有互联网资源和实力,就完全可以走PaaS平台化的发展道路,让你所拥有的资源发挥更大的价值。如果没有,则应该与各个PaaS平台合作,充分利用PaaS平台的WEB API 功能,共享他们的互联网资源,从而实现全面的双赢。

对于拥有互联网资源的企业来说,开放互联网资源不但能最大限度地挖掘这些资源的价值,而且还能促进资源的增长。但是,一家拥有互联网资源的企业打算对外开放其资源之前,要注意下面几方面问题。

1. 有自己的特色

PaaS平台提供的服务一定要有自己的特色,切忌盲目跟风。这里所讲的特色,首先应该是业务应用方面的特色,也就是说你所开放的PaaS服务最好是其他平台所没有的,或者是弥补了应用开发中缺少的服务。当然,如果在业务应用方面没有明显特色,也应该考虑是否在平台模式上有与众不同的特色。尽管大家都是类似的应用,但如果你开放的模式有吸引人的特色,也能在竞争中占得一席之地。

2. 运营和控制能力

做PaaS平台是需要较强的运营和控制能力的。运营指的是PaaS平台的营销和推广,以及平台的监控和维护等多方面的工作。虽然说酒香不怕巷子深,但在互联网时代的再好的东西

如果不做营销和推广,也会被层出不穷的新生事物给淹没掉。而平台和监控与维护,更是起到保证PaaS平台健康发展的重要作用。如果在运营和控制方面没有做好准备,贸然开发PaaS平台就可能会出现混乱的局面,从而失去平台的真正价值。只要有良好的运营和控制能力,才是保障PaaS平台稳定运转和健康发展的根本。

3. 渐进开放的策略

PaaS平台开放要遵循渐进式的开放原则,而不应该急于求成。如果直接将全部的资源和服务一下子都开放出来,第三方开发者未必能全面接受和消化。而某一资源或服务接口一旦开放,就必须维持该接口的长期稳定性,如果后期对不适当的接口进行调整,必将造成大面积的影响。因此,开发PaaS平台必须采用渐进开放的策略。成熟一批接口,再开放一批接口。其实,渐进开放也是保证PaaS平台健康发展的基本手段。

4. 维护双赢关系

PaaS平台的成长始终是伴随第三方开发者的成长而成长的,因此,PaaS平台的经营方必须与第三方开发方形成相互依赖的协作联盟。唯有这样,才能从经济利益上根本保证平台健康稳定的发展,实现双赢的目标。

PaaS成功运营的关键是要能让使用PaaS平台的第三方开发者获得好处。PaaS运营的基本方法就是;一方面做好PaaS平台的推广工作;另一方面要丰富和完善PaaS平台的服务能力。相对来说,丰富和完善PaaS平台的服务能力更加重要。

对于第三方软件开发者来说,使用谁家的PaaS服务也是需要认真考虑的问题。一般来说,一个WEB应用可能会用到多种PaaS服务,不过就同类的PaaS服务,合理选择PaaS平台商将在一定程度上决定所开发的应用是否能获得成功。主要可以从几个方面来思考:

首先是商业方面的因素。你的应用是否真的要用到这些PaaS服务?集成这些PaaS服务所带来的商业价值,是否要大于为此支付的PaaS服务费用?因为一旦使用了某个PaaS平台的服务,就意味着与该平台建立长期合作关系。慎重考虑商业方面的因素是非常重要的。

其次是该PaaS平台是否稳定可靠。这一点是保证WEB应用质量的根本。

最后是选择服务良好PaaS平台。PaaS平台所提供的文档是否充分?申请和认证是否方便? PaaS平台是否提供了相应后台监控和管理功能?遇到问题是否能得到及时的帮助?

总之,PaaS运营模式要获得成功,需要运营方和开发方通力合作。一个PaaS平台要吸引广大开发者,就必须不断丰富和完善自身的服务能力,保障系统的可靠性和稳定性,提高服务质量。

 

PaaS下的应用开发

当前,在云计算平台下开发模式大致有四种:应用开发平台模式,虚拟程序平台模式,虚拟机平台模式,PaaS接入平台模式。

应用开发平台模式

平台向开发者提供完整的应用开发功能,包括数据定义、编码、测试和发布等所有开发工作,都在这个平台上完成。PaaS提供的WEB API 也是与整个应用开发平台集成在一起的。这种应用开发平台有自己特定的编程语言,而为开发这提供的编程对象都是较为抽象的业务层面的东西。

 虚拟程序平台模式

平台向开发这提供某些特定语言的虚拟运行环境和基本的可编程设施,开发人员在本地开发满足这些运行环境的应用,然后将应用上传到该运行环境。这类平台属于HaaS层,是为云计算提供基础计算和存储能力的。通常,这类平台会向开发人员提供相关的SDK,以及调试用的本地模拟器。一些平台会将其本身的PaaS服务接口放到SDK中,而开发人员也可以自行编码调用自身平台或其他平台的PaaS服务。

 虚拟机平台模式

这是目前云计算环境中最低层次的开发模式,它利用虚拟化技术向开发人员提供一个最基本的虚拟计算机环境。目前, 这种纯虚拟机模式是HaaS最普遍的表现形式。开发人员在这个虚拟环境上开发和运行程序与在本地真实的硬件环境中没有太大区别。严格地说,这类平台与PaaS并没有直接的集成关系,开发人员需要自己编程调用其他PaaS平台的服务。

 PaaS接入平台模式

这类平台并不向开发人员提供计算能力,而是提供接入能力。开发人员需要自行解决应用系统所需的计算和存储能力,自行架设服务器或使用HaaS提供的虚拟计算资源等。所谓的接入,是PaaS平台与第三方应用之间达成认证关系,PaaS平台大量的用户资源将被引入到第三方应用,而第三方应用可以使用PaaS平台提供的大量服务,从而形式一种互利共赢的PaaS平台资源共享模式。对于开发人员来说,开发这类平台的应用需要的改造成本最低,开发人员调用平台的PaaS接口容易实现。

在这些平台上开发,特别是使用PaaS服务,确实与传统的开发方式不太一样。你会感觉到以前那些值得骄傲的技术和技巧似乎都用不上了,取而代之的都是一些脚本化的语言,或者是枯燥WEB API 调用的组合,以及在网页中插入代表某种的PaaS服务的扩展标签。但不容置疑的是,这正是未来互联网软件开发的一个方向。因为,未来的互联网应用开发,就是将各个PaaS平台提供的素材粘合起来,这是一种被称为Mashup的应用开发模式。

因此,有人说:云时代的应用开发,编程技术已不再重要,重要的是应用本身!

当然,说这句话除了有开发方式转变方面的原因之外,还有软件使用模式转变方面的商业因素。用户可选的应用非常多,Mashup式的开发方式也让应用开发变得更容易。再加上SaaS应用的特点本来就没有传统软件那些烦琐的安装和卸载,用户对一个应用不满意,要换一家企业的应用也是很容易的。这就意味着,未来的开发必须以快速响应和满足用户的需求为主,而在企业竞争力中,开发技术本身只能退居二线。

作为程序员,我们将不得不面临这样的转变。也许,对于传统软件开发有深厚感情的程序员来说,这种转变或许会经历一定痛苦。但是,如果我们不能适应软件行业的这一变化,就可能会被这个行业所边缘化。同时,程序员在钻研技术的同时,要更加贴近用户,真正从用户的需求入手来选择不同的技术手段。这是一个商业驱动技术的年代,或许技术的进步可以促进新的商业模式,但总体的方向是商业驱动技术。我们也必须清醒地看到这一点,我们唯一能做的就是:拥抱变化!

 作者简介:

李战,阿里软件的老顽童,资深架构师。有近2 0 年的软件开发经验,属最老一代程序员之一。早年从硬件设计与开发,后来转向纯软件领域,历经汇编开发时代到今天的云计算开发时代的整个历程。目前在阿里软件从事云计算方面的研究与开发工作。