这才是DevOps演进及CI/CD实践的正确打开方式!

本文根据张鹄干老师在〖deeplus直播:猪八戒网DevOps演进及CI/CD最佳实践〗线上分享演讲内容整理而成 。
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
一、前言
本文旨在通过对从0到1构建DevOps和从DevOps到一站式研发平台两个部分的讲解 , 介绍猪八戒网DevOps的实践与演进 。 从2016年底发布的第一个版本到如今能够完全支撑猪八戒网500+研发人员的日常研发工作 , DevOps团队经历了不断的试错和改进总结 。 本文侧重于解决方案 , 更多细节可以关注八戒技术团队公众号获取 , 希望对即将实践DevOps和正在实践DevOps的团队有所帮助 。
二、从0到1构建DevOps
1、背景介绍
2015年 , 历经10年步步为营 , 稳定发展的猪八戒网厚积薄发 , 迎来了业务的快速增长 , 随之而来的就是公司人员的壮大 , 研发团队从几十人扩张到了几百人 , 而正是人才的引入和业务增长的迫切需求 , 使得猪八戒网开始了一场轰轰烈烈的改革运动 , 而这样的运动 , 在过去的十年里已经搞了6次 , 因为公司的取经文化 , 我们将这样的运动称之为“腾云行动” 。
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
而这次的腾云行动 , 我们主要做了两件事情:第一件事是服务拆解 , 把庞大的单体应用根据业务划分 , 模块功能划分 , 拆解成一个个独立的小应用进行部署;第二件事是服务重构 , 将之前由PHP编写的程序用Java重构了80%以上 , 同时引入以SOA为核心框架的架构体系 。
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
而这两件事情 , 将交付周期从之前的月 , 缩短至周 , 甚至为天 。 这无疑对我们的交付能力提出了严峻的考验 。
于是 , 经过充分的调研和准备 , 以及慎重的决定 , 在2016年第三季度 , 研发团队抽调了部分运维人员和开发人员组建了devops团队 , 这个团队的目标只有一个 , 那就是满足频繁的交付 , 随时随地地交付 。
而要实现这个目标 , 就必须要做到以下几点:构建标准化的研发流程 , 使整个交付过程可靠和规范 。 能一键生成可部署工程 , 一来是为了避免开发重复造轮子 , 缩短他们的开发周期 , 二来是统一技术栈 , 规范研发 , 降低维护成本 。 打造自动化的CI/CD流水线 , 替代人工部署 , 大幅度提升交付效率 。 建立线网故障快速回滚机制 , 给高速生产可能出现的差错提供应对措施 , 提升全站可用性 。
2、标准化的研发流程
我们将猪八戒网的业务拆成了一条条业务线 , 现在将这些业务线抽象成一条条产品线 , 然后产品线下面有子产品线 , 子产品线下面就是具体的产品 , 从而形成了一棵层次分明、业务清晰的产品树 。
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
接着我们引入了产品责任制的概念 , 我们可以看到 , 每一个产品都包含了一些基本信息 , 这里需要注意的是 , 每一个产品都必须有一个产品经理 , 而产品经理也是有归属部门的 , 于是我们就得到了一条责任链 , 产品-产品经理-归属部门 。
这才是DevOps演进及CI/CD实践的正确打开方式!
文章图片
然后 , 我们又引入了工程责任制概念 , 同理 , 我们每个工程也包含了一些信息 , 如源码地址、开发语言、运维配置信息 , 以及我们的工程负责人 , 每个工程负责人也有归属部门 , 这样我们也得到了一条责任链 , 工程-工程负责人-归属部门 。