DevOps 温故知新

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

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

图片图片

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

DevOps 的技术组成

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

图片图片

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

DevOps 中CI/CD 流水线

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

图片图片

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

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

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

图片图片

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

图片图片

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

图片图片

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

从DevOps 到MLOps

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

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

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

图片图片

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

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

面向基础设施的DevOps

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

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

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

责任编辑:武晓燕 来源: 喔家ArchiSelf
相关推荐

2019-01-14 15:31:42

HTTP23

2023-04-02 23:22:04

GPU流水线体系

2022-11-15 07:30:04

EverDB云端alive

2022-10-25 07:23:45

2022-10-18 07:17:31

2022-12-11 23:43:06

2022-11-01 07:25:27

EverDB数据库SQL

2022-11-08 07:20:55

EverDB混沌测试

2013-08-20 10:40:54

EIGRPOSPF区别

2018-11-09 11:10:11

微软沈向洋人工智能

2023-01-03 00:00:17

2020-07-13 11:00:06

前端JavaScript自测清单

2020-04-14 11:48:59

密码网络攻击网络安全

2023-11-01 10:38:46

Linux高性能网络编程

2014-01-23 16:24:09

网易邮箱

2011-04-12 09:53:32

Spring

2017-06-06 11:29:23

Java异常研究与分析

2013-01-04 09:57:40

服务器市场盘点2012

2021-04-28 08:06:20

MeasureSpecView测量

2012-03-26 10:12:25

C#
点赞
收藏

51CTO技术栈公众号