DevOps是一个覆盖面较广的IT专业领域,横跨业务、需求、开发、测试、运维各软件工程管理阶段,同时纵向知识和技术深度也较深,从项目管理到敏捷开发,从自动化测试到智能运维,每一项知识或技术都可以单独作为一个课题进行探讨,可谓是一个非常具有挑战性的领域。
因此,从事DevOps相关工作的门槛要比从事一般IT研发工作的门槛高,但同时DevOps工作也体现着较高的业务价值以及发展潜力。未来十年甚至更长的时间,企业的数字化转型都将是企业发展和转型升级的一个重点,DevOps的建设也属于数字化转型的一部分,而且是一项领头工作,值得在这方面感兴趣的朋友们研究与深耕。
根据DevOps的覆盖范围,并基于过往我们在DevOps建设方面的经验积累,我们归纳了DevOps的“四纵四横”体系,如下图所示:
首先在纵向上,我们划分为需求、开发、测试、运维的四大阶段,每一个阶段中都有各自的关注点、流程、输入输出、技术、工具、度量指标;在横向上,是在DevOps建设中从初阶到高阶演进发展的一个过程,从最基础的第一横“端到端工具集成”,到完整形态的第四横“能效显示与精益改进”,每一横都是一个大里程碑。
通过DevOps建设,我们要实现的是,完成工具和数据流的融会贯通,形成各阶段的信息资产关联,并根据过程指标数据,分析改进思路,从而持续提升IT效能(更快更好地进行IT需求交付),这是我们做DevOps期望达到的目标。基于该“四纵四横”体系,对于如何发展成为一位DevOps工程师或DevOps咨询专家,我们归纳了以下三点建议:
01. 从“四纵”中的某一领域起步工作,在该纵向上持续积累技术和经验深度,同时横向学习和了解其他纵向的工作流程和技术要点。
由于DevOps的覆盖面广,因此在自己日常工作所属的领域中完成纵向知识积累是一个较好的选择。许多朋友都是从开发域(Dev)或者运维域(Ops)开始工作,若从事的是开发工作,在管理方面,我们可以积累开发流程、代码管理、分支管理、代码检查、CICD流水线、制品管理等方面知识。
在技术方面,可以积累Java、Python、Go等开发语言,Spring Cloud、Service Mesh等微服务结构、云原生等体系理念;在工具方面,可以积累主流的开源工具如Git、Jenkins、Sonar、Nexus等。若从事的是运维工作,在管理方面,我们可以逐步深入了解运维流程、基础设施管理、环境管理、配置管理、应用管理、变更管理等;在技术方面,细致的如系统运维指令、脚本、监控技术,大的如IaaS、PaaS、SaaS建设等;
在工具方面,如运维流程管理ITIL/ITSM、云管工具CMP、容器管理k8s、自动部署Argo CD、监控工具Zabbix、Open-falcon、Zenoss等等。
在纵向积累的同时,横向了解其他领域也重要,DevOps是以精益思想和持续提升为核心展开的,只有多了解其他领域的关注点,才能更好地从全局层面认识到整个软件工程流程是怎么样的,涉及哪些工序,哪些节点是瓶颈,这样也才能更好地理解做DevOps的意义。
02. 在DevOps建设过程中,逐步积累DevOps在“四横”发展过程中的关键突破点。
DevOps建设也和功夫修炼一样,有层次和进阶步骤,需要一步一步有目标地完成。例如在初阶阶段,首先要打破领域壁垒,在工具上完成端到端打通,然后在此基础上,逐步将各域的流程串起来,在工具上融会贯通,实现管理流程和实施流程的融合。打好这两层基础,我们就可以向高阶发展了。
当流程在融合跑通后,我们在各阶段所产生的信息都已在工具上记录,可以进一步形成数据收集和信息间的关联关系,从而为度量分析和关联分析提供依据,例如通过度量分析找出过程瓶颈,有针对性性地进行优化;
又如当我们在线上发现一个问题报障时,我们可以快速利用关联数据,检查该问题是由于哪个变更、哪些需求引起的,同时也检查测试步骤和测试用例为何未能覆盖到该问题。
从DevOps初级阶段到高级阶段,需要一个过程,因为这里涉及的不仅仅是技术和工具,更涉及人与人之间、团队之间的协作,更包括团队甚至企业文化的建设,只有当团队、企业形成文化,成员形成共识和习惯,DevOps才能持续地运作并持续发挥它的价值,因此,我们需要有理念有目标,稳步发展,并在这个过程中积累经验,多思考如何能做得更好,从而向咨询专家的方向发展,为更多的企业DevOps建设提供经验参考。
03. 持续学习,既要深度,又要广度。
对于任何复杂的知识,最简单的概况就是要持续学习,关于DevOps的复杂度来源有两方面,一方面是IT技术发展快,DevOps很多技术涉及底层,在支撑上层技术同时,自身也在发展演进;另一方面实现方法没有万能的银弹,只有针对不同行业或不同场景的最佳实践,在企业落地DevOps建设过程中,又将是一个新的挑战和经验积累。
因此,持续学习,并做到有一至两个最擅长的纵向领域,再加上广度的知识学习,相信在一段时间的积累后,必定会成为一名好的DevOps工程师甚至DevOps专家。
以上,是笔者参考和研究一些资料后,以及结合企业经验的一些个人感受和理解,希望对大家有所帮助。
作者:嘉为科技