CI/CD 上云为何如此重要

Israel Rogoza
Israel Rogoza / 12月 30 2019
CI/CD 上云为何如此重要

近年来,敏捷度和速度日渐成为产品开发的关键。市场高速运行,时间就是金钱,也是企业发展的关键。游戏、金融、自动化产业等软件开发企业更像卷入了一场无休止的时间竞赛。

这也难怪 DevOps 备受欢迎。企业借助 DevOps不断加速优质软件的交付。DevOps,意即 development(开发) 和 operations(运维)的结合,也正是 CI/CD 发挥作用的环节。为了更好地解释文章的要旨,也因为这两者同属一个概念组合,我将把 DevOps 和 CI/CD看做同类(尽管两者明显不同)。那么云计算又是从哪里开始?为什么许多企业都将 DevOps 和 CI/CD 都放入云端?

云技术已经出现一段时间了。2006 年最先引入(尽管其概念早在 60 年代中期就已诞生),2010 年开始受到几大主要科技公司(谷歌、亚马逊和微软)的青睐,因此大家都称 2010 年为云计算元年。2018 年的预测显示云计算发展势头正盛,但尚未到达巅峰,才算刚刚走过了“以自我为中心的青少年时期”,并预测会在 2020 年时发生急剧上升, 达到 83% 的企业工作负载在云平台中运行。

一些人认为云计算发展的推动力源于 DevOps,但另一方面也有人说是其他因素。理智分析后不难发现,这两种技术的目标一致:保证企业的敏捷度和速度。不论是 DevOps 促进云计算的发展,还是云计算推动 DevOps 的普及,明显可见,这两者(包括 CI/CD)相辅相成,甚至于“云运维(cloudops)”的概念也流行开来。一项2017 年 Freeform Dynamic  的数据报告显示,在调查了 900 个 IT 从业者后发现,结合使用 DevOps 和云计算的企业比单独使用 DevOps 或云计算的企业效率更高,前者提升了 81% 的业绩表现,后者只有 52% 的提升。

在本文中,我希望聚焦DevOps/CI/CD与云计算,试图理解其错综复杂的关系,并对其效益进行分析。以下列举了CI/CD云化的原因。

1. 弹性扩展:“无所不包”

在近期Jfrog 分析为何将 DevOps 迁移到云中的文章(以《2019 年 RightScale 云调查报告》和《德勤云服务现状调查》数据为基础)指出,提升扩展性位居企业采用云技术原因的榜首,其中75%的企业将之列为最主要原因。

A section of an infographic by Jfrog

 

 

 

 

 

 

 

 

 

 

 

Jfrog 信息图的一部分

在所有云计算的功能中,为什么弹性扩展能独占鳌头?

云意味着一种自由,其强大的扩展能力比其他任何特性更能支撑这一价值。在一些案例中(我们称为“纯云 Pure Cloud”),云计算让企业摆脱物理硬件的限制和负担,整个软件开发过程可以自由扩展。在另一些案例中(混合云),云技术帮助企业实现最佳资源利用。一旦物理硬件已用尽,云服务可以按需进行自动补给。对于 DevOps 来说,拥有这种自由相当重要。DevOps 让企业实现高速交付优质软件,摆脱自身容量的困扰。

2. 减少维护

硬件意味着要时时维护,无可避免。但可另辟蹊径——云计算。为了专注于 CI/CD,团队必须从基础架构维护中解脱出来。其目的是关注运行哪个任务、如何运行,而不是将注意力分散到允许运行该任务的基础架构。有了云计算,软件维护也容易得多。以 Jenkins 为例。毫无疑问,Jenkins 是一款备受赞誉的工具,但它仍然需要一系列的配置(如groovy),而云管理工具,如 Azure DevOps 则不需要。

3. 中心化:无互动合作

正如我之前提到,DevOps 重度依赖合作。然而,良好的 DevOps 合作却来之不易,其中包括不同团队间的协作,远距离沟通,或是使用不同的工具,处于不同的环境。因资源限制,各团队间还需排队使用共享资源。

然而,在社交媒体时代,大部分的社交互动一般都在同一社交平台中发生,大家实时分享资源。即使是最复杂、最难协调的沟通也会以同样的心态处理,这是再合适不过的了。

云计算让不同团队可以同时使用一个中心化的平台,无需提前协调安排资源的使用先后顺序。全球团队可以自由使用所有云服务中的 CI 管道,不用没完没了地抢资源。这不但节省了很多时间和资源,且有助于共同应对一些难题。

4.优化自动化

持续集成的主要原则之一是自动化。尽管零接触自动化至今尚未实现,云计算却让企业自动化发展突飞猛进。自动化的概念出现在云计算之前,但云计算让自动化的整体发展更上一层。在云计算的帮助下,自动化速度大幅提升,同时让进程更为可靠、强大、实用,并有效减少错误。

试想一下在 Jenkins 使用本地基础架构运行一个管道。自动化能让你快速推进这些已知的步骤,例如依赖关系和语法错误,但是一旦 Jenkins 的节点机器宕机,进程也会失败。然后你开始与 IT 团队讨论,寻求帮助,重新部署机器,处理这些麻烦。然后你会想“如果还需要我去做这些繁复的工作,自动化还有什么用?”你的思考实在正确的。云可以处理这一切。没有了硬件依赖,也就没有了这些烦恼。这就是 Jenkins ec2 存在的原因。

此外,如果你选择进一步在CI进程中使用一些云服务工具(hosted cloud solutions),如 Azure DevOps 和 AWS 管道,配置的工作量将会大幅减少。

5.省钱才是硬道理

云计算采用“现付现用”的模式,让企业只需为使用的服务付费,减少了硬件设备的成本。此外,云服务商还会提供了一些额外的服务,为确定资源使用量的企业提供各类优惠活动。但是,节省成本的前提还是需要小心使用。许多企业在云服务账单到来之前,并不知道自己究竟花了多少钱。有些企业的支出远超预算。企业云服务及工具的使用需要提前做出合理的预见和规划,保证购买的服务不要超出所需(造成资源闲置)。也可结合使用 Spotinst 以及 Incredibuild 的云服务,减少这类问题。

6. 提升计算能力

我很高兴能在 Jfrog的信息图中看到这个原因。我在 IncrediBuild 负责云产品,致力于为客户提供最便宜、实惠的方式,加速企业软件开发。结合自身多年的工作背景,云服务为加速开发软件开发提供了一种新的解决方案,也因此成为我最喜欢的一个原因。Incredibuild 的云服务为各大企业争取到了额外的计算能力,促进软件开发。如果你是一个超级英雄爱好者,这就像是结合两个超级英雄的力量(仅作为类比):IncrediBuild 充分调动公有网络中的计算能力加速开发+更强大的公有云计算能力。

IncrediBuild 云端服务强势助力

了解到 DevOps, CI/CD 和软件开发中云的缺失,并理解云计算的重要效用后,IncrediBuild 决定发布自己的云端服务。在这个日益激烈的竞争市场中,满足企业敏捷度和速度的需求,不仅是 DevOps 和云计算的核心,也是IncrediBuild的宗旨。

云和 DevOps (或CI/CD)或许是天生一对,但是加上 IncrediBuild,则是无懈可击的铁三角组合。

 

订阅博客

阅读 Incredibuild 独家内容

Israel Rogoza

Israel 是 Incredibuild 云产品经理,具有丰富的工作经验,兼具高度的技术理解力和强大的商业视野。Israel 熟悉从概念、发布到交付新产品和解决方案的整个过程,并在这一领域创下了个人记录。 Israel 有超过 10 年的企业软件开发和测试经验,包括管理后端自动化,以及 Load Runner 和 StromRunner Load 的手动测试。此外,他也是 Star Canada 2018 和 ExpoQA 2017 等活动的积极分享者。