透明思考


Transparent Thoughts


当通信业遇到云计算(下):实施

上一篇文章讲到,运营商开展云计算业务的第一步,是把计算资源云化并以IAAS的形式出租。现在我们就来看这件事要如何落地实施。

功能:IAAS要做什么

从用户感知的角度,IAAS意味着对几种关键计算资源的按需取用、按使用计费、弹性伸缩。这几种关键资源是存储(内存和外存)、计算(CPU)和网络(带宽和流量)。说白了,用户希望快速开通自己想要的机器和网络,让它投入运行。

从运营商的角度,提供IAAS意味着至少要实现几方面的能力:

  • 虚拟化(Virtualization):将现有的、大批量的计算能力(大型主机、磁盘阵列、千兆以太网)加以虚拟化,使之可以被重组为可出租的小单元。
  • 监控(Monitoring):在客户租用计算能力的过程中监控其使用情况,以便计费并及时发现异常事件。
  • 计费(Billing):根据用户对计算能力的使用情况对其收取费用。

这三方面能力实际上分别对应于IAAS服务的开通、使用和结束三个阶段。云计算平台的架构描述(例如OpenStack的概念架构)可能包含更多模块,但它们最终是服务于这三个阶段的。

建设:如何打造IAAS平台

对应于前面提到的三项基本能力,运营商需要做以下几方面的工作来提供IAAS服务:

利用开源平台实现资源云化

现有资源的虚拟化已经有众多虚拟机产品(例如VMWareKVMXen)可以实现,IAAS平台应该使用这些虚拟机产品作为底层驱动,在其上提供服务开通、监控、镜像管理等功能。对虚拟机产品的适配以及上述通用功能已经有多个开源平台实现,没有理由重新发明轮子。

在选择开源平台时需要考虑授权许可的问题:例如桉树的开源版本使用了GPL协议,基于其上开发商业应用就会遇到授权问题;而基于Apache协议OpenStack则没有类似问题。(详见各种开源授权协议的比较

集成账务/计费

OpenStack当前的文档中明确指出:目前OpenStack尚未提供计费组件,并且由于云计算服务提供商大多有自己的计费系统,因此OpenStack关注的重点是与现有计费系统的集成。

与之类似,在选用其他开源(乃至商业)云计算平台时,与现有营帐/计费系统的整合都将是一块主要的定制开发工作量,也是厂商设计云计算平台时的重点之一。

定制用户界面

此处所说的“用户界面”是指“用户可感知的界面”,包括API、dashboard、portal等。需要将开源平台提供的用户界面定制为具有运营商特征的界面、甚至需要本地化,这是一块工作量较大、但技术难度较低的工作。

对于IAAS而言,API的重要性甚至超过图形用户界面,因为用户绝大部分的工作都将通过API进行。提供清晰、规范、利于自动化的API,对于用户的体验非常有益。

能力:对研发提出什么要求

对于真正要设计实施云计算平台的厂商而言,首先对开源云平台的经验是必不可少的。这种经验不仅局限于对平台本身技术特性的了解,采用开源云平台亲身实施私有云的经验也是弥足珍贵的,因为这些经验将有助于厂商开发出更便于使用的IAAS产品。

在开发的过程中,针对基础设施的自动化构建、自动化测试的能力也是不可或缺的。以欧洲为源头发起的DevOps运动提出了Infrastructure as Code的口号:在涉及大量基础设施的环境下,基础设施本身就应该被当做源代码来看待,需要良好的设计、优雅的编码、不断的重构、持续的集成和测试。在编写应用软件代码中积累的相关经验,在云计算平台的开发过程中同样能发挥价值。

云计算平台本身实际上也是一个面向公众用户的互联网产品,它也需要在持续交付中不断获取反馈、不断改进。实际上,开发云计算平台的厂商可以尝试吃自己的狗粮,在企业内部部署并使用云计算平台提供IAAS服务,不失为及早获得真实用户反馈的一个好办法。

从业务和技术两方面来说,云计算都是一个全新的领域;但云计算平台也是一款软件,而软件开发最基本的设计原则仍然是保持不变的。充分利用已有的软件开发最佳实践(例如敏捷软件开发),并保持开放的心态学习最新技术,传统通信行业的软件开发者和企业也能很快找到自己在云端的定位。