崔立强:Dev无感Ops,如何作到高效软件交付

在2018第二届研发效能嘉年华上,阿里巴巴云效技术专家崔力强带来了如何作到高效软件交付的精彩演讲,首先介绍了阿里巴巴在近几年在交付平台上的技术经验,以及目前云上工具平台交易的趋势,其次分享了阿里巴巴内部交付平台如何帮助咱们统一步调、并行工做,最后详细讲述了Dev无感Ops能够解决DevOps遇到的一些问题。缓存

如下为精彩视频内容整理:安全

阻碍开发者前进的问题
对于一个普通的工程师而言,第一要务是完成需求交付,咱们的最终诉求是保障编码、测试、部署的高效。但实际发现咱们在交付的过程当中并不畅,研发流程的混乱常常出现代码错合,漏和,丢代码的现象;质量化降低最主要是代码有bug,线上环境交付不稳定,会有严重问题出现,测试环境不稳定指的是在作集成测试时需有一套环境,若环境不稳定,开发测试工做会被block;团队之间沟通不顺畅,开发和开发之间,开发和测试之间,没有统一规则或流程约定;一堆开源工具攒出来的开发工具链,不但提升了学习成本,还致使过程数据没法统一存储。几年前,几乎都使用开源工具模式作持续交付,后续发现存在许多问题,因而开始作自建平台过程。架构

图片描述

上图为知名公司的一份统计数据,统计持续交付是否能帮助咱们提高研发效率,分别是瀑布模式、敏捷模式和持续交付模式,能够看出在持续交付模式下,开发在设计、测试、部署上的时间比重大大减小,在真正作开发上的时间达到了80%。也便是说咱们更专一,更高效的在进行开发,从Waterfall到Agile的模式在研发阶段效率高,主要是由于有更少的时间作设计、coding,而coding时产生核心价值的一个环节;从2-3饼图开发时间更长,是由于咱们把交付时间压缩。运维

如何作到持续交付有如下五点:
 1.需求的小批量流转,经过拆分让价值能够快速的交付,减小集成成本,通常单个需求咱们不会超过1周。
 2.自动化一切,不单是测试和部署,运维也须要自动化。
 3.内建质量,尽早的测试能够显著下降测试成本,保障交付流水线通畅,加强环境稳定性。
 4.每一个人都为交付过程负责,不仅仅编码完成交给测试就ok了,要负责代码上线,而且各项功能数据都正常才算完成。
 5.研发过程数据,用户反馈数据,对咱们有很是大的价值,能够看到目前还有哪些坑阻碍着咱们前进。微服务

团队不一样阶段面临的问题
最初咱们团队只有1-7人时,是在最敏捷的状态,相似Jeff Bezos所说的two pizza team。按照目前微服务化的规模,应该有2-3个应用。这样的团队首先应该具有基本的CI能力和质量保障,确保本身的代码在必定质量下持续迭代。至于发布、运维并不必定是立刻须要面对的问题,一些纸面上的流程和脚本,足够应付一阵子。工具

当团队成长到7-20人时,咱们应该有了一个比较大的产品,有复杂的架构和持续成长的业务。10多个应用之间互相影响,互相阻塞会致使咱们线下开发和线上SLA面临挑战。此时一个统一的研发流程能够帮助咱们规范开发行为,再加上统一的质量标准,不会让咱们集成环境和线上环境面临较大风险。随着应用增多,咱们也须要一些契约测试来确保服务兼容性。学习

当团队成长到20-100人时,已是一个至关大的规模,咱们掌握着一个企业核心的产品,业务压力和稳定性压力像两个小人不断PK。如何在质量和效率上达到最佳平衡,是咱们要考虑的核心问题。应用规模达到了几十个,已经不是简单研发自动化能解决的了,此时须要一个统一的研发平台,帮助解决从CI到CD的全链路问题,甚至包含全自动化的运维工具。产品、开发、测试、运维等角色能够在一个平台上高效协做。在2017年,已经有83%的企业开始使用云计算来解决企业基础设施问题和软件交付问题。相比2016年出现爆发式增加,不难理解利用现成的通过验证的可靠方案,能够大大缩短企业达成高效率目标的路径。帮助企业在市场竞争中得到先发优点。开发工具

统一步调、并行工做
阿里巴巴内部端到端的研发平台包括项目协做、持续交付、应用运维、测试度量如下几方面。用云效首先能够得到研发模式的标准化,咱们将其命名为AoneFlow,这是目前应用最广最适合阿里巴巴的分支管理模式,不但具备高度自由,快速迭代的特性,还能够与CD流水线结合,让整个公司具备统一的软件交付规范。测试

图片描述

上图为研发模式标准化-AoneFlow,将分支管理模式落地到产品层面,开发只要经过平台新建特性分支,checkout push代码,后续合并上线全过程所有由平台接管,不但可让开发者协做变的很是简单,高效,永不出错,并且在研发流程中能够加入自由配置的预设规则,好比何时合并代码,须要达到什么样的标准,codereview 安全是否经过,发布分支怎么处理,等等像乐高积木通常定义本身的研发流程。大数据

将繁琐的易出错的事情留给平台,实现研发模式全自动化。真正的作到了研发过程全上平台,全部数据可追踪,而且完全杜绝了漏发、错合、管理混乱的状况。让开发专心价值交付,是云效首先要解决的问题。
持续交付核心是快速交付价值,给与开发最大自由度,负责开发和运维所有过程。在监控、故障防控工具,功能开关的配合下,能够在保障用户体验和快速交付价值之间找到平衡点。

Dev无感Ops
Ops自身复杂由繁杂重复性的工做,Dev能够很轻易作Ops,是Dev感受不到Ops的存在,Ops真正出现问题时,平台会通知Dev处理问题,最后帮助团队作度量。首先介绍阿里巴巴内部是以应用为中心DevOps理念使用来应用串联整个DevOps工具链、开发定义应用,同时定义运维、开发为应用全生命周期负责、系统自动完成应用运维配置。

所以咱们一直在推进标准化,智能化,无感的Ops体系建设。目前在研发端咱们的三个实践第一个是无人值守发布,众作周知绝大部分的故障来自于变动,变动的绝大部分又来自于发布,如何保障每次发布都是对用户无影响的,如何用系统代替人来关注庞杂繁琐的运维指标。去年咱们应用运维产品推出了无人值守发布功能,它使用人工智能的方法,计算发布过程当中监控指标、日志数据、用户数据等等多重维度的变化,预判可能出现的风险,警告用户或者触发回滚,保障发布过程无人参与。最终避免了90%的发布故障。第二个是应用健康检查,一样咱们用大数据,人工智能的办法,获取多重运维数据,来帮助开发同窗发现目前应用存在的风险,进行一键修复,有点相似你们电脑里的360管家。不须要有多少经验,人人均可以成为运维专家。最后是应用自愈,咱们将运维工具和经验沉淀到了这个产品,对一些场景和问题进行自动修复和调整,达到无人参与的目的。这就是咱们无感Ops的目标。

图片描述

截图来自阿里云云效研发的某过程
上图为全云端构建,加速研发过程,云效彻底自研的全云化构建调度系统,已经能够支持全部语言构建,拥有通过阿里云安全团队承认的安全加固机制。而且根据不一样技术栈提供了自适应的构建缓存策略,避免依赖的重复下载,大大节约构建时间,提升开发过程效率。开发在使用云效只须要选择他的技术栈和构建命令,其余均可以交给平台自动化完成。

云效目前支持阿里云容器服务、edas、ecs三种部署方式,对每一个应用的每一个环境均可单独定义它的部署方式,而且实现任意切换。好比咱们生产环境使用edas保障稳定,测试环境使用ecs混合部署节省资源都是能够实现的,很是方便。

在咱们作运维栈转型升级的时候,能够经过修改部署配置进行平滑升级,若是有问题,咱们还能够实现一键回滚。云效保存着历史全部软件发布升级的基线数据随时可查,随时可rollback,这些都是阿里巴巴内部多年经验的积累实践。

在运维方面,咱们支持了经过ECS模板快速扩容,而且在云市场也上线了云效推荐镜像,直接能够得到和阿里巴巴一致的运维标准。最后是基于特性分支的测试环境管理功能,支持环境隔离能力,具备生命周期管理功能,让每一个开发均可以享受到独立的研发环境,并行工做,高效交付。以上功能均可以在阿里云云效帮助中得到详细操做指南。
原文连接

相关文章
相关标签/搜索