切忌一步到位,谈谈DevOps实施落地
2020年6月19日,由云计算开源产业联盟指导,高效运维社区和 DevOps 时代社区联合举办的GNSEC 2020线上峰会圆满举办。BoCloud博云参加了本次峰会并分享了博云帮助客户实施DevOps的真实案例,以及博云内部推行DevOps落地的实践经验。
01
DevOps范围、愿景和目标
过去我们谈到DevOps的时候有很多不同的认知。早先说DevOps可以是CICD,持续交付,后来有人把敏捷开发管理放进来,之后有客户跟我们聊DevOps是指运维SRE。得利于中国信息通信研究院主导的研发运营一体化的标准,终于把DevOps包含哪些内容给说清楚了,如下图所示:
DevOps标准中主要包含5大块内容:研发运营一体化、应用设计、安全积极风险管理、组织架构、系统工具。核心的模块在第一部分“研发运营一体化过程”里,而且标准中把最佳实践是什么样、不同等级实践对应有哪些具体细节都说的很清楚。
基于如上这个框架,实际上可以看到DevOps的目标是很多的,涉及开发、测试、运维三个模块。
因为目标很多,所以DevOps到底要怎样落地?是不是照着蓝图做就能很好的实现DevOps落地?因为有蓝图有最佳实践、有标准,按理说DevOps落地应该是非常轻松的。我们回答也很明确:不是这样的。这里我举2个例子,管中窥豹的看看DevOps实践过程中的一些弯路。
02
照着蓝图做,是否就能轻松DevOps落地?
第一个是大型央企DevOps推广案例:内部云团队想规划建设PaaS平台,包括DevOps平台,因为PaaS包含DevOps,所以云团队想将PaaS平台中的DevOps能力推到研发部门。
整体建设范围是敏捷开发管理、持续交付管理、运营一体化,这个事情花了很多精力,也做了很多内部团队的沟通,整体来讲在业务团队推广效果不是特别好,后来就逐渐搁置了。这个事情不是说做失败了,至少效果没有显现出来。总结来说的话:DevOps平台应该是谁使用谁建设可能在起步阶段会更容易一些。
第二个是我们某个中型金融机构案例。这个案例建设目标起的比较高,并找了咨询公司做了咨询。咨询公司做的东西确实比较好,比较完整也比较细致。整个的建设目标包括开发管理、持续集成、测试部署、持续监控的,规划的很完整。
到了落地阶段,这个项目整个落地周期10个月,上线7套系统。整个落地模块包含项目协同,流水线制品库等等,落地了项目协同、CICD流水线、度量仪表盘、管理驾驶舱。客观说实际推广效果还是可以的,尤其开发团队感受还可以。但是整个项目后来总结时运维团队提出了很多意见,说前期运维团队也参与了,领导也提了目标要求,但最后做了10个月,运维团队没有感受到这个平台带来价值。
这个实际应该算是比较成功DevOps项目,但是后来评估的时候运维团队却提出了明确的负面意见,影响了项目评价。总结来说:项目前面调起的太高,范围过大,各个团队落地的期望比较高,但是实际上落地的时候可能有些团队没有得到想要的效果,效果评价受到了影响。DevOps落地初始目标设计,要更合理一些。
如上两个小案例,以点带面说明下DevOps落地的典型问题。
基于前面的案例,我想回答一下为什么DevOps蓝图很难一步到位。第一是因为组织架构, DevOps项目希望同时在开发部门、测试部门和运维部门都得到很好效果很难,最好分步来做,先解决单部门问题是比较合理。
第二个DevOps自动部署的工具仅仅是一部分,其实还涉及DevOps文化和共同认识的建立过程,这需要一个较长的过程。DevOps整体蓝图要解决的问题,涉及的底层工具非常多,很难短时间在没有很好的基础前提下快速落地,良好的DevOps落地需要一系列标准规范的推广落地。但一般来说,因为历史包袱原因,标准规范的推广需要一个逐步甩包袱的过程。这些规范非常需要,但是因为历史包袱问题推广是很麻烦,遇到业务部门业务需求是很大的,所以说标准规范推广是比较难,但必须要做,但是推广需要过程。整体来说,这几个原因是DevOps有了蓝图和最佳实践还是很难一步到位原因。
03
DevOps落地实施路径建议
DevOps具体实施有哪些好的实施路径,我们也想尝试回答一下。理论上从DevOps每个领域都可以发起DevOps,然后去落地,而且根据不同公司情况、业务基础设施情况,实施路径可能不同。根据我们的落地案例,我们尝试性的找几个比较通用合适的实施路径,举几个例子跟大家分享一下。
第一个国内某股份制银行,他的推广路径首先是在研发过程管理中,敏捷开发管理、配置流水线、度量;然后在运维视角发布自动化、变更管理自动化;后来紧随着整个前期的研发推广,同时在底层专业平台、专业数据库管理中建立容器化。
从开发测试角度:他们的流水线已经大规模应用,所有开发团队在开发第一步就可以把流水线建立好,开发人员只基于流水线就可以做整个CI和CD上线,是非常有价值的事情。另外,敏捷开发管理也已经落地到了整个研发流程管控里(这个行业经验很多,但是对开发测试来说,也是最重要的)。
从底层能力方面:容器化大规模应用,对于CICD非常有帮助的。
目前呢,他们正在推进DevOps能力整合优化,实现更大价值。这个案例应该说是非常好的DevOps实践路径。尤其是已经大规模推广起来了,是非常厉害的。
第二个是安信证劵。第一步做了敏捷开发和自动化测试和度量,主要在开发侧;在运维视角做了容器化,也已落地。然后安信证券比较好的一点是除了推广和落地,在于很好选择了试点团队。
试点团队选择了技术能力比较强,希望能够快速发布,根据这几个点选了几个团队进行试点,进行项目实践,整个试点达到比较好的效果。第一,已通过DevOps三级认证。第二,流水线真正标准化落地,度量指标及指标指导下研发改进效果明显。第三,目前已经启动了大规模推广。是DevOps比较好的落地,并能够达到设计效果的一个项目。
第三个是我们自己博云。其实我们做DevOps时间挺长,我们内部2018年开始推行DevOps,当时也是通过工具链来做。后来我们做了自己的DevOps平台,目前已经全部切换到自己的平台来用了。推广路径如上图,自研DevOps平台推广周期相对比较短,基本上4个月就全部切换过来了,主要是因为内部在工具链使用方面已经有比较多的经验。
我们是软件公司,没有所谓线上发布这个过程,所以说DevOps落地更多集中在研发测试环节。我们的需求本身是比较明显,有两个核心需求,第一个实现快速迭代发布,第二个实现能够更好去把研发进度效率实现自动化,把度量的事情搞定。路径上来说,我们首先DevOps团队自己先去试点推广,DevOps产品现在整体来说1个月一次正式的版本发布,进度质量效率数字化,实时可见。第二个通过公司管理层的直接推进快速扩展到全公司研发团队。
实施路径选择建议
尝试性的总结下DevOps实施路径选择原则。
第一个要制定合理目标。核心原因是每个团队最为关注目标是不太一样的,像刚刚讲到我们作为做软件的公司,更多偏向于快速迭代发布和度量这两块的内容,但作为一个线上系统可能更重要是别的一些指标,所以说基于自己现状从核心痛点出发,制定合理项目目标比较重要,同时在运维发布和CICD流水线都有需求。
第二个是管理好内外部期望。其实我们一开始要提出自己的目标,一个方面要有很好价值,另外也不要好高骛远,不要把期望搞的很高,推广是没有那么容易,要有合理期望值,包括领导,期望太大容易失望,失望了之后推广就失败了。
第三个是系统设计取决于组织架构。最好不要一上来做组织架构的事情,这个肯定可以做,但是比较麻烦。在DevOps实践里面组织内部做的事情很多,可以从本身组织开始,然后逐步实现整合跨部门,这个很合理。除了平台之外还有人的文化认知,所以分步实施、逐步演进,也不需要规划一步到位,一个月就把DevOps做到位,这个其实不太现实。一步到位非常难,而且效果不好。那么试点团队是先试点,配合比较好、意愿比较强再去推广,这个是几乎所有DevOps做得比较成功企业的工程实践。
另外一个周期上要有持续的推进机制,可能刚开始大家推进挺好,那么过了半年推广是不是忘了,必须要有持续的推进机制,要有打持久战的准备,逐步把DevOps这事落地优化到最好。
最后一个是:规范。越规范越有用,规范价值是非常大的。在可能情况下可以先推行规范,有了规范,很多事情会变得非常容易,而且对于使用者,落地之后的使用体验也会很好。所以规范越早推越好。
整体上这个就是DevOps落地实施路径的规划原则,大家可以作为参考。
切忌一步到位,谈谈DevOps实施落地的更多相关文章
- DevOps实施的三种IT障碍
[TechTarget中国原创] 现今DevOps可谓是红遍半边天,但正因为它是新的东西,企业也在不停的犯同样的错误.从这些挑战中学习,让你的DevOps项目取得成功. DevOps正在以一种更有效的 ...
- 深度剖析:最新云端开发工具如何实现敏捷+DevOps开发落地
相信很多软件开发人员们对今年国内新兴的云端开发工具——华为软件开发云都有耳闻,有些人可能还免费体验过,由于它5人以下的团队是免费使用的,很庆幸本人的这个项目正好5个人,就注册使用了.下面就自己的使用心 ...
- DevOps实施历程-v1.0
有AF项目的成功案例(DevOps实施历程-半自动化),公司新项目全部依此为模板,实现了从代码到安装的自动化流水线,为此我输出了Jenkins自动化指南.AF项目指南等文档,方便大家查阅和参 ...
- DevOps - 实施原则
章节 DevOps – 为什么 DevOps – 与传统方式区别 DevOps – 优势 DevOps – 不适用 DevOps – 生命周期 DevOps – 与敏捷方法区别 DevOps – 实施 ...
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读----最大的难点并不是实际业务代码的编写,而是服务的监控和调试以及容器的编排
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
- 唱吧DevOps的落地,微服务CI/CD的范本技术解读
1.业务架构:从单体式到微服务 K歌亭是唱吧的一条新业务线,旨在提供线下便捷的快餐式K歌方式,用户可以在一个电话亭大小的空间里完成K歌体验.K歌亭在客户端有VOD.微信和Web共三个交互入口,业务复杂 ...
- 海西 · 云交付 DevOps实践落地方案
一.背景概述 (一)产品背景 1.互联网+的需要 在信息越来越繁杂的互联网时代,公司所运行的项目越来越多,项目相关服务繁多,服务之间存在复杂的依赖关系,运维与管理任务越来越繁重,手工交付需要花 ...
- 谈谈DevOps和TestOps个人见解
首先是百度百科和维基百科的解释对DevOps的说明: https://baike.baidu.com/item/devops DevOps是开发运维,而TestOps则测试运维.DevOps(Deve ...
- 带你全面认识CMMI V2.0(终)——实施落地
引入CMMI的方法 一共有四个阶段将您的业务过程和最佳实践最终融合在一起,并在该范围内重新创造整个组织的"完成方式".这四个阶段是: 战略探索:此阶段的重点是了解当前状态并计划过渡 ...
随机推荐
- python自学Day03(自学书籍python编程从入门到实践)
第4章 操作列表 只需要几行代码无论列表有多长,循环都能够让我对列表的每个元素都采取一个或一系列相同的措施,从而高效的处理任何长度的列表. 4.1 遍历整个列表 对列表中每个元素都拿出来,进行一个或者 ...
- 温故知新-java多线程&深入理解线程池
文章目录 摘要 java中的线程 java中的线程池 线程池技术 线程池的实现原理 简述 ThreadPoolExecutor是如何运行的? 线程池运行的状态和线程数量 任务执行机制 队列缓存 Wor ...
- 手把手教你用redis实现一个简单的mq消息队列(java)
众所周知,消息队列是应用系统中重要的组件,主要解决应用解耦,异步消息,流量削锋等问题,实现高性能,高可用,可伸缩和最终一致性架构.目前使用较多的消息队列有 ActiveMQ,RabbitMQ,Zero ...
- svn版本库的使用
简单案例: 1.不管在哪个盘下(比如:C盘.D盘等),都先创建文件夹(这里我新建的文件夹是“项目”),创建好了就点击去,如下: 2.在自己新建的文件夹中再新建一个新的文件夹,如下: 3.选中你的文件夹 ...
- 用了一年 TIM 移动版之后,我又换回了手机 QQ
TIM,是一个很玄学的产品. 讲真,我很不喜欢 QQ 电脑版.一个原因是我很讨厌一直占着右上角这一行为:右上角是给关闭按钮实现盲操用的,QQ 这么一个聊天软件没有这么高的地位:二是我不喜欢它的多窗口: ...
- 附024.Kubernetes全系列大总结
Kubernetes全系列总结如下,后期不定期更新.欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识.若发现任何错误或纰漏,留言反馈或右侧 ...
- 详说tcp粘包和半包
tcp服务端和客户端建立连接后会长时间维持这个连接,用于互相传递数据,tcp是以流的方式传输数据的,就像一个水管里的水一样,从一头不断的流向另一头. 理想情况下,发送的数据包都是独立的, 现实要复杂一 ...
- 【K8S】Service服务详解,看这一篇就够了!!
k8s用命名空间namespace把资源进行隔离,默认情况下,相同的命名空间里的服务可以相互通讯,反之进行隔离. 1.1 Service Kubernetes中一个应用服务会有一个或多个实例(Pod, ...
- 容器技术之Docker-swarm
前文我聊到了docker machine的简单使用和基本原理的说明,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13160915.html:今天我们来聊一聊d ...
- Lucene5多条件查询
lucene是一个很强大的搜索工具,最近公司项目上用到,结合JAVA1234所讲,对多条件查询做出总结 先描述一下我的多条件需求,如果和您的类似,继续往下看. 1.我的Lucene搜索会在很多地方使用 ...