华为周宇:基于Pipeline的DevOps核心实践

时间即效率,如今软件及互联网产品的开发迭代流程及开发时间在不断地优化,企业掌握研发环节上的时间效率主动权,就占据了市场的先机。中小企业常常面临产品发布、交付等生产节奏难以把控的问题,如何解决?除了反省和梳理自身工作流程,也需借助外部开发工具来优化。

以下来自企业开发者常遇到的开发经历:

做为一名程序员,我们会时常听到“别的公司”每周发布,甚至一天多次发布。交付速度快、上线频率高,质量还特好。

可是轮到自己,现实却是残酷的。实施敏捷前,半年升次级一次还好点,现在敏捷了,每周五晚上12点开始升级,2点全员开测,4点前修复问题,修复不了必须于5点前回滚,周末补觉或者继续改问题。要是中间再来个紧急bug修复,上线一次补丁包就更惨了。每周如此,整个团队累惨了,兄弟们女朋友都要跑光,坑爹的破敏捷、DevOps。

自己搭一条流水线,jira、Trello、wiki、gitlab、sonar、findbugs、maven、Jenkins、nexus、jfrog、ansible、puppet…,各种开源工具扒拉对比选型,花费大量时间人力好不容易搭起来,刚开始还可以满足,但随着团队规模和产品规模的增长,经常出问题导致工作阻塞,整个开发团队炸锅,搭好的流水线不敢轻易升级或变更。内部需求响应越来越不及时、各方指责接踵而来,真是鸭梨山大。关键自己还不在业务主航道上,年底考评发现个人绩效伤不起啊伤不起……

更恐怖的是,这些故事每天都在发生。

毕竟,我们手工拷包部署,几次下来总会出现拷错包、部错机器的情况。手工测试,总有遗漏一些核心基线用例的时候。更不要说性能、可靠性测试每次手工执行的枯燥和易错。而且所有活动,无论流程设计如何完美,工具如何完备,如果不能够将人工操作(除了必要的Review和发布审核)降到最低,各个工具编排、触发、调度运转,无论是效率还是质量均会受到较大影响。

一个团队的自动化程度越低,如果采用DevOps开发模式,交付速度越快,则团队出错的几率越大、疲惫度越高、出错几率也越大。

以上,便是企业开发过程常常面临的窘境。

面对这些扑面而来的问题,光有好的DevOps理念、方法论、技术、流程是绝对不行的,还得要有好的工具——即持续交付流水线,来承载、固化、可视化这些方法和理念。就像福特、丰田的伟大离不开创建出当时世界上最好的生产流水线一样,软件开发当然也离不开良好的持续交付流水线。

作为DevOps的核心工程实践,持续交付驱动着研发、测试与运维的正常流转,其中Pipeline流水线又是核心中的核心:

理念:DevOps实现持续交付的理念和方法论
流程:价值快速流动的持续交付流程
技术:快速持续交付所需的基本技术准备,如微服务化架构解耦、特性分支、提交代码自动触发、安全扫描、分钟级构建、自动部署、自动化测试、质量门禁、灰度发布等
实践:处于不同行业、成熟度阶段的企业,选择的不同方法和技术实践的组合
工具:Pipeline流水线拉通调度的持续交付工具链
组织与文化:实施DevOps需要的团队文化理念转变,以及组织变革

如上图所示,所有的理念、方法论、流程、技术、实践、文化,最终都需要通过工具平台进行固化、可视化下来,使得价值流可见、交付可复制(重复执行),确保交付结果可预测,这样才能够确保在DevOps实践下,更快速迭代的同时,保持更高质量。

程序员朋友们,你的日常交付中,是否也正在面临这些困扰:通宵熬夜加班升级赚的熊猫眼、交付速度越快越手忙脚乱越出错、自己搭建的交付流水线久久不敢升级?

如果有,请来参加2018华为全联接大会,听一堂精彩的《基于Pipeline的DevOps核心实践》演讲,与华为云DevCloud项目创始人及首席体验官交流如何通过Pipeline实践,更好的去解决这些问题。