上文说过,DevOps并不是一个单一的职能,更不是一个工程师,而是整个产品交付生命周期中所涉及到的广泛的能力的集合,企业需要根据自身情况和业务目标来完善这些能力。
DevOps的功能
随着抽象的架构发展成具体的对象,DevOps的功能将由一组高效的支持团队、一个明确的实践方案和一套自动化工具组成,最终实现如下工作:
⬇️持续业务规划
⬇️协作开发
⬇️持续测试
⬇️持续发布和部署
⬇️持续监控
🔙持续客户反馈和优化
规划
在传统的工作流程中,由于各个团队是孤立运行的,因此,进行有益的规划所需要的信息必定是支离破碎,甚至有时是相互矛盾的。
正好,DevOps有助于协调这些竞争性因素,实现最佳平衡,帮助团队制定统一的目标。
开发
企业的软件交付工作涉及多个跨职能团队,比如业务部门管理人员、分析师、架构师、开发人员、测试人员、运维人员、安全专家、供应商和合作伙伴,企业必须提供一套可行的流程和高效的平台,支持整个团队协同工作,实现敏捷的持续交付。
测试
将测试和开发集成在一个协作平台,对代码进行持续测试和验证,使产品功能符合设计目标。
部署
实现将软件能够高效、自动部署到生产环境,目标是将新功能最快、最可靠地发布,展现在用户面前。
运维
对业务进行持续监控,并将监控数据反馈给运维、开发等相关的部门,同时,收集用户反馈的信息,包含用户的行为和用户遇到的问题,快速响应用户需求,最终通过优化产品改善用户体验。
DevOps的基础
此前说过,DevOps是一种概念,在这个概念中,有一个因素就是思维方式。
我们遇到的最大的难题是企业环境,以及与之相应的企业文化——由管理者决定企业/产品的发展方向的文化氛围使得DevOps没有生存空间,除非这个管理者是一个忠实的DevOpser。
也就是说,具备DevOps文化的团队,是建设DevOps的最基本要求。
DevOps的技术
这部分内容也并不会具体地讲述如何部署技术环境,而是DevOps涉及的技术概念。
基础架构即代码
这是DevOps的核心功能,用于管理环境和配置,它是由多个节点构成的一套完整的平台,包含节点配置,以及节点的策略、定义、拓扑结构、角色、关系、状态等。
通过自动化工具实现对基础架构即代码的管理,这些自动化工具大概都是一些应用和中间件、环境和部署工具等。
开发和测试平台
应用发布的基本流程:开发→构建→软件包管理→测试→预发布→生产。
基于这个流程,我们需要部署统一的开发和测试环境,并对它们进行管理,包括且不限于工作任务(需求)管理、源码管理、产品版本管理、测试环境和数据管理等。然而,这些功能往往是跨平台的,需要多个应用才能实现,正是如此,我们更加需要进行统筹规划,在DevOps的指导下展开工作。
部署和发布管理
自动化部署工具是DevOps的核心工具,需要将部署工作预先编排好,工作计划包括:配置系统环境、安装和配置中间件、将软件部署到相应的节点、跟踪和反馈部署效果。
原创文章禁止转载:技术学堂 » DevOps(二)浅谈开发运维的功能及实现方法