实施DevOps的痛点

简介: 本文讲的是实施DevOps的痛点【编者的话】DevOps这个话题已经铺天盖地了,从方法论到流程再到工具,可谓前人之述备矣。今天再谈DevOps,我想分享下DevOps实施过程中的痛点和思考。
本文讲的是实施DevOps的痛点【编者的话】DevOps这个话题已经铺天盖地了,从方法论到流程再到工具,可谓前人之述备矣。今天再谈DevOps,我想分享下DevOps实施过程中的痛点和思考。

【烧脑式Kubernetes实战训练营】本次培训理论结合实践,主要包括:Kubernetes架构和资源调度原理、Kubernetes DNS与服务发现、基于Kubernetes和Jenkins的持续部署方案 、Kubernetes网络部署实践、监控、日志、Kubernetes与云原生应用、在CentOS中部署Kubernetes集群、Kubernetes中的容器设计模式、开发Kubernetes原生应用步骤介绍等。

DevOps 究竟是什么

敏捷方法论在数年前被奉为金科玉律,以至于出现了敏捷教练这个角色,使命是帮助企业改善产品研发流程,提升效率和质量。互联网的快速发展,各类产品迭代速度惊人,使得企业意识到必须有一套新的方法论、流程和工具来提升企业竞争力。竞争力的差距不再是活的好不好的问题,而是能不能活下去的问题。生死存亡之际,于是纷纷希望通过DevOps这一个全新的理念实现快速迭代,更快地实现管理者的意图,毕竟效率决定生死。

所以,DevOps是一种改善产品生产流程,提升竞争力的手段。本质上来说,软件研发也是生产活动,只是有一些特殊而已。DevOps能做的是将各自擅长的领域划分开,设计、开发、测试、运维关注在自己的核心领域,本质上与微服务架构的核心思想一致,都是分而治之,实现精细化操作与管理。责任明确、守土有责,那么人就成为了关键因素,人的积极性调动了,很多事情就很好解决了。

DevOps 如何实施

企业内部的研发流程往往存在很久,从内部开始是最好的做法,从内部突破、发掘痛点才能真正实现产品的“归零”。这里有两个误区要避免:
  • 按照既有的内部流程和工具设计一套DevOps系统;
  • 希望打造一个大而全的东西覆盖所有需求;

从内部需求出发没有问题,关键是需要甄别哪些是合理的,哪些是需要改造甚至重新来做的。怎样的流程才合理,哪些工具才合适当然跟设计人员的视野有关,但参考业内一些比较好的案例,基本上也能找到较好的解决方案。

DevOps系统也必须遵循在核心需求的基础上迭代的原则,往往搜集DevOps需求的时候,从BA到设计、开发、测试、运维到项目管理者各种需求层出不穷,他们都希望DevOps能帮助他们解决目前遇到的痛点或者不爽点,但是往往让DevOps设计人员难以抓住核心需求。

记得在一个大中型公司的DevOps启动会上,负责人面对着众多相关人员的眼睛,在台上说的第一句话是DevOps项目80%都失败了。他说出这句话的时候,其实已经说明这不是一个容易的事情。对既定流程的更改、对现用工具的更新换代都会给各个相关岗位的人员带来一定的工作量。

那么DevOps如何实施呢?
  • 工具链
  • 管理平台
  • KPI
  • Pipeline

DevOps相关的工具非常多,全部都可以采用开源工具,比如GitLab + Jenkins + Sonar + Robot + Kubenetes等等,当然最新开源的 Spinnaker 对于多云环境的部署有着非常好的支持,这方面也非常值得引入。对于传统项目中,通常会使用Jenkins配合诸多插件实现一键打包和部署。

对于管理平台而言,就需要一个统一的门户来管理各个工具。与各个工具的交互均以API形式进行,用户也不必管理在各个工具里面的用户和权限信息。最关键的是,通过一个统一的管理平台,可以很方便地将这些信息与项目管理信息对接起来,从项目维度看整个DevOps流程。

能够从相关管理角度看DevOps,那么很自然就可以想到使用KPI Dashboard的形式提供一个项目监控功能,方便查看整个的进程。比如,项目进行到哪个Sprint,每个微服务的开发进度,构建情况、部署情况,运维相关情况等等。

Pipeline是规范化的操作流程,结合可视化的设计,方便设计人员对流程进行管理,固化某些最佳实践实现复用。将Pipeline与产品的版本及项目关联能够很方便地追踪产品的整个生命周期情况,方便进行评估。

痛点在何处

既有项目的复杂依赖

通常一个项目的开发是基于一些已有的基础性内容,经年累月就会出现一个项目的依赖来自于另外两三个项目的Nexus仓库。只有具体负责项目的人才了解这些依赖,甚至经过项目人员流转,项目组成员也很难说清楚具体的依赖关系。

在做微服务改造的时候,很大部分时间就是在梳理这些依赖关系,然后一点点剥离,最终才能实现独立分发部署。然而整个过程中需要大量的项目相关人员的配合与参与,具体推进速度如何就取决于项目人员的配合程度了。

Jenkins 构建

部署环境相关信息多通过GitLab进行管理,由于Jenkins Job中CI和CD捆绑在一起,直接使用代码中的环境信息进行发布,自然简单快捷。这是基于开发人员对部署环境非常熟悉的情况,但是对于DevOps平台来说,问题就很严重了。往往版本的构建和发布是两个阶段,中间需要审核操作,其次开发和环境信息是隔离的,环境信息必须在部署前通过系统注入进去,而不是在代码中写成HardCode。

Job 改造

另外一个问题是Jenkins Job的定义方式,通常都采用直接定义,而不是采用DSL Pipe的形式进行定义。对于DevOps平台来说,代码构建和部署的Pipeline是跟产品的阶段、版本绑定的。必须可以在一个统一的管理平台上进行定义,DSL这种Pipeline描述语言就是为这种需求而生。设施DevOps意味着这类的Job的定义必须进行改造。

版本控制

实际项目开发过程涉及到项目与构建、部署信息需要打通的问题,即能够方便清晰地看到项目的版本有哪些微服务、每个微服务经历了哪些版本迭代、每个迭代经历了哪些构建等等。需要将原来的线下版本控制流程搬到线上,并且关联到具体的每一个构建和部署。

对代码的要求

很多项目由于非核心部分,在单元测试、代码的规范等要求不太够。当使用SonarQube等代码质量控制工具进行检查后,就会出现代码的测试覆盖率、规范等等影响开发行为的事情,这时候对于代码签入、PR合入的原则都有了新的要求。

总结

每个企业对与DevOps项目都有不同的期许,对于打造DevOps平台的企业来说,也是必须逐个击破痛点。DevOps涉及到的方面多、影响比较大,但不得不否认,其带来的影响力也是巨大的,推进DevOps的过程也是很艰辛的,但总体来说,还是很值得各个类型的企业在这个上面进行一番探索的。

原文发布时间为:2017-08-01

本文作者:justinfu

本文来自云栖社区合作伙伴Dockerone.io,了解相关信息可以关注Dockerone.io。

原文标题:实施DevOps的痛点

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
9月前
|
存储 Prometheus 监控
什么是DevOps监控以及如何在组织中实施?
什么是DevOps监控以及如何在组织中实施?
|
Devops
《云效2.0助力企业成功实施DevOps》电子版地址
云效2.0助力企业成功实施DevOps
132 0
《云效2.0助力企业成功实施DevOps》电子版地址
|
运维 安全 Devops
了解DevOps文化和一些实施方法
太多的错误,太多的时间投入生产功能,编码了数周,太多可避免的事件,今天每个人都意识到了:开发人员和运维必须相互交谈。好的。但是一旦我们说了那句话,具体我们该怎么做呢?本文的目的是告诉您更多有关DevOps 的信息,以及如何在业务中实施 DevOps。
170 0
了解DevOps文化和一些实施方法
|
运维 数据可视化 Devops
阿里巴巴DevOps实践指南(七)| 规模化实施路径
为了支持组织的全面数字化转型,DevOps 的规模化应用是必然选择。但,规模化实施绝不等于实施复杂的规模化框架。恰恰相反,在规模化的路径选择上,我们应该以业务为驱动,寻求简单、可持续的方案,而“系统”和“普惠”是 DevOps 规模化的最终目标。
阿里巴巴DevOps实践指南(七)| 规模化实施路径
|
运维 安全 前端开发
阿里巴巴DevOps实践指南(三)| 阿里巴巴 DevOps 实施的价值主张
数字化转型是对互联网公司和产业内公司的共同挑战。产业公司要应用数字化能力,提升用户体验和运作效率;互联网公司要将数字化能力与具体的产业结合,带来更广更深的创新。共同点是,它们都需要升级 IT 的交付和运行模式,都离不开 DevOps 的能力。
阿里巴巴DevOps实践指南(三)| 阿里巴巴 DevOps 实施的价值主张
|
Devops 持续交付 数据库
一步步实施 DevOps (五)
本章节重点谈自动化部署,每个人对自动化部署都有自己的理解,每个企业对自动化部署的需求也不同。 目前很多云平台开始推出一些列 DevOps 工具,体验了一下,仍然处在初级阶段,也不十分成熟。严格的说他们实现的 CD (持续部署)。
1495 0
|
监控 测试技术 持续交付
一步步实施 DevOps (三)
持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。
1995 0
|
缓存 监控 测试技术
一步步实施 DevOps (二)
2005 第一次接触自动化测试,十年已经过去了,着眼身边的企业,真正实施自动化测试的企业非常少。 大部分企业,测试仍然处在,点鼠标阶段。测试人员通常是验收交付,而没有参与整个软件开发周期。
1515 0
|
运维 Devops 测试技术
一步步实施 DevOps (一)
首先DevOps 不是一个产品,其次软件工程方法论也不准确。 在 DevOps 模式下,产品,设计,开发,测试和运维团队更紧密地结合在一起,贯穿应用程序的整个生命周期。 通过自动化工具替代手工操作,实现快速,高效,安全的测试,构建,部署项目。
2396 0

热门文章

最新文章