AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

专访 Rancher CEO 梁胜博士:企业应该如何理解云原生 CI/CD?

  • 2019-05-29
  • 本文字数:4162 字

    阅读完需:约 14 分钟

专访Rancher CEO 梁胜博士:企业应该如何理解云原生CI/CD?

前言

云计算技术的普及全面变革了 IT 基础设施,技术团队组织架构、研发流程也随之变化,越来越多的组织和团队开始接受 DevOps 理念。在 DevOps 的趋势下,持续集成(CI)和持续交付(CD)具有支柱性地位,使用新一代面向云计算的工具和技术搭建 CI/CD 流水线可以实现应用程序的自动构建、自动测试和自动部署,提高发布频率,利于构建可高效迭代的云原生应用。


近期以 Jenkins 带头发起的持续交付基金会(CDF)的成立,也说明了 CI/CD 理念及工具得到了越来越多的认可和应用,在研发和软件交付过程中有很大的价值。此次 InfoQ 采访了 Rancher Labs CEO 梁胜博士,谈谈如何理解云原生环境下的 CI/CD,以及 CDF 成立的意义。

上云 VS 云原生

在梁胜博士看来,上云≠云原生。


云原生(Cloud Native)的字面意思是开发应用的时候要遵循云端的原生技术。现在我们说的云原生,主要包含以下的含义:


云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中构建和运行弹性可扩展的应用。通过构建容错性好、易于管理和便于观察的松耦合系统,结合可靠的自动化手段,云原生技术可以使工程师能够轻松地对系统作出频繁和可预测的重大变更(CNCF 对云原生的定义)。


具体的云原生技术包括:


  • 微服务

  • 容器

  • Serverless

  • Service Mesh

  • 不可变基础设施

  • 声明式 API

  • ……


这些技术在传统的应用架构或基础设施里是不存在的。


云原生架构最关键的特性是动态扩展以支持大量用户及大型分布式开发和运营团队。因此,一些需要解决的典型问题如下:


  1. 动态扩缩容能力;

  2. 自动处理破坏应用程序可用性的跨层故障;

  3. 通过确保组件本身提供松耦合来适应大型开发团队的能力;

  4. 能够使用几乎任何类型的基础设施(计算、存储和网络)。


如果仅仅只是把传统应用打包一下搬到公有云或者私有云上,而没有利用云原生相关技术,应用不能做到弹性可扩展、高可用、按需交付等,这就不算云原生。

CI/CD 给企业带来的价值

CI/CD 的存在已经有十几年的时间了,其主要作用就是可以使企业在提升开发和发布的迭代速度的同时,还保证应用程序的质量。虽然一般 CI/CD 连着说,但是 CI 跟 CD 的概念不一样。


  • CI (Continuous Integration)代表持续集成,意味着研发人员对代码做了改变之后,可以直接来编译和构建二进制代码,用二进制代码来运行一些测试。

  • CD 代表持续交付(continuous delivery)和持续部署(continuous deployment),持续部署要比连续集成要复杂很多,部署时要考虑很多方面:应用需要部署到哪些环境、其依赖包的版本怎么使用、如何做环境配置管理等都需要考虑在其中。


所以很多企业和团队能做到连续集成的层面,但其实并没有达到持续部署的状态。


云原生的环境本质上很适合应用部署。传统的应用在做部署的时候,常常有一些手动的步骤,会比较困难。而云原生技术本身就强调自动化,相对而言更适应 CI/CD 框架。一般来说云原生应用的用户在开发过程中,集成、部署和测试等流程上的自动化程度已经比较高了,所以云原生 CI/CD 实施起来会更容易。


云原生场景下的 CI/CD 当然也会有一些挑战。云原生的应用模块较多,可以有多个微服务,相对来说结构很复杂。所以在云原生环境下,部署、集成、构建和测试等步骤都比较多,做好每个步骤之间的连续性也相对复杂。

云原生部署策略

在应用部署的时候,我们当然可以把整个现有的应用完全切换过来,但是万一中途出问题了怎么办?为了应对这种情况,在云原生环境下 Kubernetes、Istio 等工具都能支持持续部署,可以进行蓝绿部署和金丝雀部署。


蓝绿部署:蓝绿部署能自动防御故障的流程。在这个方法中,两个相同的生产环境并行工作。一个是当前运行的生产环境,接收所有的用户流量(称之为蓝)。另一个是它的副本,但是闲置(称之为绿)。两者使用相同的数据库后端和应用配置:



应用的新版本部署在绿色版本环境中,进行功能和性能测试。一旦测试通过,应用的流量从蓝色版本路由到绿色版本。然后绿色版本变成新的生产环境。



如果绿色版本激活后发现了问题,则将流量路由回到蓝色版本中。


金丝雀部署:金丝雀部署和蓝绿有点像,但是它更加规避风险。你可以阶段性的进行,而不用一次性从蓝色版本切换到绿色版本。


采用金丝雀部署,你可以在生产环境的基础设施中小范围的部署新的应用代码。一旦应用签署发布,只有少数用户被路由到它。最大限度的降低影响。


如果没有错误发生,新版本可以逐渐推广到整个基础设施。



现在的 CI/CD 基本上都是用这两种方法来降低软件的部署风险,Kubernetes 和 Istio 也支持这两种部署方式。所以云原生环境下的 CI/CD 也是依赖于 kubernetes 或 Istio 平台里的高级发布功能来保障软件交付的稳定性,让一小部分用户先使用新版本,等这一小部分成功以后再让更多的用户使用,中间如果出问题随时可以回滚到原来的版本。

CI/CD 管道构建

下图展示了一个软件在其最终交付给客户或者投入上线之前,它在其生命周期内各个阶段中的移动过程,也就是一套 CI/CD 管道的流程,整个周期包括:


构建-测试-部署-自动测试-部署到生产环境-度量和验证。



传统意义上,管道中使用的各个硬件系统都有配套的软件(操作系统、应用程序、开发工具等)。在极端情况下,每个系统都是手工设置来定制的。这意味着当系统出现问题或需要更新时,这通常也是一项自定义任务。这种方法违背了持续交付的基本理念,即具有易于重现和可跟踪的环境。


梁胜博士介绍,在云原生环境下容器技术被大量采用,但是实际上 CI/CD 并不需要容器,直接用基础设施云的 API 就可以实现。不过用容器有一些好处:


  • 可以加快应用的迭代速度更快;

  • 出错的可能性更小;

  • 便携性很高,可以将应用轻松部署在多个不同的基础设施云上,可以实现混合云。


基于容器设置 CI/CD 的管道会比用传统的方法设置 CI/CD 的管道容易一点。容器的好处在于执行环境一致性,只要调通了,应用在管道里、管道外和物理机上运行没有差别。


CI/CD 管道设置上本身的挑战在于自动化程度。在设置了管道之后,要根据中间每一个步骤的结果要来判断各种状态,这一步成功还是不成功,再来决定下一步应该做什么。所以一旦设置了管道,对自动化、监控和运维等方面的要求会高很多。


当应用在管道里运行的时候,我们实际上是看不到管道里的运行情况的。而在传统的 CI/CD 中,如果全是手动操作,每做一件事情出错了我们就可以看到,可以随时去调错。设置了管道之后,整个管道就完全自动化了,但事实上复杂的管道在设置一段时间之后才会趋于稳定。后续还要不断调试和排错,有时出了问题并不是程序上的问题,而是管道本身的问题。所以设置管道也必须经过这不断尝试的过程。


不过磨刀不误砍柴工,一旦管道设置好了之后,就能达到自动化的效果,软件交付的效率能明显提升。

Rancher pipeline

作为基于 Kubernetes 的开源企业级容器管理平台,Rancher 对于 CI/CD 管道解决方案也有自身的考量。对于用户而言,大部分企业用户或者互联网用户已经设好了 CI/CD 的管道,甚至有很大的 CI/CD 的平台。这也就意味着 Rancher 无需提供内置的 CI/CD 解决方案,而用户在使用 Rancher 的过程中,可以直接调用 Kubernetes API 接口和自己的 CI/CD 管道或平台进行对接。


随着 Rancher 的使用不断普及,针对还没有构建自己的企业级 CI/CD 平台的用户,Rancher 构建了一个简单易用的 CI/CD 管道:Rancher pipeline。这套解决方案的最大特点是简单易用,使用户无需从头开始使用其他工具设置 CI/CD 流水线。Rancher pipeline 在灵活性和功能上来说略为简单,但它可以使很多用户,特别是现在还没有 CI/CD 平台的用户,很快地享受到 CI/CD 的好处。



Rancher pipeline 由 Rancher server 中的 pipeline controller 和用户集群中包括 Jenkins、Minio 的组件组成。Rancher server 接收到代码提交事件后,会按照源码仓库中文件形式定义的流水线,分发构建任务到用户集群的 Jenkins 中,并动态创建 Kubernetes Pod 作为构建环境执行 CI/CD 任务。它将 Jenkins 作为底层执行引擎,用户不需要对 Jenkins 及构建环境作配置和管理。

企业如何构建云原生 CI/CD 管道

企业在构建云原生 CI/CD 管道的时候,除了要做好自动化的前提,梁胜博士认为还有两个方面需要做好。


  • CI/CD 平台。不管是用 Jenkins 还是自己搭建,首先必须得有一个 CI/CD 平台;

  • 云原生部署平台。CI/CD 平台实际上是把应用部署到云原生部署平台上去的,像 Rancher、Kubernetes 等就是云原生部署平台,它们可以实现一些高级的部署策略。


这两者一旦结合起来了之后,企业就可以利用云原生 CI/CD 提升效率了。


在 CI/CD 管道工具的选型上,梁胜博士认为,现在确实工具很多,但主要还是要看自己的技术能力。如果技术能力比较强,可以花时间了解市面上的各种开源工具,进而直接使用这些开源工具,这是最好的。


但是并不是所有的企业都有这样的能力和人才,所以现在越来越多的公有云或者其他平台厂商也开始支持云原生 CI/CD,用户如果愿意使用厂商提供的工具,也可以方便地实现云原生 CI/CD。但是这其中会面临用户锁定的问题,尤其是云厂商的锁定。

CDF 的成立意味着什么

今年 3 月份,Linux 基金会宣布成立了新的子基金会:持续交付基金会(Continuous Delivery Foundation, CDF),Rancher 也是 CDF 的创始成员之一。梁胜博士认为,CDF 可以让 CI/CD 的众多平台更加标准化。纵观技术发展历程,是一个从闭源走向开放的过程。早期的很多闭源技术平台存在用户被锁定的问题,不仅昂贵而且不利于创新。后来开源技术流行起来,到了现在仅有开源还不够,很多用户认为开源的技术不应该被一家商业公司控制,而应该交由基金会或者社区管理。现在 CI/CD 正在越来越多地融入技术团队的开发流程中,这个领域也已经有了很多开源工具。有了 CDF,这些开源工具可以更加中立地为技术人所使用,这也是开源的精神所在。


嘉宾简介


梁胜,Rancher Labs 联合创始人及 CEO,是 Java 语言 J2SE 平台核心组件 JNI(Java Native Interface)的作者,领导设计和开发了 Java 语言最为核心的 JVM。2014 年 9 月,梁胜创立 Rancher Labs 并担任 CEO,为全球企业客户提供容器企业级落地的解决方案。截止目前,Rancher Labs 已获得两轮累计超过 2 亿元人民币的融资,在全球拥有超过 20000 家企业用户。




2019 年 6 月 20 日,由 Rancher Labs 举办的 2019 企业容器创新大会(ECIC),将聚焦容器技术的企业级落地经验,邀各行业著名企业的 IT 负责人分享容器项目的成功经验。领取免费门票


2019-05-29 14:007417
用户头像
张婵 InfoQ 技术编辑

发布了 87 篇内容, 共 54.4 次阅读, 收获喜欢 218 次。

关注

评论

发布
暂无评论
发现更多内容

全新一代小度智能屏X9焕新上市 正式开启预售

极客天地

有哪些好用的企业即时通讯软件值得推荐?

BeeWorks

CloudQuery v2.0.0 发布 新增数据保护、数据变更、连接管理等功能

BinTools图尔兹

数据库 国产数据库 版本发布

WorkPlus AI助理 | 将企业业务场景与ChatGPT结合

BeeWorks

混沌演练实践(二)-支付加挂链路演练 | 京东云技术团队

京东科技开发者

微服务 混沌工程 混沌工程实践 企业号 5 月 PK 榜

视频后期特效处理软件:Motion 5 最新中文激活版

真大的脸盆

Mac Mac 软件 视频特效合成 视频特效工具 特效合成

PoseiSwap IDO在Bounce上启动在即,如何参与?

鳄鱼视界

深度学习基础入门篇-序列模型:[11]:循环神经网络 RNN、长短时记忆网络LSTM、门控循环单元GRU原理和应用详解

汀丶人工智能

人工智能 深度学习 RNN LSTM GRU

最高奖金100万!第二届广州·琶洲算法大赛火热报名中

飞桨PaddlePaddle

百度飞桨 算法大赛

龙博机电:90后“厂二代”,靠伙伴云零代码让中小制造业实现数字化“逆袭”

联营汇聚

云图说丨初识商标注册服务

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

Elasticsearch与Clickhouse数据存储对比 | 京东云技术团队

京东科技开发者

数据库 elasticsearch Clickhouse 企业号 5 月 PK 榜

企业研发效能度量利器,华为云发布CodeArts Board看板服务

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 5 月 PK 榜

直击灵魂!美团大牛手撸并发原理笔记,由浅入深剖析JDK源码

做梦都在改BUG

Java 并发编程 多线程 jdk源码

ps vs top:CPU占用率统计的两种不同方式

极限实验室

Linux 运维 监控系统 INFINI Console

2023年,Flutter3.10版本的变化有哪些?

没有用户名丶

小程序容器

基于 Log 的通用增量 Checkpoint 在美团的进展

Apache Flink

大数据 flink 实时计算

PoseiSwap IDO在Bounce上启动在即,如何参与?

西柚子

1.5万字+30张图盘点程序员面试必会MySQL索引常见的11个知识点

Java你猿哥

Java MySQL 数据 ssm 索引

常用的表格检测识别方法——表格结构识别方法(上)

合合技术团队

人工智能 深度学习 算法 人工智能文字识别 表格检测

Flutter三棵树系列之详解各种Key | 京东云技术团队

京东科技开发者

flutter key 企业号 5 月 PK 榜 localkey

Scrum的三个工件(产品Backlog、Sprint Backlog、产品增量 )

顿顿顿

Scrum 敏捷 敏捷开发管理 敏捷开发管理工具

浅谈财务共享未来发展趋势

用友BIP

业财融合 财务共享

SpringBoot + Docker 实现一次构建到处运行

Java你猿哥

Java Docker Spring Boot ssm 容器化部署

3天速成!阿里人私用的Netty速成实战手册,3天Github星标11.5k

Java你猿哥

Java 源码 Netty ssm netty内存管理

深度学习进阶篇-预训练模型[1]:预训练分词Subword、ELMo、Transformer模型原理;结构;技巧以及应用详解

汀丶人工智能

人工智能 深度学习 预训练模型 Transformer ELMo

以敏捷性为目标,构建良好企业生态

智达方通

数据驱动 数据孤岛 智达方通 全面预算管理 数据分析系统

红旗软件正式发布龙蜥社区版国产高可靠操作系统

OpenAnolis小助手

Linux 开源 龙蜥社区 红旗软件 社区版操作系统

内部开发者平台|自建还是购买,企业应如何选择?

SEAL安全

平台工程 企业号 5 月 PK 榜 内部开发平台

专访Rancher CEO 梁胜博士:企业应该如何理解云原生CI/CD?_文化 & 方法_张婵_InfoQ精选文章