第三章 开发云服务(2)

对开发者而言,升级一个云应用比传统的桌面软件更容易。只需要升级集中的应用程序,应用特征就能快速顺利的得到更新,而不必手工升级组织内每台台式机上的单独应用。有了云服务,一个改变就能影响运行应用的每一个用户,这大大的降低了开发者的工作量。

云开发的不足

也许人们所意识到的云开发最大的不足就是给所有基于web的应用带来麻烦的问题:它安全吗?基于web的应用长时间以来就被认为具有潜在的安全风险。由于这一原因,许多公司宁愿将应用,数据和IT操作保持在自己的掌控之下。

也就是说,利用云托管的应用和存储在少数情况下会产生数据丢失。尽管可以说,一个大的云托管操作可能比一般的企业有更好的数据安全和冗余的工具。然而,在任何情况下,即便是感知到的来自关键数据和服务异地托管的安全威胁也可能阻止一些公司这么做。

另外一个潜在的不足就是云计算宿主离线所导致的事件。尽管多数公司说这是不可能的,但它确实发生了,亚马逊的EC2业务在2008年2月15日经受了一次大规模的服务中止,并抹去了一些客户应用数据。(该次业务中止由一个软件部署所引起,它错误的终止了数量未知的用户实例。)对那些需要可靠和安全平台的客户来说,平台故障和数据消失就像被粗鲁的唤醒一样。更进一步讲,如果一个公司依赖于第三方的云平台来存放数据而没有其他的物理备份,该数据可能处于危险之中。

注意

亚马逊声称,通过将应用的实例放在多个地方并指派专为云计算设计的弹性IP地址,他们已经解决了导致系统故障的原因。

云服务开发的类型

云服务开发这一概念包含几种不同的开发类型。让我们来看一下一个公司能够利用云计算来开发自己的业务应用的不同方法。

软件即服务

软件即服务(SaaS)可能是最普遍的云服务开发类型。有了SaaS,一个独立的应用通过供应商的服务器交付给成千上万的使用者。客户不必为拥有软件而支付费用,确切的说,他们支付使用费。用户通过web可以访问的API使用应用。

注意

一个API(应用开发接口)是一个接口,它使得一个远程程序能够与另外一个程序或服务进行通信或使用其资源。

供应商所服务的每一个组织都称之为一个租户,这种类型的安排称为多租户架构。供应商的服务器被虚拟的划分成多个部分从而使得每个组织都可以利用定制的应用实例进行工作。

对客户而言,SaaS无需前期的服务器或软件许可投资。对应用开发者而言,只需要为多个客户端维护一个应用。

许多不同类型的公司都在利用SaaS模型开发应用。也许最为著名的SaaS应用就是谷歌为自己的客户群所提供的应用。

平台即服务

平台即服务(PaaS)是SaaS的一个变种,整个开发环境作为一个服务而提供。开发者利用供应商开发环境中的“结构单元”来创建自己的客户应用。这在某种程度上就像利用Legos构造应用,尽管最终应用在一定程度上受到可用代码块的限制,但利用这些预定义的代码块,应用的构建变得更容易。

Web服务

一个Web服务就是一个在网络上,通常是因特网上运行的应用。更典型的说法是,一个Web服务就是一个能够通过因特网访问的API。用户所请求的服务运行在远端系统上,后者充当服务的宿主。