幽灵学院

关于云开发运维、云计算标准的一些思考

2018-12-06 18:53 来源:网络整理 编辑:幽灵学院  人气:   评论一下

云计算目前仍然是IT领域里最热门的名词之一,在各种技术论坛或者研讨会上,都能听到大家在讨论云,参与对象包括硬件厂商、软件厂商、大型企业用户。不同于以往只是大谈云的理念,展望云计算的前景,现在都谈论的的话题已经是云设备、云平台和云应用,纷纷从观望等待转向云计算的实践之路。

有人说云计算是一个大的技术革命,带来巨大的技术创新。也有人说云计算是一种市场理念,是对原有技术的一次包装,只不过是新瓶装旧酒。无论各方如何争论,大家至少都认可云计算对IT的发展带来了新的契机,并在云计算的基本特征上达成共识。云计算的基本特征包括:

本文不关注云计算的具体实现技术,只从云计算涉及的开发运维、标准规范及不确定因素等方面提出个人的一些思考,希望能够给云计算的各方推动者提供一点不同角度的见解。

1、云计算的优势

云计算首先解决了应用部署中的基础设施和平台环境的准备难题,使得软件开发人员不再为硬件的维护和集成耗费精力。云计算的部署充分发挥了计算能力的集约化效应,由于充分利用了硬件虚拟技术,在一台主机上可以虚拟出数倍于物理主机能力的设备。由于云计算平台对不同操作系统主机镜像的同时支持,使得不同版本的操作系统可以和平共存,改变了传统应用随操作系统升级被动升级的局面。

云计算提供了不同层次的开箱即用服务:在IaaS层提供了定制或标准化的硬件配置及操作系统的开箱即用;在PaaS层提供了开发部署环境和中间件平台等平台级软件需求的一站式满足;在SaaS层可以为中小企业或个人用户提供标准化的软件服务。

云计算技术的出现和应用,与社会化专业分工有异曲同工之妙。在硬件设备、中间件平台、应用独立部署自成一体的年代,软件系统类似于人类社会中早期的建筑公司,要从机械设备购置开始到雇佣技术工人来完成一项建筑工程,是麻雀虽小五脏俱全。建筑公司受设备规模和技术工人的限制,制约了公司的发展。在任务需求增大和减少时,设备和人员都是公司面临的难题,需要的时候不趁手,用不着的时候还要养着。基础设备服务公司的出现(类似于云计算中的IaaS提供商),解决了设备的难题,可以提供包括仓库出租、机械设备出租等硬件租赁服务。在基础服务的基础上,衍生出了中间服务商,提供水暖安装、隧道开挖、物料运输等专业服务,服务商把人力和设备进行了包装(相当于云计算中的PaaS提供商),提供专注于某项专门技能的专业服务。建筑公司则主要关注组织管理和施工协调以及前端寻找市场的能力。

从社会学角度看,专业化社会分工必然会增加管理成本,这在云计算实践中也是同样的。同时专业化社会分工又为服务租用方带来节约成本、增强市场应变能力的好处,为服务提供商带来因规模化和集中化效应降低单位服务成本而产生的差额利益,对双方而言是获得了双赢的机会。而在云计算中,由于主机及存储资源在虚拟能力和实际占用资源的差异,软件和中间服务软件等虚拟资产的可复制性,服务提供商具备了更灵活的利润空间,从而促进服务价格的进一步下调,吸引更多的服务使用者,这也正是各方积极投身云计算实践的重要驱动力。

2、云计算对应用开发的挑战

云计算是互联网信息技术发展和信息服务需求共同作用下的产物,传统的软件开发模式并不能直接适用于云计算环境下的应用开发。在IaaS层面的云计算环境中,由于平台提供的是标准化的可水平扩展的虚拟机供给能力,因此当应用需求的主机计算能力高于虚拟机能力时,开发人员需要对应用程序进行解耦,分解成多个可以在分离的虚拟机上运行的细粒度应用,通过调度程序来协调各个程序间的任务。

在PaaS层面的云计算框架中,平台提供了进一步的抽象,通过对云应用进行分类,总结出实践中的共性问题,抽象出特定的模式和解决方案。提供了包括负载均衡、缓存、数据存取、消息通信等基础功能服务。

由于PaaS平台提供商在平台软件和基础服务的实现上具有多样性,提供的基础服务面向不同的特定需求,所针对的应用类型、客户定位和实现方式上也存在差异,这给最终开发者的应用带来运行在不同PaaS平台上时必须面临的兼容性问题。

当在PaaS平台上开发云计算应用时,需要遵循平台层提供的一系列开发规范。由于平台层提供了应用部署、应用性能管理、使用计量和计费等基础服务,因此在应用开发规范中约定在应用中必须挂载一系列的测试桩。由于平台的许多配置是不允许应用开发者随意进行调整的,这将带来调优方面的影响。如果应用还需要把自己的一些功能暴露为服务,供其他应用所用,应用开发者还需要考虑服务注册等问题。此外,云应用本身还要考虑集成来自不同云服务提供商所提供的功能或服务。

事实上,采用云计算对开发的需求并没有降低,因为最终实现的功能在最终用户看来是一致的。所以云计算的采用,对于企业的前端业务需求部门,没有明显驱动力,需求部门不会鼓励IT部门去采用云计算,也不会承担云计算带来的风险。因此企业的IT部门必须想办法把采用云计算可能带来的风险以及未来持续发展中的风险消灭在部门内部。

前面谈到的都是云计算对开发带来的新要求,换个角度来看,云计算也为应用开发带来一些积极的变化。在传统的应用开发中,由于系统软件、中间件平台、数据库和开发环境的不断升级,已有程序的运行环境不断受到挑战,每次环境升级带来的程序兼容性检查都是一个梦魇,系统的不兼容性常常是系统运行所面临的最大问题。而在云计算环境下,用户对操作系统等运行环境拥有了自主选择权,用户完全可以将原有应用运行在安全的沙箱环境内。

云计算的技术的引入,也为大规模应用传承开发的未来指明了方向。计算机应用软件在企业的大规模使用自20世纪90年代开始,经历的几乎都是应用开发、部署、迁移、升级、换厂商、再开发部署这样的轮回。如果看各大企业的软件资产,除了在用的系统外,多年前的软件投资已经几乎见不到任何踪影。早期的软件变革通常是由于流程未固化,需求变化等原因造成频繁升级,本质上软件的基本功能是适应生产需求,而从企业的长期发展来看,虽然局部的流程调整是存在的,但大部分基本功能还是稳定的。因此对企业应用来说,基本功能在长期也是应该稳定的。在采用云计算技术后,设备的维护问题,软件运行环境兼容性问题都已经得到解决,虚拟主机隔离了不同操作系统版本的影响,按需分配资源的方式已经足以允许业务量很低的应用长期处在运行状态。因此将企业应用中最基础的,长期稳定的功能固化下来,作为服务长期运行应该被列为开发的首要考量内容。

[提醒] 除特别声明外,该内容由( )发布,转载请保留文章出处!
  •  我顶 
  • 点击
  • 收藏