为团队构建DevOps体系

DevOps是什么

DevOps的定义众说纷纭,我的的理解是:git

  • 从狭义上来讲是一套实践、方法、工具,是提升交付应用程序和服务能力的一组最佳实践,为了在保证高质量的前提下缩短系统变动从提交到部署至生产环境的时间。
  • 从广义上来讲是一个运动,一种文化,强调团队紧密合做,打破角色之间的隔阂从而达到提升最终交付价值。

为何要构建DevOps体系

因此,咱们须要:数据库

  • 将应用部署的流程自动化起来,只须要按一个按钮就能完成在任意环境上的部署
  • 将开发、测试、部署环境统一块儿来并管理起来
  • 缩短从代码提交到部署到生产环境之间的时间
  • 将全部过程可视化起来,让全部人知道当前的进展
  • 将异常及时反馈给负责人并有回滚方式

DevOps体系的思路与实践

思路:以提高开发部署效率这个结果为导向,以标准化、自动化、可视化为思想,以持续集成、持续交付、敏捷为核心来构建一套DevOps体系。架构

首先咱们能够用上图中的内容与本身当前的工做环境进行对比,还差哪些部分,咱们就补充哪些,依靠木桶效应,优先实现还未存在的部分,优先将体系的基础构建完成。运维

固然图中的实践也不完整,能够参考下面的一些实践来开始。ide

自动化流水线(持续集成)

优先级:高工具

经过使用自动化流水线构建工具将代码的构建、测试、部署的流程规范起来,将执行的操做固定下来,去除人为因素干扰构建流程,从代码的提交到部署造成一条生产线。测试

前置条件:优化

  • 分支策略。流水线的构建方式是经过分支策略来定的,若是有master、dev、release分支,则可能须要构建出三套流水线来分别管理这三个分支
  • 提交策略。不管是否使用持续集成的方式提交,提交的信息必须统一,提交者的姓名、提交所属的功能、提交的内容这三块内容必需要有
  • 部署步骤。肯定须要部署到哪些环境中,有几个构建的步骤,如test、build、deployDev、deployTest、deployProd
  • 多项目的结构。一个项目须要是一个能让git单独追踪的项目,才能避免在自动化中影响其余项目的构建

准备好前置条件以后就能够开始构建第一条流水线了,具体的构建工具与构建步骤因团队而异,具体构建的过程就是将全部当前的部署流程整理进构建流水线中,并使用相似Jenkinsfile这样的Pipieline as code的形式将流水线当作整个项目的一部分管理起来,所以这是工做量最大的部分。构建完成后还须要完成流水线可视化,在团队工做区域的显眼位置放置一台显示器,将当前全部流水线的工做状态显示在上面。ui

各类环境的管理

优先级:高编码

  • 统一开发、测试、部署的环境。生产环境是什么样子,测试环境与开发环境就尽可能保持一致。应用的架构方式、应用运行所在的系统版本、应用运行所在的机器配置都应当保持一致,使用Docker能够保证后二者没有问题,但架构方式在开发环境难以作到,优先级其实不高,能够暂时放下。
  • 使用Ansible将构建虚拟机上各类工具、环境的过程代码化从而实现Infrastructure as code,将部署的架构也体如今其中从而实现Platform as code,便于扩展机器、问题追溯、架构优化。
  • 依赖包的管理。Java很是方便,能够本身部署一个配置管理源,全部包都从这个源里下载,但Go不太方便,可使用vender将项目依赖的特定版本的代码管理起来,可是会碰到被墙致使没法下载的问题,目前的方式是将项目的依赖提取到一个公共代码库中,而后将公共代码库放到GOPATH中,若是有一些依赖不适合放入公共代码库,则提交到项目根目录下的vendor中。

容器化编排(持续部署)

优先级:高

将应用使用Docker容器化,同时结合容器注册表如Nexus、AWS ECR,容器编排工具如Rancher、K8S,则能够实现应用的自动部署、动态伸缩,解放须要无数次的SCP命令。

团队协做的纪律

优先级:中

  • 提交规范。根据分支策略拟定提交规范,主要是小步屡次提交、提交信息要全面。
  • 快速反馈。在任何工做的过程当中,若是以为哪里不过高效或者有问题,须要及时提出反馈共同优化现状,被动收集反馈。
  • 长期反馈。按期召集团队成员举办retro,主动收集改进意见。
  • 高优先级修复问题。一旦流水线或监控或日志有异常,须要及时通知相关人员修复。

监控日志规范化(持续运维)

优先级:中

监控:对于应用、数据库、虚拟机都应当有一套监控方式,一旦某个运行节点出现异常则须要经过一些方式通知相关人员

日志:将全部应用的日志在容器内是收集,并上传到一个日志中心,并提供方便的查询工具便于所有人员查询

构建过程敏捷化(项目管理)

优先级:中(长期、穿插)

前置条件:

  • 创建需求管理、文档中心,推荐TAPD。

将构建的过程使用看板、迭代的方式管理起来,将实施的计划与进展展现在看板上,当作开发项目同样构建DevOps体系

在构建的过程当中,开发、部署步骤、系统架构的文档化也是必不可少的一环,让往后其余同事可以接收DevOps体系和已有的系统架构。文档化是穿插在各个地方的,每当完成一个任务就应当抽点时间补充一下文档。

部署结果可视化

优先级:低

  • 流水线可视化。流水线构建完成后,将全部流水线的状态用可视化工具与机器在团队内部展示出来。
  • 运维面板可视化。在测试、生产环境部署完成且监控系统到位以后,将运维面板经过可视化工具展示出来,能够实时观察当前系统运行状态。
  • DevOps构建过程可视化。使用看板的方式将DevOps体系构建过程管理起来,先维护好TAPD电子看板,须要的话再加上物理看板。看板的资料能够查看这里

落地计划

以上的实践能够说是须要落地的具体事情,把这些事情落地成功也须要一些方法。

遵循渐进式的实施顺序:

  1. 以任意一个项目为例,将整个DevOps体系实践根据优先级落实其中,当作一个示例规范化整个体系
  2. 将已有的混乱开发部署方式以第一个项目为例逐步迁移到咱们搭建的架构中来
  3. 基本完成以后回过头来从新审视一遍已有的体系,继续改进

在实施的过程当中的建议:

  1. 使用看板与迭代开发的方式将咱们的实施任务分配清楚,计划制定成熟
  2. 在过程当中将DevOps体系当前构建进展同步给全部人,将全部人的意识规范起来
  3. 让你的老大与团队其余成员意识到构建DevOps体系的必要性,为长期发展作好铺垫
  4. 整个过程当中最大的难点多是已有的体系也比较庞大与混乱致使迁移难度大从而须要大量时间,因此必要的时候向你的老大申请更多时间与人员来

参考

myslide.cn/slides/1218
blog.jsjs.org/?p=40

91Code-就要编码,关注公众号获取更多内容!

在这里插入图片描述
相关文章
相关标签/搜索