给DevOps打上最佳实践的标签

简介: 本文讲的是给DevOps打上最佳实践的标签,越来越多的厂商开始研发DevOps产品,有的基于项目管理工具衍生,有的从运维工具或容器云过渡,不管怎样,大家都是为了给客户带来一条全新生产线,支撑其数字化运营。

本文讲的是给DevOps打上最佳实践的标签,越来越多的厂商开始研发DevOps产品,有的基于项目管理工具衍生,有的从运维工具或容器云过渡,不管怎样,大家都是为了给客户带来一条全新生产线,支撑其数字化运营。

记得2015年初产品刚起步时,我们也是从CICD开始、变更触发代码构建、再到自动化部署到容器云;随着不断地客户实施,普元对DevOps的定位、价值、特性等有了更多的认识,借本篇文章,与大家分享我们的持续认知和改进。

经过一段时间的实施与改进,本月底我们将正式发布DevOps的5.0版本,相比于常规功能,DevOps更重要的是一些最佳实践的引入,真正对企业IT的生产起到精益运营的效果。

一、再谈DevOps定位

之前我们同事已经谈过DevOps的定位,但随着越来越多的交流和实施,我们发现大部分客户会提出这些要求:
image

很显然,这些想法都很实际,又都存在着一些问题,拿第一个说法(给一些工具或系统做统一门户)举例:

很多客户企业确实已经用了不少开源或商业产品,只是现在都是一个个独立存在,没有统一登录、认证,使用起来比较麻烦,所以提出了第一个要求,并认为这就一定程度上实现了DevOps。

但事实上,这个做法对旨在精益的目标来说,显然是不够的:

  1. 我们还是不知道某个系统需求最终跑在了哪些机器上
  2. 我们也不知道现在并发的20个项目中哪些项目存在风险
  3. 同样我们可能基于现有的信息,也不知道敏捷发布火车一年能开几回
    image

所以,在我们定位里,DevOps不是简单的集成或整合,而是一条数字化生产线,覆盖从需求到最终运营的全周期;

当然也少不了对于质量、安全方面的支撑,为IT运营提供足够的保障。

想一次性从需求做到运营往往是一个理想,更多的是选择生命周期中最需优化的点来逐步建设,但现在也看到一个现象:

越来越多的厂商开始研发DevOps产品,有的基于项目管理工具衍生,有的从运维工具开始,有的从容器云过渡,有的从开发平台着手,貌似大家把所有工作都归结为DevOps。

显然在定位上犯了一个问题,就像之前很多人说一切皆代码、一切皆*的,而忽略了DevOps的初衷(当然我们不排除丰富一切对IT生产线有用的能力,但不能把一切都强行说成DevOps)。

其实SAFe中给了DevOps一个比较有原则、并且接地气的定义:
image

DevOps重在快速交付,通过将研发管理与部署交付的紧密结合,驱动企业敏捷。

所以,我们应该首先着眼在交付流水线上,通过可视化协同、标准化、一定的自动化等手段,让企业、让团队在流水线上更好的协作。

接着在运营并持续产生数据的基础上,通过各维度的度量手段,快速发现瓶颈,逐步优化,迭代建设并形成企业数字化标准。

绝不是不管三七二十一,上来就买个容器云、或者智能调度、或者自动运维、甚至是不切实际的“零运营”产品,然后考虑怎么迁移。

二、谈谈几个实践设计

回到今天的重点,分享一下我们在DevOps实施中的一些实践设计。

回想起2015-2016年初,我们也很喜欢给客户讲:开发者如何通过提交代码到git,触发jenkins开始构建,打包出镜像,通过与配置管理配合,一键发布到容器云。

就像下面的阿里云的这张图:
image

但是当我们拿着初期产品(可能叫原型更合适),去POC和客户实施时,往往面临的是这些业务问题:

image

比如很多集团要支持二级单位模式,那应该是什么样的部署要求,如何做数据的隔离?

又比如客户办公网和测试网肯定是单向的,那对于自动化测试(尤其是带设备的,比如手机真机测试肯定是放在办公网的),该如何应对自动部署和测试用例的推送执行?

类似问题一实施起来就遇到很多,这个片子先准备了下面几个实践:

image

  1. 刚才一直在说需求跑在哪些机器上,这是个典型的数据打通的问题,或者叫数字化问题,那数据关联我们怎么考虑的
  2. 版本,现在不同于以前单块架构,微服务架构下,有着各类都叫版本的元信息,比如发布版本、api版本、快照版本、产品规划版本等,是否建立了规范机制和关联性管理能力
  3. 看板,做DevOps的自然之道看板的重要性,但不同的角色,期望从看板中看到的信息肯定是有所区别的,该如何设计看板
  4. 租户的问题对于很多大集团运营是不可避免的,平台该如何考虑租户的数据隔离,被集成的系统又改如何配合
  5. 安全,这个领域比较大,我这边谈到的只是平台本身的一些安全处理,应对合规审计等要求

先说说数据关联性处理的实践:

image

要想需求知道运行在哪里,至少必须打通上述的几个环节:

  1. 需求到任务的拆分,这个很简单,无论jira、禅道,这都是必须支撑的
  2. 任务到编码的关联,或者可以这么说,提交的代码必须知道是完成了哪个或哪些任务,这个有几种实现方式,一则是完成任务时,输入commitid,一则是提交代码时,统一模板,再通过hook将关联关系持久化。显然第二种更优。
  3. 编码与构建的关联,本质上是要建立每次构建涵盖了哪些新增的Commit信息的管理,这个也有几种实现方式,一则是编译信息体现到库上,后续远程获取增量,一则是完全自身存储,相当于完全接管commit信息的存储。两者没有太多优劣,都可以。
  4. 构建与部署的关联,其实是每次部署关联的工件信息的持久化,这个倒不是难事。

基于上述环节的打通,当然还要把变更、升级等结合进去,想做到信息打通就不难了。

再说一个关联的例子,之前我们有同时讲过我们平台上的部署三部曲:部署设计、部署转换、上线运维。不仅仅是部署,为什么要做在线的很多设计呢?
image

传统模式下,架构师写架构设计文档,包括应用架构、部署架构、数据架构等,但随着项目的执行,后续实际开发、构建、部署和文档上难免有偏差,好像也很少有人再反向更新文档保持所有同步了。

那为何不将设计放到在线,同时提供多版本管理,支撑优化变更,指导后续工作呢?
比如部署架构,后续可生成部署计划;

比如接口设计,后续可查看变更,在线文档化;

比如应用架构,后续指导构建依赖,某个构建应该触发哪些构建;

这就是我们为什么要把设计阶段很多工作在线化的关起来的原因,做到各阶段的关联性驱动和管控。

接着说说第二个实践,现在对于版本这个词的管理,比以前复杂太多了:

image

记得万达客户实施时,客户自身就把这些版本规则、信息等做了严格的规范,什么地方用几位表示,何时变更。

那对于DevOps平台来说,重在建立关联信息的看板,为不同的角色提供不同的信息图,看板的实践中正好也提到了一些版本的问题。

我们就接着来说说看板的实践,很多人第一反应是需求或任务看板,这个当然是必须的,不过可视化协同的不仅仅是需求或任务,很多信息都需要看板的方式呈现。

比如:
image

这是面向交付的看板,可以清楚的看到本次发布到底已经过了哪些环境的验证,最终走到PROD的,事实上就是发布的版本。同时对于发布的版本,内部对应的组件(或服务)具体的版本是什么,也要呈现出来。

这个看板对于项目经理和架构师很重要,可清楚看到版本一次次持续交付的过程。

再比如:
image

这个看板其实做的不太好(正在改),其实应该是一个项目环境全集的展示,体现出目前项目的所有环境中到底部署的是什么版本,运行状态如何。

再比如:
image

这是流水线,涉及到了多个环境部署、测试知道最后生产上线,这是团队成员在稳定期到最终发布的中间迭代环节,不同的人关注不同的活动,项目经理关注执行阶段与执行情况。

再比如:

image

面对PMO,可能有些企业是CTO,会关注当前所有项目的状态,这张图与IBM的JAZZ中的一个图类似,显示一些项目处于预警状态,另一些是健康状态,椭圆大小代表项目的计划人月多少,越大的越要关注。有这种看板,就不用找每个项目经理沟通或开会了,只要关注有风险项目即可。

再比如:

image

这是项目的基础信息看板,项目经理关注里程碑的情况(延期、进行中、完成等),由此再深入到具体的需求、任务、Bug等具体信息。

很多企业都有二级单位,DevOps同样会开发给二级单位使用,这就涉及到了对于租户能力支撑的实践:
image

业界租户方案主要是应用隔离和数据隔离,对于devops产品来说,显然数据隔离足够了,对于数据隔离,又有逻辑数据隔离(每张表带租户字段)和物理数据隔离(分库)两种方式。

目前我们的产品设计是两者都支持,前者应对数据量不大的情况,后者应对隔离要求很高且量很大的情况。
image

上图应对的是第二种租户设计,更多的通过申请+初始化的方式,同时绑定不同二级域名,解决入口问题。

除了DevOps平台本身,对于集成的三方系统,也要考虑租户能力的支撑:
image

比如Jenkins,建议共享,通过给work node打label,来区分租户;

再比如Nexus,建议每个租户三个独立产品库,当然,如果采用artifactory则更好了
再说说今天的最后一个实践,关于安全的问题,首先DevOps本身定位在管理了多套环境,那平台本身该如何部署:
image

DevOps本身一般部署于生产环境中,通过部署引擎与各环境打通;而对于nexus、或者harbor,目前实施客户中既有可多环境共享的,也有通过多环境同步的。

image

对于平台本身,也要注意:
image

三、普元DevOps核心

一个是领域概念的设计:
image

还是从产品、项目、组织、集成、部署领域考虑,通过流水线将能力串联

另一个是我们的核心观点:

DevOps平台需覆盖产品、项目的全周期
DevOps平台更重要的是提供最佳实践
DevOps平台,重在让所有角色在流水线上协作,共同驱动过程的精益
DevOps平台,管理前移,有效指导和约束后续工作
所谓打通,不是一味的打通部门墙,更重要的对于各阶段管理对象的关联性打通
对于已有系统,DevOps平台不仅仅是通过新的工具链实现快速交付,更是一种驱动优化的变革
DevOps平台,并不是自动化一切,而是在可控中有选择的自动化

最后,对于最佳实践这种东西,仁者见仁,每个企业都有不同的需求和想法,需要在建设期一步一步的做进来(当然,这就要求产品本身的延展性设计等)。

image

原文发布时间为: 2017-06-05
本文作者: 顾伟
本文来自云栖社区合作伙伴EAWorld,了解相关信息可以关注EAWorld。

相关文章
|
11月前
|
数据采集 运维 Devops
《快递行业云上技术服务白皮书》——4. 快递行业技术服务最佳实践——4.3 技术服务展望——4.3.2 DevOps
《快递行业云上技术服务白皮书》——4. 快递行业技术服务最佳实践——4.3 技术服务展望——4.3.2 DevOps
|
SQL 安全 Devops
DevOps流水线设计的最佳实践
谈到到DevOps,持续交付流水线是绕不开的一个话题,相对于其他实践,通过流水线来实现快速高质量的交付价值是相对能快速见效的,特别对于开发测试人员,能够获得实实在在的收益。很多文章介绍流水线,不管是jenkins,gitlab-ci, 流水线,还是drone, github action 流水线, 文章都很多,但是不管什么工具,流水线设计的思路是一致的。于此同时,在实践过程中,发现大家对流水像有些误区,不是一大堆流水线,就是一个流水线调一个超级复杂的脚本,各种硬编码和环境依赖,所以希望通过这篇文章能够给大家分享自己对于Pipeline流水线的设计心得体会。
1020 1
|
运维 Devops
《应用管理:云上资源DevOps最佳实践》电子版地址
云上自动化运维CloudOps系列沙龙_第二弹 分享:《应用管理:云上资源DevOps最佳实践》
84 0
《应用管理:云上资源DevOps最佳实践》电子版地址
|
弹性计算 运维 监控
|
人工智能 Kubernetes 监控
2022 年值得关注的 DevOps 趋势和最佳实践
DevOps 集开发与运营于一体,已经非常有名。从 2009 年开始,DevOps 就在不断地发展,目前的一些研究也表明了 DevOps 的发展前景。
247 0
|
弹性计算 运维 小程序
云效+ACK 构建容器云 DevOps 平台 最佳实践
最佳实践目前已覆盖23类常用场景,已发布200多篇最佳实践,这其中涉及100款以上阿里云产品的最佳使用场景。目前,最佳实践已成功帮助大量客户实现自助上云。本篇主要讲述容器应用DevOpsforACK集群最佳实践。DevOps的目的是构建一种文化和环境,使构建,测试,发布软件更加快捷,频繁和可靠。而到了容器时代,需要部署的机器不但量更大,变化更剧烈,有的甚至需要根据条件自动升缩,为了满足企业敏捷的需求,持续部署也成了必须,本方案使用云效完成容器应用(小程序后端服务)的自动化构建和持续部署。
云效+ACK 构建容器云 DevOps 平台 最佳实践
|
Prometheus 运维 监控
DevOps训练营-Kubernetes监控与分析最佳实践
近年来,Kubernetes作为众多公司云原生改造的首选容器化编排平台,越来越多的开发和运维工作都围绕Kubernetes展开,保证Kubernetes的稳定性和可用性是最基础的需求,而这其中最核心的就是如何有效地监控Kubernetes集群,保证整个集群的一个良好的可观察性。本期将为大家介绍如何对Kubernetes开展全方位的监控与分析。
6576 0
DevOps训练营-Kubernetes监控与分析最佳实践
|
Devops 容器 Docker
Docker公司DevOps领军人物John Willis:DevOps最佳实践
本文主要从为什么要用DevOps开始谈起,接着分享DevOps的三种方式,着重分析第一种方式,包括Immutable Service Delivery的Devops (Faster)、Docker (Effective) 、Supply Chain (Reliable),最后浅谈了第二种方式。
562 0
|
安全 Devops 数据库
历经6年双十一,无任何生产故障,数据管理DMS服务平台诠释DevOps在企业级数据库的最佳实践
摘要:阿里巴巴解决方案架构师胡中泉(舟济)在2018云栖大会上海峰会企业研发云专场中做了题为《历经6年双十一,无任何生产故障,数据管理DMS服务平台诠释DevOps在企业级数据库的最佳实践》 的分享,首先就云上数据库DevOps实施痛点做了详细的概述,其次阐述了产品化解决方案的方法,最后对落地最佳实践的内容作了深入的分析。
2023 0
|
SQL 安全 Devops
阿里数据库DevOps最佳实践
DevOps已不再陌生,但目前业界主要集中在开发与运维的高效协作和快速发布上,而作为企业核心资产的数据库,其结构设计、SQL审核、变更发布已成为企业效率提升的主要瓶颈,这篇文章将详细介绍阿里在数据库DevOps上遇到的挑战以及解决方案。
7631 1

热门文章

最新文章