DevOps 温故知新

【引】伴随着微服务架构以及云技术的广泛使用,DevOps相应地引起了人们的关注,尤其在互联网企业展开了大量的探索和实践。去年赋闲在家的时候, 有幸精读了三本书,分别是《持续架构实践——敏捷和DevOps时代下的软件架构》,《精益DevOps——快速安全的IT交付宝典》和《基础设施即代码——模型驱动的DevOps》, 于是,温故知新,老码农对DevOps 又有了不同的体会。

DevOps的出现是“左移运动”的具体体现,是为了按时交付软件产品和服务,可看作开发、运维和质量保障三者的交集,旨在通过改善这三个部门之间的协作,提高组织提供应用程序和服务的速度,从而更好地为客户服务并在市场中保持竞争力。遗憾的是, 在经典DevOps 环中的“Test”并没有凸显QA团队的作用。

952616c2ac4932731c04a7ea11923313.png

DevOps的实施涉及到多个方面,包括自动化工具的使用、持续集成/持续部署(CI/CD)的实践、监控和日志分析系统的建立等。通过这些实践,DevOps可以确保软件在开发、测试、部署和运维等各个环节中都能够保持高效、可靠和一致。

DevOps 的技术组成

DevOps 涉及了技术、组织、文化等多个领域,就相关技术技能而言, 大约包括以下几个层次:

a69b174e83513c23e4fd6d9c2f0406c9.jpeg

基础的技术技能包括版本控制、Linux 操作系统的操作、编程技能、数据库和网络操作等,其中与Ops相关的编程主要是Shell 和Python。CI/CD 是DevOps 的关键环节,常见的工具包括Jenkins、Github Action,GitLab CI 等。容器化技术保证了CI/CD 的环境一致性,同时为服务和网络的编排提供了工具。就具体的部署环境而言, IaC 是实现面向混合云快速部署的关键。监控和日志与传统运维领域的技术类似,区别可能是颗粒度不同。

DevOps 中CI/CD 流水线

CI/CD 是DevOps 的关键技术点,工作流及其流水线是工程效率提升的主要体现。

b29f95e9eabe8db18a3ddd00b40be7e3.png

CI/CD有助于从初始代码提交到部署的软件开发过程。通过自动化流水线,它消除了传统上将代码运送到生产环境所需的大量手动人工干预。

持续集成(CI)包括自动化构建、执行测试以及将单个开发人员的代码合并到共享存储库中。持续集成的主要目标是有效地将源代码集成到共享存储库中。一旦将更改提交给版本控制系统,就会执行自动构建和测试用例,以确保代码的功能和有效性。这些过程验证源代码如何编译以及测试用例在执行期间如何执行。

其中代码入库可以做成一个单独的流水线:

b1a17353a8159a75257aaff16f7ba0ae.png

构建和测试作为另一条流水线:

7ebba45aee1b5855af4a94e2a0d04c86.png

持续部署(CD)是 CI/CD 流水线中 CI 之后的下一步,是自动部署将自动测试阶段传递到生产环境的每个代码更改的实践。其典型的流水线如下:

dac97ad681f5683dcb8b5c7601497df9.png

持续部署的重点是在生产环境中快速部署代码变更。它的根源可以追溯到敏捷宣言,强调“早期和持续交付的有价值的软件”来满足客户。真正的持续部署是具有挑战性的,而且没有像 CI 那样被广泛采用,但是一个更常见的实践方式是持续交付(Continuous delivery)。持续交付和持续部署的主要区别在于,持续交付可能侧重于“ready for production”,不是自动完成上线,而是完成上线准备。

从DevOps 到MLOps

如果对DevOps中的Dev 进行领域划分和扩展,就会形成XOps。随着人工智能的广泛使用, 机器学习成为了Dev 中的一个重要领域,从而形成了DevOps 的一个变体——MLOps。

MLOps的核心思想是将DevOps的流程和工具应用于机器学习领域,以实现机器学习应用的持续集成、持续交付和持续部署。MLOps的目标是通过使机器学习的开发、测试和部署更加自动化来增强软件开发的效率和质量。 

MLOps可以更好地管理机器学习模型的生命周期,包括数据准备、传输和转换、模型训练和优化、模型评估和选择、模型部署和监控等。同时,MLOps也可以帮助团队管理开发和生产环境之间的差异,保证模型在生产环境中的稳定性和可靠性。简单而言,MLOps增加了领域特殊性的环节——持续训练(Continuous Training,CT)。

deff0014e336dc8a280fd6632a7fa048.jpeg

MLOps的引入,使得机器学习模型的开发和部署流程更加高效,从而加快了AI应用的创新速度并降低了错误率,还有助于加强数据安全性和合规性,并提高机器学习应用的可靠性和可维护性。

至于LLMOps, 后续会有专门的文章重点总结。

面向基础设施的DevOps

DevOps 不仅仅适用于软件交付,而是面向整个IT交付领域。那么,如何将DevOps应用于基础设施呢?如何高效、智能地管理和配置基础设施呢?

这就需要IaC,IaC 是面向基础设施的DevOps 的关键技术。面对基础设施尤其是网络环境的多样化和差异性,对网络进行建模是实现IaC的前提。

通过模型驱动的方式,IaC是一种将基础设施管理过程自动化的方法,通过使用编程语言来描述和管理基础设施资源,实现对基础设施的快速部署、配置和管理。

ff9d13d9ea8b57a9b3eea7921d69ed9f.jpeg

与传统的手动管理方式相比,IaC具有更高的灵活性、可扩展性和可维护性,能够帮助企业降低运营成本、提高运维效率。

从DevOps 到 DevSecOps

DevSecOps是DevOps实践的自然演变,其重点是将安全性集成到软件开发和部署过程中。术语“DevSecOps”代表了开发(Dev)、安全(Sec)和运营(Ops)实践的融合,强调了安全在整个软件开发生命周期中的重要性。在QCon 2022的关于工程师成长专题中,我曾分享过《工程师成长的金字塔思维》,其中涉及了DevSecOps 的敏捷安全金字塔。

9b8effb55cd5df06edc72f93b7a77ad5.jpeg

DevSecOps的核心理念是“业务应用生命周期的每个环节都需要为安全负责,安全是整个IT团队(包括开发、测试、运维及安全团队)所有成员的责任,并且需要贯穿到从研发至运营的全过程”。相较于传统的研发运营安全,它更注重在开发阶段就考虑并融入安全因素,而不是仅仅在测试及运营阶段进行安全威胁的检测、识别、修复和防御。

db6a3add89ae7038f59f8cad2e6ec6c8.png

DevSecOps是DevOps概念的延续,可以最大限度在软件上线前减少产品的漏洞,并完全地被最终用户使用。由于每个流程和相关工作流程都通过严格的安全检查实现自动化,因此可以更准确地满足安全要求。

DevOps 的方法论

我们很容易理解DevOps为IT服务交付带来的诸多益处,但对如何让DevOps 真正融入我们的软件工程中往往缺乏真正有意义的指导方法。也就是说,DevOps的落地确实是个难题,它不仅需要技术层面的支持,还需要组织文化、流程管理、团队协作等多方面的配合。

“他山之石,可以攻玉”,我们可以参考借鉴其他领域的反法论来实现DevOps,例如精益管理。精益管理是由丰田精益生产方式创生出的具有全新思维方式和行为方式的管理,在制造业取得了巨大的成功。精益思想是适于任何组织消除浪费、创造价值的最强有⼒⼯具。基于精益思想的DevOps能有效地减少交付摩擦和管理服务交付风险,应用OODA循环,可以通过管理不可预测性来提升组织的执行力,

395c805449737cc572838a7be2767615.jpeg

DevOps 本身就是把精益思想应用到技术价值流中的结果,而技术价值流是把业务构想转化为向客户交付价值的、由技术驱动的服务所需要的流程。精益思想是DevOps乃至敏捷开发的魂魄,也是指引DevOps及敏捷开发落地的灯塔。

【关联阅读】

  • 《精益DevOps》译者序

  • DevOps 全栈必备双刃剑

  • 《基础设施即代码(IaC)》译者序

  • 架构软件工程的未来

  • 远程软件工程师的10个最佳实践

  • 全栈的技术栈设想

  • 面向全栈的技术管理

  • 全栈必备:系统架构设计的10个思维实验

  • API协议设计的10种技术

  • 机器学习模型性能的10个指标

  • 浅析多模态机器学习

  • 大模型应用的10种架构模式

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/11902.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux安装MySQL(CentOS 7)

安装步骤 下载的MySQL版本为mysql-8.0.26 进入网站MySQL,点击下载 找到mysql社区版 点击Archive,查看所有相关不同版本 点击MySQL Community Server 注意下载MySQL对应的Linux版本,CentOS7 对应 Linux7,如果下成Linux 8 则后面…

解决SpringBoot整合MyBatis和MyBatis-Plus,请求后不打印sql日志

问题发现 在整合springBootmyBatis时,发现请求不打印sql日志,示例代码如下: RestController public class MyController {AutowiredProductMapper productMapper;GetMapping("/test")public void test() {System.out.println(&qu…

全国大学生数学建模竞赛【集训营E题】丨 近5年赛题实现,模拟参赛体验

全国大学生数学建模竞赛E题集训营即将开营 基于Python的近5年E题数学建模基础巩固 近5年E题赛题实现 模拟参赛体验与作品评审

数据库笔记-【视图】

视图 视图通俗是企业想展示给用户看的,数据库存储的数据有很多,但是也有很多是不能对外公开的,做项目的过程就通过视图这个媒介达到这种效果 视图也可以保证数据库表结构字段的隐私安全等 create or replace view stu_v_1 as select id st…

✨✨使用vue3打造一个el-form表单及高德地图的关联组件实例✨

✨1. 实现功能 🌟表单内显示省市县以及详细地址 点击省市县输入框时,打开对应地图弹窗,进行位置选择选择位置回显入对应输入框表单内的省市县以及地址输入框同外嵌表单走相同的校验方式触发校验后点击reset实现清除校验与清空数据 &#x1f…

Base64在线编码解码方法

Base64在线编码解码 打开网站 在线工具网-梦幻加菲猫 选择“Base64编码解码” 输入需要编码/解码的内容,点击“编码”/“解码”按钮 编码: 解码: 4. 复制已经编码/解码后的内容。

【云原生】Kubeadm搭建K8S

一、部署Kubernetes 实验环境 服务器主机名IP地址主要组件k8s集群master01 etcd01master01192.168.10.100kube-apiserver kube-controller-manager kube-schedular etcdk8s集群node01 etcd02node01192.168.10.101kubelet kube-proxy docker flannelk8s集群node02 etcd03nod…

数据结构-题目

1.已知一颗完全二叉树的第6曾(设根为第1层),有8个结点,则完全二叉树的结点个数,最少和最多分别是多少? 因此最少为39,最多为111 2.假设一棵三叉树的结点数为50,则它的最小高度为&…

【声呐仿真】学习记录3-待续

【声呐仿真】学习记录3-后续 第五阶段-获取数据1.运行赫尔库勒斯沉船的世界:2.键盘操纵rov至合适的位置,调整Image topic,查看输出图像3.RVIZ SONAR 图像查看器插件(没有对应的topic)4.点云5.录制rosbag 第六阶段-查看…

守护数据安全:精选七款数据加密软件

在数字化日益普及的今天,数据安全成为了企业和个人不可忽视的重要问题。加密软件作为数据安全的第一道防线,扮演着至关重要的角色。本文将为读者精选七款优秀的加密软件,帮助大家更好地守护数据安全。 Ping32数据加密软件 Ping32数据加密软…

Timestamp Unix时间戳在线转换

Timestamp Unix时间戳在线转换 打开网站 在线工具网-梦幻加菲猫 选择“时间戳转换” 在前半部分输入框输入时间/时间戳,点击“转换>>”按钮,即可转换完成 得到转换结果

Python自动化SQL注入和数据库取证工具库之sqlmap使用详解

概要 在网络安全领域,SQL注入仍然是最常见的攻击之一。sqlmap是一个开源的自动化SQL注入和数据库取证工具,它提供了广泛的功能来检测和利用SQL注入漏洞。本文将详细介绍sqlmap的安装、特性、基本与高级功能,并结合实际应用场景,展示其在网络安全测试中的应用。 安装 sqlm…

银行监管报送系统系列介绍(十七):一表通2.0

国家金融监督管理总局于9月发布了【一表通2.0(试用版)】(简称:一表通2.0),在原试点报送范围的基础上扩大了试点报送区域,意味着将陆续扩大试报送机构范围,推进的速度已明显加快。尽早…

HQChart使用教程98-右键菜单2.0使用介绍

HQChart使用教程98-右键菜单2.0使用介绍 内置右键菜单启用右键菜单定制右键菜单内容1. 注册内置右键菜单创建回调事件2. 修改内置菜单的显示内容回调函数格式菜单数据结构示例 3. 注册菜单项点击事件回调 右键事件完整示例HQChart代码地址 内置右键菜单 HQChart h5版本内置提供…

Spring Boot + Mybatis-plus代码生成器 自动生成项目结构

首先创建一个新的springboot项目 项目初始化结构如下: 运行自动生成结构代码后的效果如下: 对比初始化项目结构可以发现结构中多了以下几个部分; controller文件夹存储接口类mapper文佳夹存储数据库映射model文件夹存储数据库模型类Service文件夹存储业…

未授权访问:Docker未授权访问漏洞

目录 1、漏洞原理 2、环境搭建 3、未授权访问 4、通过crontab反弹宿主机shell 防御手段 今天继续学习各种未授权访问的知识和相关的实操实验,一共有好多篇,内容主要是参考先知社区的一位大佬的关于未授权访问的好文章,还有其他大佬总结好…

万字长文带你掌握 IDEA 2024 的30个Debug调试绝技,让你开发与修复 Bug 的效率提升亿倍

万字长文带你掌握 IDEA 2024 的30个Debug调试绝技,让你开发与修复 Bug 的效率提升亿倍 博主猫头虎的技术世界 🌟 欢迎来到猫头虎的博客 — 探索技术的无限可能! 专栏链接: 🔗 精选专栏: 《面试题大全》 — …

QCC---Aptx Lossless验证

因为aptx Lossless属于高通骁龙声音的一部分,一般支持高通骁龙声音的设备会支持到,比如说手机,而且还要支持最新的aptx adaptive协议R2.2版本。但是如果手上没有这样的手机的话,有source芯片也可以去做测试验证。在最新的784.1版本…

钽酸锂集成光子芯片:引领光电集成新纪元

在信息技术飞速发展的今天,光电集成技术已成为推动全球集成电路产业持续创新的重要力量。随着全球集成电路产业发展步入“后摩尔时代”,芯片性能提升的难度和成本不断攀升,业界急需寻找新的技术突破口。在这一背景下,中国科学院上…

微软发布研究报告:75%的知识工作者在工作中使用AI

“人工智能正在使整个劳动力的专业知识民主化,我们的最新研究强调了每个组织都有机会应用这项技术来推动更好的决策、协作,并最终实现业务成果。” ——Microsoft董事长兼首席执行官萨蒂亚纳德拉(Satya Nadella) 一年前&#xff0…