谈谈我认识的各种ops
跨界总是有神奇的魅力,很多科学的突破都是在学科的交叉处完成的。
当我们在一个方向或者方法论下走的太久找不到路的时候,或许换个方向找找交叉路口是个好选择。
又比如孙正义当年靠着从字典里随机捞几个单词排列组合的方式去思考专利,不得不佩服。
DevOps
这是最早听到的一个组合,其实这里的Dev不仅是研发还包括质量保证(QA),只是笼统的将软件的开发和运维两个过程打通,已经不需要传统意义上的专职运维。
这个过程伴随着很多很多的概念兴起,包括敏捷、云原生、SRE、CICD 等等。每个名字都蕴含了大量的技术栈和方法论。
所以有人说DevOps本身是一个观念而非开发模式,实施DevOps需要配合大量的基础设施改造包括开发工具,如IaC、automation、CICD Pipeline;基础设施层面上的精进,如容器编排、无服务器架构。
感觉我已经编不下去了,大量的技术交汇在这一个名词之内,之前有看到一个的DevOps技术路线图,满满一屏幕都放不下。
DevSecOps
在DevOps中间加了个安全(Sec),让软件整个生命周期都安全成了目标。
和DevOps一样,DevSecOps一样强调的是工具的使用,将所有安全相关的扫描分析和检测全部集成到开发部署流水线上。
给软件开发和运维人员提供安全相关的培训,建立明确的安全规则制度。
除了流程上的安全,构建依赖和构建产物一样要安全,时刻关注依赖技术包括操作系统、容器镜像、第三方库等发布的漏洞信息,对于漏洞要及时处理,更新打了补丁的版本或者采用更安全的替代方案。
不可能存在绝对的安全,但安全意识不可少,不断的更新安全工具箱和学习攻击方式才能知己知彼百战百胜。安全与快速迭代之前也是需要权衡取舍的。
BizDevOps
BizDevOps是一种流程和文化模型,旨在加强业务、开发和运营之间的协作,并使其能够在整个应用程序生命周期中实现迭代、自动化和持续的交付、测试和部署。它将业务考虑因素与软件开发和运营考虑因素结合起来,创造出高度可重复且高度可靠的软件交付过程。
具体来说,BizDevOps借鉴了DevOps的理念,即开发(Development)和运营(Operations)之间的协作,将其扩展到包括业务(Business)方面的需求和要求。通过引入业务目标、数字化业务流程和用户体验等因素,BizDevOps将业务考虑因素与开发和部署考虑因素结合起来,使得开发团队和业务团队能够更加协作和沟通,减少误解和漏洞,并为构建更好、更智能和更便捷的数字化解决方案提供支持。
BizDevOps是一种跨职能合作的方法论,将业务、开发与运营融为一体,并强调迭代和自动化工作流程,以实现更快、更优、更安全的软件开发。它旨在提高用户体验、增强商业效益,并确保软件产品与业务目标保持紧密关联。
BizDevOps可以视为DevOps的演变和扩展,尤其是在业务方面的考虑。下面介绍一些BizDevOps与DevOps的区别:
- 业务方面的考虑:BizDevOps强调了业务影响的重要性,即将业务驱动的考虑纳入到开发、测试和部署流程中。因此,它需要细致地理解业务需求和目标,以便确保软件产品的正确实现和上线,而不仅仅是重视技术和部署效率。
- DevOps文化的改变:BizDevOps与DevOps有相似之处,但是在文化方面略有不同,它更强调“一切从最初的业务目标开始”这个理念。DevOps主要关注团队之间的协作和自动化,减少手动流程的错误和时延。而BizDevOps更强调业务与客户的在团队中的重要性,包括需求的识别、优先级排列和他们的关注点。
- 敏捷方法:DevOps强调优化代码交付流程,BizDevOps进一步强调了迭代和敏捷方法。业务需要敏捷的方法来拓展、改进和扩展应用程序,这意味着团队需要能够快速响应变化需求,并且修改、部署和修复代码的速度更快。
- 目标测量和分析:BizDevOps更注重数据分析,包括关键业务指标、持续部署和迭代过程的分析,以便快速识别潜在问题和改进的机会。对于业务团队来说,这些数据对于追踪用户反馈、验证业务假设、支持持续改进至关重要。
MLOps
MLOps是指一种将机器学习(ML)云端部署、集成和自动化的工作流,旨在支持机器学习应用程序的开发和部署。其关注点是在确保模型的正确部署、监控性能、审核训练集和更新模型时保持数据质量。
AIOps
AIOps(AI运维)指的是一种基于人工智能(AI)和机器学习的自动化运维方法,它包括一系列智能通知、自动化操作以及智能分析来保障IT系统或业务流程的高效运作。其关注点是在利用AI技术自动化IT运营操作,改善IT运营效率和质量。
两者之间的区别在于,MLOps更关注机器学习模型的开发、测试、部署和管理,而AIOps则更关注使用机器学习技术进行运维自动化,改善IT系统运营的效率和质量。同时,MLOps还涉及到专业领域的机器学习知识,而AIOps更侧重于运营和IT领域的专业知识。
个人感觉,前几年AI兴起主要基于大量的数据和算力的提升,AI基本上跟着大数据一起火起来的,按当时的节奏看万物皆可AI,似乎只要套上AI一切问题都得到解决,但我对此却一直深表怀疑。
但这些年也遇到过公司内有人提到AIOps,当时还在锐捷网络,一个组想要把磁盘故障提前检测的算法做到我们当时开发的虚拟化平台里。
但考虑到当时平台的最大容量规模不超过128台服务器,里面的磁盘数量多数也不会大于1000块。
我很怀疑这样的投入对客户有什么价值,何况客户会为这个功能付费?但这算法在云厂商里动辄几十万、几百万块盘的场景下价值是巨大的,这个不可否认。
因此我始终觉得AI是一个场景化的问题,当这个场景大到一定程度,AI的价值就会容易发挥出来,哪怕每次算法的提升只有几个百分点,但乘以一个巨大的基数,这就是巨大的效益。
GitOps
GitOps就是将整个CICD流程跟git绑定起来,通过git上的代码提交变更,自动触发CICD流水线。现在比较有名的GitOps工具ArgoCD和FluxCD,基本都是基于K8S的。
之前调研的时候把argoCD、fluxCD、JenkinsX拉在一起写了个选型的表格。但其实上手跑一趟,个人主观的倾向还是比较重的。
虽然argoCD的体验做的更好一些,但我更喜欢FluxCD的架构和自动同步最新镜像的能力。最后我们并没有用以上的任何一个方案而是选择了自己在流水线上去控制这个发布的流程。
讲真GitOps的内容确实不多,而且适用的场景也比较有限,运行多版本的需求就无法满足,回滚版本也是通过取消提交来实现的。
补充:Argo 和 flux 双双从CNCF毕业了。
ChatOps
这个概念其实我是第一次听说,但发现现在自动化工具越来越多,IM也越做能力越丰富了,集成了大量的机器人来给群组发消息,ChatOps更进了一步,通过人回复指定的命令就可以在聊天中解决工作问题。
包括在Github的PR里,通过命令对PR进行代码评审、指派、设置状态等。运维权限的审批申请和批复,也可以做到在聊天中搞定,执行完回复一句完成自动回收权限。
看起来似乎非常美好!其实实现的难度也不一样,还是要根据自己IT系统的能力一步一个脚印来吧。
chatGPT的诞生可能引发更加深远的影响,更加复杂的操作可以被实现,不再是预设一些简单的交互(2023-3-29补充 Plugin机制完全打开了可能性)。
DataOps
DataOps是指一种将敏捷开发、DevOps和数据管理方法结合起来的数据管理框架,旨在提高数据治理和处理的效率和质量。与传统的数据管理方法不同,DataOps强调通过自动化、协作和更好的数据管理流程实现更快的数据处理和更好的数据品质。
在DataOps中,开发团队、数据科学家和数据管理员之间的紧密协作是关键。这种协作有助于确保数据管理流程的连续性,以及数据的可靠性和准确性。
DataOps框架包括自动化数据管道、持续集成和部署、版本控制、数据监控和报告等功能。这些功能允许开发团队快速地开发和交付数据产品,并且可以快速识别和修复任何问题。