前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >CI/CD 和 DevOps 的过去和未来

CI/CD 和 DevOps 的过去和未来

作者头像
DevOps时代
发布于 2018-04-17 08:41:22
发布于 2018-04-17 08:41:22
1.7K0
举报

本文由 DevOps时代高翻院整理发布

十年前,DevOps 的理念在 Andrew Shafer 和 Patrick Debois 两位先驱的脑海中酝酿。一年之后,他们将其正式命名为“DevOps”。光阴荏苒,今年是 DevOps 诞生的十周年,本文将回顾 DevOps 的历程,并且展望 DevOps 的未来。

本文内容会尽量和某些 IT 厂商、商业产品或开源产品等等无关。我们会专注讨论 DevOps、CI/CD 的历史,探究这些理念的发展形态,并尝试预测这一领域美好未来。

脱胎于敏捷运动的 “DevOps”

在 2008 年的多伦多敏捷峰会上,Andrew Shafer 的一番发言为 DevOps 运动点燃了星星之火。

在 IT 技术的世界里,十年前的活动已经称得上是“远古事件”,但不得不说,DevOps 的理念最初是脱胎于敏捷运动,或者至少是在敏捷运动的讨论范围内的。

2001 年发布的敏捷宣言虽然缺少细节,但在以下几个方面表达了清晰的态度:

1、“持续交付高质量的软件”; 2、“高频率交付可用软件”; 3、“掌控变化,使其成为一种竞争优势”。

由此,DevOps 理念和CI/CD 实践,与敏捷的思想真可谓是“琴瑟和鸣”了。

从“手工工作”到“程序化工作”

DevOps 的一个核心理念是:不仅要将业务逻辑程序化,还要将支撑 IT 运行的基础设施程序化。这一理念几乎为所有 IT 从业人员打开了想象空间。

  • 持续集成本质上是手工测试和源码管理的“程序化”。
  • 可编程的基础设施以及自带 API 的云资源是手工安装和配置的“程序化”。
  • 持续交付和部署是手工发布的“程序化”。

没有以上这几方面的程序化,DevOps 思想和敏捷理念中的其他美好愿景都无从谈起。“程序化”带来了以下两大好处。

缩减交付时间。软件的测试、服务器搭建和应用部署都要耗费很多时间。把这些工作写成程序,重复使用,将极大地提高效率,减少软件交付时间。

规避风险。将工作程序化之后,即便没有做到最快、最敏捷,也可以减少变更风险,从而提高软件交付质量。因为:

  • 自动化测试能更早、更快地发现 Bug;
  • 程序化的基础设施管理能避免配置错误;
  • 自动化回滚能够迅速处理失败的发布;
  • 以上几个方面在自动化之后都可以避免人为失误。

另外,围绕软件交付和基础设施的程序化还加强了开发人员与运维人员之间的沟通和理解。虽然这并非 DevOps 的首要目标,但确实是 DevOps 带来的巨大利好。来自 Flickr 的工程师 John Allspaw 和 Paul Hammond 在 2009 年的 PPT 就充分说明了这一点。

基于“程序化一切”的理念还催生出了一系列的产品和服务:Heroku,Cloud Foundry,AWS Beanstalk,TravisCI,Jenkins,CodeShip,Bamboo,Puppet,Ansible,Terraform,等等等等。他们当中有托管服务,也有 SaaS;有开源的,也有商业化的。百花齐放,百家争鸣。

从“程序化”到“效果验证”

作为 DevOps 实践的第一股浪潮,“程序化”实现了敏捷宣言中“持续化”、“高频率”和“软件可用性”等等愿景。然而,要想实现第三个愿景:“掌控变化,使其成为一种竞争优势”,则明显复杂得多。哪些变化是对我们有利的,哪些是不利的?我们的客户想要的到底是什么?

这些问题一直是营销人员,用户体验设计和产品经理关心的话题。他们经常使用的工具有 A/B 测试、多变量测试、受众测试和短期实验性功能测试等等。这些方法的常用逻辑是:“我们也不知道用户的真实需求,那我们就用实验的方法来挖掘吧”。

这种验证效果的思想现在也渗透进了研发领域,而且现在正是时候。在以前,开发人员、架构师和运维人员往往更倾向于预测事情的发展,而不太愿意因势利导。我们愿意预测未来,设计程序和基础设施的时候也倾向于尽量解决“未来的问题”,还美其名曰具有“针对性”和“预见性”地解决问题。

醒醒吧。我相信你肯定也做过这种类似的预测,最后发现事态的发展和你估计的差远了。

对于工作模式、工具和服务的验证

摒弃“预测”和“估计”的工作方式已经大有裨益了,但我们当然不会止步于此。在过去的几年间,众多新模式、新技术、新工具和新服务涌现出来,帮助工程师从“未知”向“已知”迈进。

1. 蓝 / 绿部署

“效果验证”的始祖是“蓝绿部署”法。这种方法简单粗暴,但也广泛流行。甚至可以说蓝绿部署法在 DevOps 出现之前就已经被广泛采纳了。

在蓝绿部署法中,工程师会创建两套完全一样的环境,并且在两套环境之前设置一个能指向任一环境的开关。在部署应用时,只需将应用部署在其中一套环境中,然后将流量引导至该环境即可;这样另一套环境便可以作为备用,以便在出现问题时快速回滚。

2. 金丝雀发布(灰度发布)

“金丝雀发布”是比蓝绿发布更加温和的方式。二者原理相同,但金丝雀发布的粒度更细。应用了金丝雀发布策略后,工程师可以在不影响生产环境的情况下进行一些实验。

金丝雀发布策略对放置在前端的引流组件提出了较高要求:引流组件要能够将一部分的流量分流到新版本的应用,而不能像蓝绿部署一样“一刀切”。

到目前为止,金丝雀发布还属于一种模式。具体的实现方式需要读者自行探索。不过,现在市面上也有支持这种发布模式的产品。Vamp.io 便可以依据浏览器 UA,设备种类或者用户所在的地理位置来进行分流。AWS 也在 API 网关服务中提供了金丝雀发布分流服务。

3. A/B 测试

“A/B 测试”是具备统计框架的金丝雀发布。在分流的功能上,A/B 测试和金丝雀发布大体类似,但 A/B 测试引入了“达成目标”的思想。这样一来,运营人员便可以了解到一个不同的应用版本,或者一个新版本到底有没有帮我们达成业务目标,以及在多大程度上帮助我们达成目标。

提供 A/B 测试功能的厂商有 Optimizely,Visual Website Optimizer(VWO),Google Optimze;Unbounce,Mailchimp 和 Kissmetrics 等服务中也将 A/B 测试作为一种功能叫付给了用户。也有一些公司自己构建了 A/B 测试系统,如 Pinterest 和 Booking 等。

不过,上面的产品和服务都把精力专注在了前端展示层(网页或者邮件等等)。也就是说,用上面的产品,仅仅能测试一些视觉上、或者文字上的效果。如果想要测试应用中的其他部分,现在市面上也有一些可供选择的产品。

Optimizely X Full Stack 服务就是一套完整的 A/B 测试解决方案,涵盖了多个开发语言和运行环境。在开源世界,Facebook 开发的 Planout,Intuit 开发的 Wasabi 和 Wix 开发的Petri 也同样值得关注。

4. 功能开关

“功能开关”在更大意义上是一种平行于以上两种模式的模式。功能开关模式集合了金丝雀发布和 A/B 测试的某些特性,将其整合为一种基于“开关”的模式。这种“开关”可以随时开启和关闭应用中的某些功能,可以作用在所有用户身上,也可以作用在目标用户身上。

功能开关的主要优势在于,它将功能交付与应用发布这两件事情剥离开来,二者不必同时发生。提供功能开关服务的有 LaunchDarkly 和 Split.io;开源方案有 Java 的 Togglz 和 Ruby 的 Flipper。

5. 影子流量

“影子流量”也被称为“暗流量”,是在不直接影响用户的前提下,将一部分流量从生产环境负载中剥离,并引导至某个测试环境的做法。

这种做法多在后端服务中使用,可以在压力测试,甚至是可用性测试中使用。在编写本文时,似乎没有什么产品或者服务提供影子流量模式;如果希望实现这种模式,完全需要自己定制。开源的中间件项目 “Istio”(与 Kubernets 相关)和 “GoReplay” 也还处在初级阶段。

如果要实现影子流量模式,考虑到客户响应和加密等因素,工程师们必须要考虑网络流量上的一些棘手问题。不过,若把这种模式集成进 Kubernets 等统一的 IT 平台后,其潜力和未来也值得期许。

向“效果验证平台”迈进

当“验证模式”在 IT 架构的各个层面广泛普及后,验证的粒度变得越来越精细,验证模式应用的范围也越来越广泛。由此也引发了一整套新问题。

  • 如何处理效果验证时产生的数据?数据分析团队可不是每家公司都有的。
  • 如何改造 IT 基础设施,使其能够满足以上的实验模式?要知道,高效的实验模式很可能需要快速调配计算资源,还可能要调配不同的计算资源。
  • 如何将“效果验证”规模化,又能保证管理人员进行清晰、有序的管理?

以上这些问题在很大程度上又变成了自动化的问题,因此落入了 DevOps 实践的范畴。当前,已经有第一批解决这些问题的产品和服务涌现了出来。

1. 机器学习和人工智能

有人已经开始尝试使用机器学习人工智能技术来解读 IT 环境产生的日志和监控数据。虽然这种实践还处在早期阶段,但其前景非常值得期待。

模式识别、模式过滤以及预测分析等均为人们所熟知的数学问题。在 Signifal 和 Logz 提供的 DevOps 产品中我们已经能够看见这些数学技术的应用。这两款服务均致力于为用户消除数据中的干扰因素,让用户得以在数据中掘金。

著名的开源搜索引擎 ElasticSearch 最近也添加了机器学习功能,向用户交付了使用机器学习处理数据的能力。

另一方面,应用机器学习和人工智能辅助进行应用部署、扩容、功能开关和效果验证的实践仍是一块处女之地,尚未在业界开展。

2. 智能编排 2.0 TM

Kubernetes、Docker Swarm 和 Mesosphere DC/OS 等容器平台精确地契合了 DevOps 的新模式。这些平台为用户提供了可移植、可扩展、高效且统一的部署模式,并为其取了一个好听的名字:“云原生”。

此类容器平台成为了“效果验证导向”的 IT 环境最理想的基础设施,因为这些平台几乎满足了“效果验证导向”的IT环境的所有要求:

  • 基于(Docker)容器和相关技术的、程序化和标准化的计算环境、网络资源和存储资源;
  • 基于平台 API 开发的程序化部署流程;
  • 基于中继网络的智能路由、统一 API 网关、服务发现和服务网格

向云原生基础设施变迁的大幕已徐徐拉开,基于云原生的应用也逐渐涌现出来。

诸如 Istio 和 Vamp 的产品和框架将智能路由带入了一个新阶段:路由策略成为了动态的、可延展的应用属性。搭配了监控的智能路由技术正在成为 A/B 测试和影子流量的基石,并且在 DC/OS 和 Kubernetes 平台中有所实现。

应用配载(Bin Packing)技术也在 Kubernetes 和 DC/OS 中有所体现。这种技术可以在物理主机上精确地调配应用进程,最大化利用计算资源,避免浪费。

将这种技术与 AWS Spot 实例结合,能将成本管理带入一个新境界。利用这一点,成本管理便可以和更高层的业务目标绑定。

很多公司都有规范 IT 成本的成本管理。此外,由于降低了成本,智能编排也有助于企业以更低的代价验证新产品、拓展新业务。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-03-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 DevOps时代 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于混合模型的三步优化框架在人形机器人跳跃运动中的应用
人形机器人在复杂环境中的动态运动能力(如跳跃)是实现环境适应与障碍跨越的关键。然而,高动态跳跃运动涉及复杂的动力学耦合问题,例如质心角动量(CAM)与姿态控制的协调、飞行阶段惯性调整对着陆稳定性的影响等。传统方法通常依赖大规模非线性优化或机器学习,但存在计算效率低、模型简化不足等问题。
一点人工一点智能
2025/04/01
350
基于混合模型的三步优化框架在人形机器人跳跃运动中的应用
机器人相关学术速递[12.15]
【1】 Learning Connectivity-Maximizing Network Configurations 标题:学习连接-最大化网络配置 链接:https://arxiv.org/abs/2112.07663
公众号-arXiv每日学术速递
2021/12/17
3730
仿真世界的作弊代码:MuJoCo软接触模型+ iLQR=现实机器人完美步态
腿式机器人的运动控制长期以来面临高维度动力学建模、非光滑接触动力学、实时性要求等多重挑战。传统模型预测控制(MPC)方法通常依赖于定制化的机器人模型和优化求解器,导致算法复现性差、社区迭代速度慢。与此相反,基于强化学习(RL)的方法通过仿真到现实(sim-to-real)迁移在复杂任务中展现了潜力,但其依赖大量数据且策略解释性较弱。
一点人工一点智能
2025/03/18
1010
仿真世界的作弊代码:MuJoCo软接触模型+ iLQR=现实机器人完美步态
机器人刚柔耦合动力学建模与应用汇总
柔性机器人轻量节能, 对环境和目 标的变化具有适应性, 但也存在因 为结构刚度较低而导致的结构振动的问题.现有的绝大多数机器人结构设计是结构刚度最大化, 以减小机器人结构的振动而实现精确的运动定位. 但是, 这种最大化刚度结构的机器人用材多、 不经济, 结构笨重不节能, 惯量大而动态性能差, 生产效率低. 况且, 不存在绝对的刚性结构, 一定条件的输入会激励出 一定频率的振动, 即使设计成最大化刚度结构, 机器人在高速重载的工作条件下同 样面临着结构振动的问 题.
ZC_Robot机器人技术
2020/11/17
4K0
机器人刚柔耦合动力学建模与应用汇总
工业机器人(六)——运动学分析
Delta 并联机构具有工作空间大、运动耦合弱、力控制容易和工作速度快等优点,能够实现货物抓取、分拣以及搬运等,在食品、医疗和电子等行业中具有广泛的应用。
联远智维
2022/01/20
1.5K0
工业机器人(六)——运动学分析
机器人运动规划方法综述
随着应用场景的日益复杂,机器人对旨在生成无碰撞路径(轨迹)的自主运动规划技术的需求也变得更加迫切。虽然目前已产生了大量适应于不同场景的规划算法,但如何妥善地对现有成果进行归类,并分析不同方法间的优劣异同仍是需要深入思考的问题。以此为切入点,首先,阐释运动规划的基本内涵及经典算法的关键步骤;其次,针对实时性与解路径(轨迹)品质间的矛盾,以是否考虑微分约束为标准,有层次地总结了现有的算法加速策略;最后,面向不确定性(即传感器不确定性、未来状态不确定性和环境不确定性)下的规划和智能规划提出的新需求,对运动规划领域的最新成果和发展方向进行了评述,以期为后续研究提供有益的参考。
一点人工一点智能
2023/05/09
1.3K0
机器人运动规划方法综述
空翻、高跳,抗「袭击」,腾讯全新轮腿式机器人亮相,登上顶会ICRA
机器之心发布 机器之心编辑部 腾讯全新的轮腿式机器人亮相,相关研究登上顶会ICRA。 今年 3 月 2 日,腾讯发布多模态四足机器人,引起了极大关注, 今日,继 Max 之后,腾讯 Robotics X 实验室又一全新机器人亮相:轮腿式机器人 Ollie(奥利),它像一个灵活的「轮滑小子」,能完成跳跃、360 度空翻等高难度动作。 轮腿式机器人(wheel-legged robot)是近年来机器人研究的前沿领域。 最新亮相的 Ollie 就兼具轮式结构和腿部的能力:轮式结构移动快、效率高;腿部能力让 Oll
机器之心
2023/03/29
5500
空翻、高跳,抗「袭击」,腾讯全新轮腿式机器人亮相,登上顶会ICRA
智能机器人
近些年来,智能机器人在生活中具有越来越广泛的应用,如何设计相应的控制器以及执行机构,使机器人能够模仿人类执行相应的操作,把人从繁重、重复的工作中解脱出来。目前,智能主要体现在如何使得机器人具有视觉、听觉以及触觉等,能够自动感知周围环境,进而通过中央处理器对采集到的信号进行处理,为后续执行器提供相应的控制策略。
联远智维
2022/01/20
2.7K0
智能机器人
机器人运动学和动力学:机器人学究竟有什么不同
说到智能化设备,首先想到的是机器人与数控加工中心。至于二者,均是工业4.0时代的重要加工媒介和工具,是支撑工业智能化时代的重要组成设备。但是二者的具体区别到底在什么地方尼?
ZC_Robot机器人技术
2020/10/10
3.9K0
机器人运动学和动力学:机器人学究竟有什么不同
鹅厂机器人“穿着”轮滑鞋大玩前空翻,连人都不敢轻易尝试
除此之外,对于那些轮滑常见地形,比如波浪、上下坡,甚至单腿过障碍,也完全驾轻就熟~
量子位
2021/06/17
3490
柔性机器人动力学方程
机械臂的动力学在机械臂的控制中具有十分重要的意义,建立机械臂的动力学模型,是描述控制系统的依据,也是设计控制器的前提。机械臂动力学建模的常用方法是拉格朗日法和牛顿-欧拉法。采用牛顿-欧拉法建立机械臂动力学模型时,要计算每个部分加速度,然后消去内作用力,牛顿-欧拉法是解决动力学问题的力平衡方法。但是,当机械臂变得复杂,此方法的计算也将变得复杂。拉格朗日法依据的是能量平衡原理,不需要对内作用力进行求解。对于多自由度复杂度高的机械臂,拉格朗日法比牛顿-欧拉法的求解更适用。
ZC_Robot机器人技术
2021/03/07
4.8K6
柔性机器人动力学方程
基于神经网络的机器人学习与控制:回顾与展望
机器人因其高效的感知、决策和执行能力,在人工智能、信息技术和智能制造等领域中具有巨大的应用价值。目前,机器人学习与控制已成为机器人研究领域的重要前沿技术之一。各种基于神经网络的智能算法被设计,从而为机器人系统提供同步学习与控制的规划框架。首先从神经动力学(ND)算法、前馈神经网络(FNNs)、递归神经网络(RNNs)和强化学习(RL)四个方面介绍了基于神经网络的机器人学习与控制的研究现状,回顾了近30年来面向机器人学习与控制的智能算法和相关应用技术。最后展望了该领域存在的问题和发展趋势,以期促进机器人学习与控制理论的推广及应用场景的拓展。
一点人工一点智能
2023/04/27
2.2K0
基于神经网络的机器人学习与控制:回顾与展望
基于车辆运动学的智能车轨迹跟踪控制方法
我国智能驾驶车辆起源于1980年,然而在1992年国防科技大学研发真正第一辆智能车。2003年,清华大学研发的THMR-V可在清晰的车道线上完成车道保持,而且它的最高时速可达到150km/h,如图1所示。
一点人工一点智能
2023/06/06
1.2K0
基于车辆运动学的智能车轨迹跟踪控制方法
浅谈机器人关节空间与笛卡尔空间控制
对于机械臂系统最简单的控制策略即在机械臂运动速度不大时,可以忽略其离心力、科氏力影响以及各连杆的耦合,进而将机械臂视为解耦的线性系统,对其控制采用基于 个独立关节的控制,对每个关节施加PD控制。其控制率如下:
ZC_Robot机器人技术
2020/09/24
9.7K2
浅谈机器人关节空间与笛卡尔空间控制
机器人相关学术速递[7.12]
【1】 Learning Interaction-aware Guidance Policies for Motion Planning in Dense Traffic Scenarios 标题:密集交通场景下运动规划的学习交互感知诱导策略
公众号-arXiv每日学术速递
2021/07/27
3770
轨迹规划-Constrained ILQR
k表示Time Step,N是Preview Horizon,J是Cost Function;
YoungTimes
2023/11/13
4.9K0
轨迹规划-Constrained ILQR
机器人动力学方程的性质
一个n连杆的机器人的动力学方程含有很多项,特别是全部是转动关节的机械臂,让人看着害怕。但是,机器人动力学方程含有一些有助于开发控制算法的重要性质,其中最重要的是反对称性、无源性、有界性和参数的线性性。
机器人网
2018/04/25
1.9K0
机器人动力学方程的性质
Robot-走近机器人动力学建模与仿真
云机器人就是云计算与机器人学的结合。而机器人则是云机器人的主要终端,云可以为机器人提供数据监控以及分析服务,同时也可从远端遥操作机器人的动作。腾讯云社区为大家了解和使用腾讯云服务提供了优秀的平台。而对于机器人部分,下面给出关于机器人关键技术之一的动力学建模与仿真的介绍。
ZC_Robot机器人技术
2020/05/09
14.6K2
Robot-走近机器人动力学建模与仿真
机器人基于图像完成任务最有效的 RL 方法:无需预测未来,也无需严格假设!
AI 科技评论按:对于机器人强化学习来说,基于视觉的物块堆叠和推动是最常见的任务,为了减小训练过程的成本和安全问题,我们希望最小化训练过程中与环境交互的次数。但从相机这样复杂的图像传感器中进行高效学习却十分困难。为了解决这一问题,伯克利的研究人员提出了一种新型基于模型的强化学习方法并发表了相关文章介绍了这一成果,AI 科技评论将其编译如下。
AI科技评论
2019/07/12
6660
机器人基于图像完成任务最有效的 RL 方法:无需预测未来,也无需严格假设!
刚性机器人笛卡尔阻抗控制算法
机器人阻抗控制是机器人力控制中的一种重要方式。了解机器人的阻抗控制需要首先了解刚性机器人的阻抗控制方法,并且首先需要了解刚性机器人的动力学方程和运动学方程。在本栏中给出的机器人为非冗余机器人,即机器人的关节空间自由度与笛卡尔空间运动自由度是相等的。
ZC_Robot机器人技术
2020/11/26
3.5K0
刚性机器人笛卡尔阻抗控制算法
推荐阅读
相关推荐
基于混合模型的三步优化框架在人形机器人跳跃运动中的应用
更多 >
LV.1
北京深蓝前沿科技有限公司
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文