当前是 Ops盛行的时代,在互联网圈内的你一定经常都会听到这些名词,DevOps、DevSecOps、GitOps、NetOps、ItOps、Aiops、DataOps、MLOps、NoOps;无论是什么 Ops,它的目标都是利用 DevOps 的最佳实践去实现效率和规模经济,并确保可靠性、可重用性和可重复性,同时减少技术和流程的重复,从而实现自动化,其中:
- ItOps、NetOps、AiOps更多是运维域的解决方案
- DevOps、DevSecOps、GitOps是开发运维域的解决方案
- NoOps是终极解决方案。
XOps解释
1、DevOps = Developers + Operators,也就是研发运维一体化,主要是通过自动化流程使得软件过程更加快捷和可靠。它不是一个产品,而是一种新的团队工作方式、新的技术理念。
- 一个软件从0到1的最终交付包含如下阶段:市场规划、产品规划、编码设计、编译构建、部署测试、发布上线、后期维护。早期的时候全由一个人完成了,随着团队的扩张,团队里有了产品经理、开发人员、测试人员、运维人员的划分,由产品经理负责需求的规划、产品交互设计,研发人员负责编码、构建包,测试人员负责功能测试和自动化测试、上线发布,运维人员负责维护线上服务的正常运行、扩容缩容,这就是敏捷开发模型,在开发过程阶段测试介入,快速验证修改问题直到基本无误后上线部署。
- 这一切所带来的问题是整体的交付周期变长了,团队之间沟通合作成本变高了,因此DevOps应运而生。它将整个软件开发测试运维过程变为一体化,每完成一个小的需求点便测试上线部署,快速验证需求,捕获用户,占领市场。
2、DevSecOps = Developers + Operators + Securitys,DevSecOps即在保证持续集成交付、敏捷开发的同时,保证业务的安全性。
- 在DevOps的软件开发过程包含计划、编码、构建、测试、预发布、发布、运维、监控。
- 在计划阶段执行安全性分析,确定在哪些模块容易引发安全问题;
- 在编码阶段使用API密钥、SSH公钥等保护代码安全;
- 在构建阶段执行静态代码扫描来发现代码中的缺陷;
- 在测试阶段检测用户身份验证、授权、SQL注入等相关的安全问题;
- 在预发布阶段使用安全分析工具进行全面的渗透测试、漏洞扫描;
- 在运营运维阶段,通过一定的监控体系搭建,不断的监控系统情况,保证系统高可用、高可靠。
3、GitOps = Git + Operators,这是基于Git(版本控制系统,如Github、Gitlab)的基础架构和应用程序结合的方式。
- GitOps更多是基于云原生的一个解决方案,在GitOps中,一切可以被描述的内容(如部署策略、代码配置、监控)等都存储在Git版本控制系统中、基于云原生的容器(如Kubernetes、Docker)也使用Git命令控制,不使用原有的如kubectl的方式。
- 对于开发人员来说,都要使用Git工具进行代码的托管、代码评审,GitOps降低了开发人员的学习成本,使用Git就可以自动创建多容器的编排了。
4、ITOps 即IT运维全生命周期管理
- 在软件全生命周期中包含主机监控管理、日志管理、资产管理、事件管理等,而ITOps提供的就是把这些管理工具集成在一起的解决方案,帮助企业全方位、全链路的监控、管理。
- 传统方式中企业一般都采购不同供应商的不同解决方案(取其优势),然后再组建个团队或找其中的某个供应商把这些解决方案都打通,但因为每个供应商的标准、技术设计都不一样,因此打通其实是很耗费成本。因此ItOps也正在上云,供应商开始通过收购或自研提供一整套的ItOps解决方案。
5、NetOps 即网络运维,是在网络的全生命周期进行运维的解决方案。
- 在设备入网的时候,进行批量的刷入、监控、目标版本升级,设备入网后进行业务配置、业务验证
- 业务上线后进行定期的批量审计、巡检,保证故障识别与解决。
- NetOps在DevOps环境中可以更加的灵活,通过自动化、虚拟化的方式提高解决网络问题的速度。
6、AiOps 即人工智能运维,2017年Gartner首次提出了该术语,AIOps被定义为结合大数据和机器学习技术实现IT运维流程的自动化方案
- 通过机器学习算法自动的从海量运维数据中不断的学习,结合领域专家的指导不断训练模型,最终通过模型来分析决策,达到智能运维
- 在IT系统中总共会产生五类数据:机器数据、网络数据、代理数据、探针数据。
- 机器数据是IT系统自己产生的数据,;
- 网络数据是网络通信过程中产生的数据;
- 代理数据则是通过在应用程序中插入代理程序,获取应用程序中函数调用次数时长、调用堆栈等数据;
- 探针数据则是通过拨测模拟用户请求对系统进行检测获得的数据
- 获取数据后再结合人工智能算法,如逻辑回归、关联关系挖掘、聚类、决策树、随机森林、支持向量机、蒙特卡洛树搜索、隐式马尔科夫、多示例学习、迁移学习、卷积神经网络等,最后实现故障自动检测、自动修复、自动预测。
7、NoOps 即无运维,完全自动化的运维。
- 在NoOps中不再需要开发人员、运营运维人员的协同,从微服务、低代码、无服务全结合起来,开发者在软件生命周期中只需要聚焦业务开发即可,所有的维护都交由云厂商来完成。
- NoOps的目标就是去除在软件开发过程中所有可能出现的人为因素影响,提高交付速度、交付质量。
8、DataOps:数据运维,与MLOps的概念几乎是同时出现的,并且DataOps也从DevOps实践中借鉴了很多经验,但DataOps的核心应用对象是数据应用。
- DataOps涵盖了数据生命周期内的所有步骤,从数据收集、处理到分析和报告,并尽可能地将其过程自动化。它的目标是提高数据的质量和可靠性,同时尽量缩短提供数据应用所需的时间。
- 这种方法对处理大型数据集和复杂数据工程管道的业务场景特别有帮助。DataOps 也可以在一定程度上辅助机器学习项目,但只是在辅助的层面上,因为它不提供管理模型生命周期的解决方案,所以可以认为MLOps是DataOps的延伸。
MLOps
MLOps:是一门工程学科,旨在统一 ML 系统开发(dev)和 ML 系统部署(ops),以标准化过程生产高性能模型的持续交付。
MLOps基于可提高工作流效率的 DevOps 原理和做法。 例如持续集成、持续交付和持续部署。 MLOps 将这些原理应用到机器学习过程,其目标是:
- 更快地试验和开发模型
- 更快地将模型部署到生产环境
- 质量保证
顾名思义,MLOps就是机器学习时代的DevOps。它的主要作用就是连接模型构建团队和业务,运维团队,建立起一个标准化的模型开发,部署与运维流程,使得企业组织能更好的利用机器学习的能力来促进业务增长。
MLOps的核心要解决的问题之一是缩短模型开发部署的迭代周期,即各类efficiency问题。从Algorithmia的2020年的这份报告中可以看到,很大一部分公司需要31-90天上线一个模型,其中有18%的公司需要90天以上来上线一个模型。且在中小型公司中,算法工程师花在模型部署方面的时间比例也明显偏多。MLOps希望通过更标准化自动化的流程与基础设施支持,来提升模型交付的整体效率。
另外一方面,MLOps还希望能提供一个企业内各个角色无缝协作的平台,让业务,数据,算法,运维等角色能更高效率的进行协作,提升业务价值产出,即transparency的需求。后面我们的详细讨论中也会反复印证这两个核心诉求。
MLOps的原则:
1、Automation:在整个workflow中所有可以自动化的环节,我们都应该进行自动化,从数据的接入到最后的部署上线。Google那篇经典的MLOps指导中就提出了3个层级的自动化,非常值得借鉴。
- Level 0:完全手工
- Level 1:流水线自动化,目标是通过自动执行机器学习流水线来持续训练模型。这样可以持续交付模型预测服务。
- Level 2:CI/CD流水线自动化,目标在生产环境搭建快速、可靠的机器学习流水线,实现统一的自动化CI/CD系统,实现将新算法、新模型快速测试上线,部署到目标环境。
2、Continuous:MLOps在持续集成,持续部署,持续监控的基础上,还增加了持续训练的概念,即模型在线上运行过程中可以持续得到自动化的训练与更新。
3、Versioning:在MLOps领域,除了pipeline代码的版本管理,数据,模型的版本管理属于新涌现的需求点,也对底层infra提出了新的挑战。
4、Experiment Tracking:对于涉及模型构建相关的代码改动,我们都应该能记录当时对应的数据,代码版本,以及对应的模型artifacts存档,作为后续分析模型,选择具体上线的版本的重要依据。
5、Testing:机器学习系统中主要涉及到3种不同的pipeline,分别是数据pipeline,模型pipeline和应用pipeline(类似于模型与应用系统的集成)。针对这3个pipeline,需要构建对应的数据特征测试,模型测试以及应用infra测试,确保将数据insights转化为业务价值的目的。
6、Monitoring:除了传统的系统监控,例如日志,系统资源等方面外,机器学习系统还需要对输入数据,模型预测进行监控,确保预测的质量,并在出现异常情况时自动触发一些应对机制,例如数据或模型的降级,模型的重新训练与部署等。
7、Reproducibility:与传统软件系统的确定性行为不同,机器学习中带有不少“随机化”的成分,这对各种问题的排查,版本回滚,输出效果的确定性都提出了一定的挑战。因此在开发过程中也需要将可复现原则放在心上,设计相应的最佳实践(如设定随机数种子,运行环境等各类依赖的版本化等)
MLOps、AIOps、DataOps
作为Ops中比较另类的一个,从字面上理解,AIOps与MLOps很相似,这其实是误解。2017年Gartner首次提出了该术语,AIOps被定义为结合大数据和机器学习技术实现IT运维流程的自动化方案。
从本质上讲,AIOps的目标是自动发现日常IT运维中的问题,并利用AI主动做出智能反应和预警。简单地说,AIOps 是AI在Ops领域中的应用,应用的主体是Ops;而MLOps则是Ops在机器学习领域中的应用,应用的主体是机器学习。
最后,下表总结了MLOps的主要实践及与DevOps和DataOps实践的关系,由于AIOps是将AI技术应用于运维领域的方案,不属于严格意义上的Ops,所以表1-1中的对比仅涉及MLOps与DevOps和DataOps实践的关系。
其中:
- CI: 持续集成
- CD:持续部署
- CT:连续测试,CT是机器学习系统独有的新属性,它与自动重新训练和服务模型有关
Flag:
- AIOps: 结合大数据和机器学习技术自动发现日常IT运维中的问题,并利用AI主动做出智能反应和预警,实现IT运维流程的自动化方案。
- MLOps:缩短模型开发部署的迭代周期、模型在线上运行过程中可以持续得到自动化的训练与更新、提供各个角色无缝协作的平台,让业务,数据,算法,运维等角色能更高效率的进行协作
- DataOps:从数据收集、处理到分析和报告,并尽可能地将其过程自动化。它的目标是提高数据的质量和可靠性,同时尽量缩短提供数据应用所需的时间
参考资料
- https://www.bilibili.com/read/cv10174800/
- https://baijiahao.baidu.com/s?id=1730505097452338661&wfr=spider&for=pc
- https://baijiahao.baidu.com/s?id=1742118459662209930&wfr=spider&for=pc
- 机器学习新概念-MLOps简介
- 谷歌 MLOps 实践者指南:机器学习的持续交付和自动化框架