DevOps和IaaS开启云时代的开发和测试

背景

在软件发展的几十年历程中,人们一直在孜孜不倦地追求用更快的速度交付更高质量的软件及服务。无论是不断革新的软件工程思想,还是持续优化的编程语言及工具,亦或是纷纷出现的可复用开发、测试框架,无不大大提高了整个软件开发及交付的效率。但是,与此同时,软件系统复杂度急速上升,可靠性要求越来越高,这让软件快速交付依然非常具有挑战。尤其是进入互联网和云计算时代,市场竞争异常激烈,人们对于软件交付的周期已经从原来的以季度、年度为单位缩短到以天计算,以便在市场中快速试错,找到真正的用户需求。这些都给传统的软件开发、测试体系提出了巨大的挑战。

最近几年,公有IaaS云快速发展,人们已经认识到云计算带来的强大敏捷性和低成本优势。在越来越多软件及服务的生产环境直接部署和运行在IaaS云上的同时,企业级用户也在积极尝试利用IaaS云服务来改进自己的软件开发、测试体系。但是,由于发展路径问题,国内的公有云开发人员还是习惯于以包年包月的方式使用IaaS云服务,并没有充分发挥出云计算弹性、灵活和按需服务的优势。随着国内IaaS云开始普遍提供API,国内的开发人员必定也会逐步体会到弹性云计算带来的具体优势,并逐步适应这种新模式。因此,使用云来加速开发测试也正离国内开发者越来越近,并将会被广泛接受。

传统开发、测试中的挑战

在软件开发、测试中,一般需要经过开发、测试,验收和上线四个阶段,同时也对应有四个环境:开发环境,测试环境,验收环境和生产环境,即所谓的DTAP。整个流程如下所示:

在这样一个复杂且冗长的流程中,需要不断地涉及到环境的准备以及应用程序的部署。而且涉及人员也非常多,包括开发、测试和运维。面对这些挑战,传统的软件开发测试体系中普遍存在一系列问题:

获取基础设施(硬件、软件和网络等)非常困难,而且基础设施的交付周期也非常长。由于采购基础设施多为一次性投入,成本还非常大,企业在做这样决定都非常谨慎。除非是已经被市场验证的想法和产品,企业一般不太容易快速决定相关采购。即使决定采购,从下单到交付仍然是一个漫长的过程(常常以月为单位计算)。所以为了避免影响工程进度或者节省成本,经常会看到多位开发测试人员(甚至多个产品团队)共用一套开发或者测试环境,然后就会出现为协调使用基础设施而邮件漫天飞的场景。更为糟糕的是很多好的想法和构思因为冗长的基础设置准备过程而错失市场机遇,甚至直接就胎死腹中。

部署和维护各种开发及测试环境令人头痛。当我们有了足够的硬件资源来支持开发、测试后,另外一个问题又随之而生。如何管理、部署这么多环境,如何让这么多环境保持一致。例如,使用的Linux内核是不是一个版本吗?都装了统一版本的Python吗?大家在不同的环境上是用一致的代码做测试吗?这样的问题必然会影响到整个团队的开发效率,最后非常有可能的结果就是大家还是会回到只用一个公共开发测试环境(这样又开始重新相互影响),亦或土豪公司会再招个专职的人员来维护这些环境(于是,这个人会成为新的单点,他/她一不在场时大家都傻眼了)。除了开发、测试环境之间的一致性维护工作外,保持开发及测试环境和生产环境的一致同样具有挑战。因为某个配置的不一致导致测试通过的代码在生产环境不工作是常有的事情。因为某个新功能需要升级第三方依赖库,在测试环境做了升级而生产环境却忘了也隔三差五的来一次。于是穷尽各种细节的环境描述,部署文档便塞满了公司内部的Wiki或者某个文档管理平台。当然,这些文档基本上是在完成的那一刻就已经过时,让后来的阅读者只会越看越糊涂。

开发及测试环境无法完全复现生产环境的场景。在实际运营中,生产环境总是承受最严酷的考验(大流量的请求,频繁的攻击等)。但是,由于成本和意识上的一些问题,大家在开发及测试环境中很难复现这些场景并进行预先的测试。而且很多问题(尤其是在分布式系统中)都是在规模到达一定程度后才会出现,通常开发及测试环境都很难模拟出生产环境的规模。

人为的割裂IT、开发、测试和运维部门也是在传统软件开发、测试体系中经常碰到的问题。这个直接导致流程的冗长和信息沟通的不畅,尤其是在系统非常复杂时,需要让各个不同部门之间的人能对整个系统有一致理解是非常不容易的事情。

由于上面这些普遍存在的问题,软件开发人员的生产效率受到极大影响。当然,人们也在思想层面和实践层面不断改进这个流程,其中最近几年盛行的DevOps思想得到了广泛的认同。个人认为DevOps思想中最关键的点在于打破传统软件开发过程中的人为割裂和“残酷无情”的推动自动化流程。前者意味着用统一的方式管理整个DATP流程和环境,而后者则是通过可复用的自动化工具和脚本把整个流程和环境部署、维护的知识固化下来,变成可直接操作的行动。

云计算带来了新可能

由于前面所述的各种挑战和问题,以及DevOps思想的广泛认同,越来越多的公司开始行动起来改进既有的开发、测试流程,各种打着DevOps标签的辅助工具也涌现出来。但是工程人员在获取基础设施方面的效率仍然无法令人满意(这个问题尤其在创业公司和中小企业里面更为明显)。幸好,云计算(尤其是公有IaaS云)的到来极大地改变了这个现状。具体体现在下面几个方面:

云计算提供了近乎无限量的基础设施资源,而且你在任何时候都可以立马获得。笔者就亲自经历过一个下午启动2000台云主机进行测试的真实场景。有多少公司可以一次批准采购2000台机器的预算,而且之前让一个下午就立马到位这么多服务器也基本是不可能的。另外,你获取这些基础设施资源的过程是完全“自助”式的,不需要依赖任何专门的IT或者网络工程师。

云计算提供了全新的基础设施资源成本模式,从原来的一次购买变成了按需付费。你只需要为自己具体使用的基础设施资源量付费。在云计算时代,1000台机器计算1个小时和让1台机器运行1000个小时的成本竟然是相等的。

云计算让基础设施资源“可编程”。在传统IT时代,基础设施资源总是显得冰冷、生硬,程序员拿它无可奈何。你要组建一个虚拟网络或者获取个公网IP都得走申请流程,找运维人员。而且,绝大部分公司为了简化管理成本或者安全考量,还会对基础设施的使用制定一堆或合理,或不合理的规则制度,这都极大地限制了程序员的手脚。在云时代,绝大部分的公有或者私有IaaS云提供商都支持API(还没有提供API的也都在加班加点的准备API中)。程序员可以非常灵活的调用这些API,使用标准的基础设施单元构建自己应用的基础设施架构。

在解决了软件开发人员获取基础设施资源困难的同时,云计算还带来了大量额外的好处。目前,主流的公有IaaS云服务商在提供基础设施云服务的同时,还会提供如数据库服务,监控服务,队列服务,通知服务等一系列常见组件。这些服务同样即插即用,按需付费。而且这些云服务都是由一流工程师开发,富有经验的人员运维,经过了严酷的实际生产环境考验。开发人员完全可以信任他们。

云时代的开发和测试

前面讨论了DevOps思想和IaaS平台各自的优势,而这两者恰恰又是可以很好结合来达到更好的效果。尤其是在帮助开发人员加速软件开发测试效率,缩短交付周期上非常有用。这种加速主要体现在下面几个方面:

1.利用IaaS平台加速开发和测试人员获取基础设施的效率。在云时代,开发和测试人员可以在分钟级别、以非常低的成本获得想要的基础设施,而且这些基础设施还不需你投入人力、财力来维护。同时,由于基础设施获取的便捷性和低成本,它让原来受限于基础设施而无法并行的事情现在得以完全并行展开。例如,每个开发人员都可以获得一个和生产环境完全一致的基础设施并行开发,开发和测试的工作也可以并行推进,各种不同想法也能并行得到快速验证。

2.利用DevOps思想和可编程的IaaS资源融合软件开发的各个阶段,打破原来存在的人为割裂,加速整个流程的迭代速度。如前面所述,软件开发过程中一般包括开发、测试、验收和生产几个阶段,每个阶段都可以有自己独立的运行环境,而且每个阶段甚至是由各自独立的人员来负责。在云时代,所有的基础设施和应用程序的运行环境都可以通过自动化流程一体化管理,且所有的部署、交付工作都是自动化完成。因为是一体化管理,各个环境的不一致性就能得到很好的控制,可以极大地避免因为环境问题导致的开发流程受阻。如此同时,开发人员可以利用IaaS公有云提供的大量低成本资源更容易地在开发、测试和验收环境中模拟出更多原来只能在生产环境中才能出现的场景,如大规模的流量压力,大量用户同时在线等。这样可以更早发现系统的性能瓶颈,设计和实现的缺陷。

3.通过直接使用大量的通用云服务来减少工作量,加速软件上线周期。毫无疑问,通过直接复用IaaS服务商提供的如数据库服务,监控服务等也大大加速了开发和测试流程。当然,要想在开发和测试中利用好这些通用云服务,你最好要把自己的开发测试体系和云紧密联系起来。

由于上面的这些明显的优势,越来越多的开发团队已经开始用IaaS加DevOps的方式改进自己的开发测试体系。为了让开发人员更容易地使用IaaS云服务支撑云环境下的开发测试,大量基于IaaS的DevOps工具也都把提升软件开发及测试效率作为一个重要的设计目标。

本文作者:徐桂林

来源:51CTO

时间: 2024-11-03 13:08:15

DevOps和IaaS开启云时代的开发和测试的相关文章

思科Tetration Analytics开启云时代下网络数据分析新篇章

思科公司在2016年6月15日正式推出了思科Tetration AnalyticsTM平台,该平台在业界率先实现了对现有大规模数据中心和云平台上的网络流量进行实时采集.存储和分析,为思科帮助用户在云时代实现网络运维的升级和自动化提供了全新视角和无限可能.   思科Tetration AnalyticsTM平台配合思科新一代基于Cloud Scale技术的硬件设备,流动在数据中心的任何一个数据包的元信息都可以被实时地记录和存储下来;同时,在基于Apache Spark.Kafka和Druid等开源

EasyStack、Pivotal携手构建面向云时代的IaaS+PaaS开发平台

近日,EasyStack与Pivotal合作,将领先的开源PaaS开发云平台与本土开源IaaS云平台结合起来,集成的IaaS+PaaS平台将为中国企业客户快速提供功能强大的开发云平台. 同为基于开源软件,作为领先的OpenStack技术与服务提供商,EasyStack与拥有Cloud Foundry开发平台的Pivotal,双方都旨在提供强大.开放,具备广泛行业支撑能力的的企业云平台--以OpenStack为基础可为企业客户提供私有云.混合云.专享云的IaaS基础平台,并在此之上实现对云原生应用

物联网迎云时代 VxWorks 7开启云端探索

本文讲的是物联网迎云时代 VxWorks 7开启云端探索,[IT168评论]物联网尽管被提了多年,也得到各方力量的推动,但是产业的发展相对比较缓慢,而且目前鲜有企业在这个领域赚到钱.究其原因,一些行业分析师认为,要想让每个场景中的设备实现物联网化,单兵作战难以实现,整个物联网行业缺乏平台的支撑.这句话讲到了关键点.但是,有能力做物联网平台的企业并不多,能够下决心专注物联网领域的更是少之又少.风河可以算物联网能力平台中的一个. VxWorks发展超过三十年 来到7时代 VxWorks成长历程 结合

开启云、移动和安全的时代变革

本文讲的是 :  开启云.移动和安全的时代变革  , [IT168 资讯]5月21日消息,北京--Attachmate集团今天宣布其BrainShare 2013中国技术论坛将于2013年5月21日和5月23日,分别在北京及深圳两地召开.此次,Attachmate 将IT界一年一度的全球性技术盛事BrainShare大会带到中国,并将呈现美国大会的特别精华,汇聚众多全球IT界最智慧的顶尖人物.该盛会将重点关注云.移动性和携带自有设备(BYOD)等趋势的快速演进,分享最佳的云.移动和安全解决方案,

政府助推云计算应用 开启全新云时代

中介交易 SEO诊断 淘宝客 云主机 技术大厅 云计算被认为是自计算机发明以来,继大型主机.个人电脑.互联网之后电子信息领域又一次重大变革,开启了一个全新的云计算时代.当前,云计算快速发展,全球电子信息领域的研究机构和厂商争先恐后发布云计算战略,推出云计算相关应用.云计算作为新型信息化的手段和模式正在被企业创造性地应用. 国际云计算应用创新发展论坛 云计算发展和云端产品云服务应用也日益受到政府主管部门的高度重视,国家发改委.工信部联合发文适时出台了国内五城市开展云计算服务创新发展试点示范的通知,

创维发力“酷享TV”开启“云电视”时代

从最早的电子管电视,到LCD电视,再到LED电视,电视变得越来越节能,越来越薄.而在功能上,电视从以前单一的收看功能,发展到可以上网的网络电视,以及现在火爆的智能电视与3D电视.自电视机诞生以来,不光是材料还是功能,都在不断地发生着惊人变化,给消费者带来了惊喜,也带来了更佳的体验.作为电视领军品牌的创维,在智能电视及3D电视方兴未艾之时,又推出"酷享TV",欲开启新的"云电视"时代. "酷享TV"通过科技成果鉴定 笔者从相关部门了解到,经深圳市科

畅享云时代:八个最佳云端集成开发环境

如今,浏览器其实成为了一个轻量的客户端,允许用户访问各种基于云的应用程序和服务.众多基于传统桌面的软件正在迁移到云端,这一点都不奇怪,基于云的集成开发环境正在不断涌现,已经有很多的开发者在使用 Github 和 Pastebin 来进行在线的协同开发.今天这篇文章挑选了8个最优秀的云集成开发环境推荐给开发者,大家可以体验一下,看哪个适合自己. Cloud9 IDE 基于 NodeJS 构建的在线集成开发环境,语法高亮支持 C#, C++, Python, Perl, Ruby, Scala 等等

迎接混合云时代 IBM云计算发展大提速

本文讲的是迎接混合云时代 IBM云计算发展大提速,[IT168 资讯]近日,"IBM云计算体验周"在北京隆重召开,这是IBM在国内首次以体验周的形式展现自身全方位展示IBM在混合云发展趋势下全方位能力.众多企业.合作伙伴.行业领袖与大家分享如何通过与IBM合作在各自的领域通过云计算进行创新的实践. 2014年是IBM云计算快速发展的一年,通过多年的战略投入和布局,云计算业务取得了长足的发展. 刚刚发布的IBM年报显示,2014年云计算业务营收已经达到70亿美金(这是原本IBM 2015

传统软件巨头们正在自我颠覆,云时代到底要怎样重建企业IT?

所有的企业都集体进入了第三代企业IT平台的时代. 简单回顾之前的历史,第一代企业IT平台是大型主机,于1950年到1980年垄断了整个IT产业,IBM为第一代企业IT平台的主导者:第二代企业IT平台即基于X86服务器和微软/Linux软件的"客户端-服务器"架构,从1980年到2010年成为主导性企业IT架构,微软.VMware.IBM是这一时代的主导者:第三代企业IT平台,就是正在蓬勃发展的云计算平台,企业软件在PaaS云系统上运转,目前尚无主导者. 对于大多数人听说过的Dell.E