认真评估你的软件的交付机制以及运维团队左移和右移的程度是你选择采用何种 DevOps 分合策略,以及 DevOps 实践是否成功的关键因素。
DevOps 的分与合,与运维工作的左移右移,云技术的发展,云原生标准的统一有极大关系,DevOps 概念可以在很多层面上得到体现,本文就其中主要的,可以让 DevOps 团队真切感知的四个层面来做简要介绍:
从人员管理层面看 DevOps 要想实践 DevOps 的分与合,必须要配置上合适的团队配置。这里有若干种配置的分类:
没有哪个模式是完美的,在实践自己的 DevOps 人员配置的时候,要想清楚自己的实际场景,当想清楚自己的人员配置的时候,要想保持高效就要考虑这些人与人之间信息如何流转顺畅。
从信息流转层面看 DevOps DevOps 是一种协作文化,协作流程,而协作的本质是顺畅、精准的信息流转。一个简化的典型的 DevOps 信息流转模型大致如下:
信息流转顺畅和精准的根本在于信息是否是结构化、流程化、标准化的。一个所有信息流转都依赖聊天群、开会、邮件等形式解决,看似能够一触即达的信息流转,往往会有重点不突出,信息遗漏,信息依赖人为跟进等问题,其实是不顺畅也不精确的。
核心要把握 DevOps 实践团队的如下节点是否信息传输顺畅且精准:
这几个关键环节都定义好标准和流程的时候,再次要去看其他环节的细化信息流转问题,接下来就是需要考虑使用何种工具系统为此标准和流程提速的时候了。
从工具系统层面看 DevOps DevOps 的协作文化目的是提升团队的效能,而自动化工具是必备的,好的工具体系应该是整合的、角色切面的、自动流转的。工具系统目标是顺畅精准的传输信息并且高效的执行机械化操作。
整合性:DevOps 的开源、商业软件有很多款,然而大多数软件系统之间都是弱整合状态,很多都是宣称支持 OAuth 或者 LDAP 用户体系就算整合了,这里面的差距还很大,例如 Jira 的项目和 GitLab 的项目,GitLab 的项目与 TestLink 的测试计划,这些实际的概念在不同的系统之间都遵从着不同的产品设计哲学,实际上弱整合的工具系统在提升团队信息流转效率上并没有太大帮助。
角色切面:好的 DevOps 工具系统应该像是一个为工厂量身定制的生产流水线,各个角色各司其职,关注精准的信息,执行标准的操作,输出标准的结果。在弱整合的工具系统里可能不同系统的用户、角色、权限设计都有很大差异,难以实现角色切面。例如一套基于 Jira + GitLab + jenkins + Kubernetes 的体系,运维角色应该加入 Jira 的项目中么?产品经理是否需要关注 jenkins 的 Job 执行状态?
自动流转:自动流转是为了解决重复性的机械劳动而设计的,要想具备自动流转的特性,整合性和角色切面也必须设计的非常好,开发完毕到提测自动部署,测试通过到自动发布,在设计好流程和标准后都是一些机械化的重复劳动。
工具系统不是万能的,有时候你会发现有了好的人员结构、信息流转方式、整合性的工具系统,实践起 DevOps 还是有一定困难,那你可以看看如下这个点:技术架构。
从技术架构层面看 DevOps 技术架构对 DevOps 的影响主要体现在构建、部署、运维环节。不同的软件类型,技术架构在这三方面是有很大差异的。例如单机手游,只有构建和发布市场,基本不存在部署、运维环节。而微服务架构 SaaS 化的多租户云服务在这方面就复杂的多。
这里以典型的服务器端应用的技术架构升级过程来作简要分析,例如对于一个基于 Spring 框架写成的 Java Web 应用,其发展历程可能是这样的:
云的发展也映射着技术架构的变迁,也引领着基础设施运维的右移,大致分为三个阶段:
每一种技术架构的 DevOps 的实践模式是有差异的,分与合的程度也不一样。仔细品味这些技术架构的特点,认真评估自身团队业务运维左移和右移的程度,就可以选择出合适的人员管理模式、选择适合自己的工具系统,形成顺畅、精准的信息流转,从而让 DevOps 的实践取得实质性成果。
持续部署是软件交付的一种形式,常用于服务器端软件的交付,在这里我们以 CODING CD + Kubernetes 来简要讲述一个服务器软件持续部署模式,我们假定团队现在的各方面基本情况如下:
这种模式可能是适合目前国内大多数团队的现状的模式,具备相当的代表性,跟此模式有差异的团队也可以通过此模式来品味本文的 DevOps 思考,去改进自身的实践。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。