DevOps 能力模型、演进及案例剖析
《DevOps 能力模型、演进及案例剖析》要点: 作者介绍
主题简介本次分享主要分为两部分:
部分内容可能形而上学,所以带好枕头被褥,困了就眯一会儿,后面有点小精彩. 引言运维工作是实践性的学科和工作,即便没有高深的理论也可以开展工作,继而从事这个工作的朋友不缺乏实际动手的能力. 但从事物的发展规律性和普遍性来看,从实践出发的Ops恰恰缺乏必要的理论指导和思想探究. 本文是我对运维工作的理论、思考和定义的总结,同时给出DevOps相关概念的定义,明确其工作范畴,能力要求,产出标准以及演进建议.一家之言尚未完善,抛砖引玉,欢迎讨论. 从一次面试开始问题1问:如何通过Python或者Shell给Nginx添加/删除一个虚拟站点? 问题2问:如何使用Python将文本日志结构化 这是最近真实的面试案例.上述两个问题的回答,让我很不开心:
从案例里我总结了两个核心的定义:工程能力和架构能力.下面先给出这两个定义. 工程能力当然是运维工!程!师所必需具备的.我对工程能力的定义是:
架构能力,本人解释为:
比如程序猿懂了业务,想了部署,做了高可用的规划应该算得上架构狮了. 1. 分解问题的能力针对问题1的分解逻辑如下:
2. 定义执行序列的能力有些操作是高危操作或者是不可逆的,比如修改sudoers文件.在基于sudo管理的系统下,如果一旦sudoers被改坏是灾难性的.因此定义执行序列是:
3. 制定可重入操作的能力系统的管理和系统的状态的获取是两个不同方向的工作:
这两个不同向的操作行为就导致了状态和信息同步的问题.解决这个问题的方法有很多,但是稳定可靠,兼容性好的方法不多,我的方法是保证操作的可重入性. 即在同等的条件下,对于系统发出的指令,执行n+1次(n>0)的效果是相同的. 这样,即便我可能知道系统状态和信息是不一致的,但是由于操作行为是可重入的,我可以最终把状态和信息一致化. 以上展开了工程能力的解释. 由于架构能力涉及面广,交叉学科众多,此处暂不作展开说明. DevOps的能力模型我们先介绍相关能力模型:操作系统能力模型和应用系统能力模型,然后再由此引出DevOps能力模型. 操作系统能力模型除操作系统核心提供的基本功能外,还给我们提供了以下功能(以Linux为例):
应用系统能力模型除操作系统能力模型提供的功能之外,还给我们提供了以下功能:
DevOps能力模型由此,我们给出DevOps能力模型的定义:
评估DevOps是否合格的标准:
DevOps的级别:符合DevOps能力模型1:为初级DevOps,可以使用shell做DevOps的一般性系统级别的工作,在一些第三方工具(Ansible/Fabric)的帮助下管理大量服务器; 符合DevOps能力模型2:为中级DevOps,可以使用shell做DevOps的应用系统的部署和优化工作,并能通过其产出的脚本大批量管理应用系统 符合DevOps能力模型3:为高级DevOps,可以使用shell和通用语言进行广泛的DevOps的工作,可以完成完整的业务流程的定义和开发,能够熟练抽象并编写供其他DevOps使用的接口. 符合DevOps能力模型4:为架构师级别的DevOps,根据业务需求,规划系统部署架构;根据业务指标要求优化部署结构和性能,保证高可用等;定义脚本代码接口,制定开发规范和操作规范. 理论的东西说完了,下面是探讨下Dev和Ops的现状,Ops的演进,Dev的演进以及三项补充内容. Dev和Ops的现状(编辑:ASP站长网) |