给DevOps打上最佳实践的标签

简介: 本文讲的是给DevOps打上最佳实践的标签,之前我们同事已经谈过DevOps的定位,但随着越来越多的交流和实施,我们发现大部分客户会提出这些要求:

一、再谈DevOps定位

本文讲的是给DevOps打上最佳实践的标签,之前我们同事已经谈过DevOps的定位,但随着越来越多的交流和实施,我们发现大部分客户会提出这些要求:

image

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

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

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

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

image

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

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

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

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

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

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

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。

相关文章
|
7月前
|
Ubuntu 安全 Docker
【DevOps】Docker 最佳实践指南(绝对干货)
祝您的 Docker 之旅一切顺利!
214 4
|
2月前
|
安全 Devops 网络安全
【DevOps】Docker 最佳实践指南(绝对干货)
Docker 是一种领先的容器化平台,可简化应用开发、部署和管理。本文档介绍 Docker 的最佳实践,涵盖安全性、网络、镜像、主机安全及资源限制等方面,帮助用户高效利用 Docker,确保应用的安全性和性能。
137 0
|
3月前
|
运维 监控 Devops
拥抱 DevOps 文化:实现持续交付与部署的最佳实践
在软件开发领域,DevOps 强调开发与运维团队的协作,通过自动化、持续集成与部署等实践缩短系统开发生命周期,提升软件质量。其核心原则包括自动化、协作、度量与共享责任。实施 DevOps 需要建立跨功能团队、采用版本控制、持续集成与部署、自动化测试及监控反馈。常用工具有 Jenkins、GitLab CI/CD、Ansible、Prometheus 和 ELK Stack 等。DevOps 通过文化与技术变革,加速软件交付并提高客户满意度。
|
4月前
|
持续交付 jenkins Devops
WPF与DevOps的完美邂逅:从Jenkins配置到自动化部署,全流程解析持续集成与持续交付的最佳实践
【8月更文挑战第31天】WPF与DevOps的结合开启了软件生命周期管理的新篇章。通过Jenkins等CI/CD工具,实现从代码提交到自动构建、测试及部署的全流程自动化。本文详细介绍了如何配置Jenkins来管理WPF项目的构建任务,确保每次代码提交都能触发自动化流程,提升开发效率和代码质量。这一方法不仅简化了开发流程,还加强了团队协作,是WPF开发者拥抱DevOps文化的理想指南。
92 1
|
7月前
|
监控 Devops 持续交付
构建高效可靠的云基础设施:DevOps和SRE的最佳实践
【5月更文挑战第30天】在数字化转型的浪潮中,企业对云基础设施的依赖日益增加。本文探讨了如何通过结合DevOps和Site Reliability Engineering(SRE)的最佳实践来构建一个高效、可靠且灵活的云环境。文章首先概述了DevOps和SRE的核心原则,接着提出了一系列策略来优化云资源的管理、自动化流程、以及提高系统的弹性。最后,文中将分享一些成功的案例分析,以帮助读者理解这些原则在实际场景中的应用。
|
7月前
|
运维 监控 Devops
构建高效稳定的云基础设施:DevOps与自动化运维的融合构建高效微服务架构的最佳实践
【5月更文挑战第28天】 在数字化转型的浪潮中,企业对于云基础设施的依赖日益增加。为了应对不断变化的市场需求和提供不间断的服务,传统的IT运维模式已不再适应现代业务的发展。本文将探讨如何通过结合DevOps理念和自动化工具,实现云基础设施的高效稳定运营。我们将分析自动化运维在提升效率、降低成本以及增强系统稳定性方面的关键作用,并展示实践案例以验证其效果。
|
7月前
|
运维 监控 Devops
理解并应用DevOps最佳实践的技术指南
【5月更文挑战第22天】本文介绍了DevOps在提升开发效率和保证软件质量中的关键作用,强调文化转变、自动化、持续集成/部署及监控的重要性。文章提出六个最佳实践:建立共同目标、采用敏捷方法、实现自动化、实施CI/CD、加强沟通协作和持续学习改进。Netflix的案例展示了DevOps的成功应用。随着技术发展,DevOps将在软件开发中持续创新。
|
7月前
|
Kubernetes Cloud Native Devops
【阿里云云原生专栏】DevOps与云原生的融合:阿里云CI/CD流水线最佳实践
【5月更文挑战第23天】阿里云融合DevOps与云原生技术,提供高效CI/CD解决方案,助力企业提升研发效能。通过云效平台,集成代码管理、构建服务、容器服务、持续部署及监控日志组件,实现自动化研发流程。案例中,应用从GitHub构建到Kubernetes部署,全程无缝衔接。借助阿里云,企业能快速构建适应云原生的DevOps体系,以应对复杂需求和提升市场竞争力。
200 1
|
7月前
|
网络协议 Ubuntu Devops
【DevOps】Docker 最佳实践指南(绝对干货)
如果需要通过网络远程访问 Docker 守护进程,应开启 TLS 并确保只接受来自可信客户端的连接。
67 3
|
7月前
|
安全 Devops 网络安全
【DevOps】Docker 最佳实践指南(绝对干货)
【DevOps】Docker 最佳实践指南(绝对干货)
75 2