持续交付实战

tiechui2015 tiechui2015     2022-12-17     801

关键词:

 

公司间竞争体现在产品、技术、效率、运营等多个维度,业务发展要求技术leader从团队、技术、流程、标准多管齐下保证自己负责的维度不成为公司瓶颈。
万事万物同理,公司或团队的发展也可以理解成三个阶段:温饱、脱贫、致富。各个阶段都有相应的建设套路,并不是一步到位就合适,温饱阶段随便几个码农就把事干了,为难的问题是脱贫到致富的升级,需要一系列技术手段以保证研发效率的提升,同时各路大神也有多种忽悠的套路。需要leader为团队量身定做一套合适的升级方案并执行到位。
研发效率的核心就是交付效率(其次是质量和人效),交付过程中一个可以量化的指标就是发版频率(或叫需求吞吐效率)。
下面分别说下影响发版效率的几个核心问题,以及我们的解决方案。
1、需求池和需求生命周期的管理
2、统一组件化能力库和代码基础类库
3、统一自动化测试框架和持续交付流水线
4、。。。。。。

问题:需求是整个研发的源头,大家都知道要控制,但实际操作中需求方一向很强势(比如直接来自老板、事故等,你懂的!)而且技术是成本部门,本身就是为业务需求服务的,同时,打造一支高需求吞吐量的团队也是技术leader的价值所在,所以不要抱怨,动起来,解决问题吧。
1、务必形成迭代和交付节奏,让研发、产品和需求方形成心理预期。同时以需求池的方式对所有需求进行统一的管理(含分级)。
2、保证需求评审和周知到位,磨刀不误砍柴工。具体可以多级评审体系:成立产品委员会和技术委员会做high level评审;开发和测试架构师做实施方案评审;开发测试业务owner做具体细节评审。
3、严肃需求变更:正常的敏捷流程大家都会,而且流程是双刃剑,流程越多越说明管理的垃圾,所以把有限的精力focus在最高风险的地方。严格执行审批和周知(这涉及一个心理学因素,一件事情不可避免,就人为增加流程成本以降低发生概率)
4、需求生命周期流水线dashboard,让研发团队的交付透明化和数据化。如下图,可以清晰知道每个需求开发测试、灰度的状态,以及线上运营数据反馈,甚至实时数据大盘。

技术分享图片
 

 

问题:随着团队的扩张,让开发更专注于写业务代码。
1、建立通用分层组件库,并以code sample或IDE插件的方式提供,参考下图(盗图),

技术分享图片
 

 

2、完善基础服务(如git、maven库、安全协议、自定义tcp等等)

技术分享图片
 

 

3、通过ATC平台实现对完成评审立项的需求自动建立git分支、自动分配开发测试灰度发布机器、自动注册各种服务和监控、自动配置弹性计算和负载均衡平台等一站式保姆服务。
4、“代码只有在被正确的环境中才能正确的运行”,这句话有点拗口,但意思就是“配置就是代码,要和代码一样对待”所以统一配置中心、k8s docker的引入必不可少。devops的理念也是“everything is code”。

问题:交付要求“又快又稳”,所以必须建立一套高效的质量保证体系,做好发布前和发布中测试。同时互联网时代要“小步快跑”,所以多级灰度发布、数据反馈、问题定位系统也必不可少。
1、横向全面测试必不可少,该干的不能偷懒,如图,查漏补缺。当然,根据公司业务技术特点识别出质量高风险点是衡量测试leader的重要标准,因为资源总是有限的。

技术分享图片
 

 

 

技术分享图片
 

 

2、纵向的CI流水线能够极大提高交付效率,建立BVT和release gate的机制以降低人为参与和提高自动化率(从实践看,自动化率低才是流水线失败的最大原因)

技术分享图片
 

 

3、测试leader都有过半夜2点被老板拎起来的经历,因为测试是兜底的,不管啥问题,大家第一反应都是测试的锅,但实际上具体原因到debug才能知道,所以ATC平台提供用户排查体系和智能告警系统(因为内部图还要脱敏处理,比较麻烦,所以多处盗图,说明个大概的理念,感谢原作者)
同时建议成立由开发测试运维运营等统一组成的“稳定性小组”并设立值班长制度,“团结一切可以团结的力量,结成快速响应联盟”
其次,内测群、摇一摇上bug之类的内灰机制也要搞起来。比较狗血的收集老板们用的手机型号以防止兼容性问题也是要考虑的(老板报的bug,你不复现,那不忧伤了!)

技术分享图片
 

 

技术分享图片
 

 

4、整个研发是成本部门,测试更是重灾区,人效更是leader永远的痛,所以必须要把整个测试数据化,数据化才是一切度量和优化的前提,ATC平台从如下维度进行数据化。同时通过data insgiht和engage的分析找出流程痛点。
Bug是report的一部分,report是测试的最根本产出(测试的意义在于确保产品达到发布标准而不是发现所有bug)。Plan分解成task(matrix是艺术、是资源协调能力和思维缜密性的最佳体现,也是高级经理的唯一考核标准)。Task:可追述的执行历史记录、个人performance的体现、kpi的度量、团队能力的积累和传承。Test case是一切的基础(树形、一句话:你说不明白是你的分析表达能力、业务理解深度不到位,他看不懂是他有这些问题)。

技术分享图片
 

 

5、统一自动化测试平台:自动化程度决定交付流水线的效率,所以要开发一套高效的框架。这个东西简单的说照着网上的demo,5分钟就能把appium、selenium、接口测试跑通,但大规模应用就是一个大坑,所以ATC平台提供最具ROI的方案“以接口为龙头的灰盒测试+核心场景UI自动化”,这个说来话长,先画个业务架构图放这里,下回分解。

技术分享图片
 

 

我们开发的是一站式应用全生命周期解决方案:提供从“需求->开发->测试->发布->运维->运营”端到端的协同服务和研发工具支撑,以上简单的说了下需求、开发、测试阶段,后面下回分解。欢迎大家交流,这会是一个系列文章(但愿我能坚持),也算是对以前工作的总结。

技术分享图片

 


















jenkins部署与备份恢复实战(代码片段)

...于JenkinsJenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能!先了解下相关概念:CI:continuousintegration持续集成(code--bulid--integr... 查看详情

持续交付1-持续交付

持续交付持续集成:个体不断向主干分支快速迭代的过程,强调开发的及时性,以保障局部和整体开发进度的协调,而不是像瀑布模型那样集中提交,而存在大量冲突的情形;持续交付:将持续集成的二进制包不断进行测试,优化的过程,使... 查看详情

jenkinsui与接口自动化测试持续集成实战(代码片段)

篇幅较长,要耐心阅读哦~基础知识简要回顾持续集成、持续交付的好处与产生的必然性Jenkins服务的搭建方法Jenkins节点管理与用户权限Jenkins插件Jenkins父子多任务关联运行Jenkins报警机制目录SeleniumUI自动化测试持续集成演练接... 查看详情

持续集成 vs. 持续交付 vs. 持续部署

】持续集成vs.持续交付vs.持续部署【英文标题】:ContinuousIntegrationvs.ContinuousDeliveryvs.ContinuousDeployment【发布时间】:2015-04-2021:28:04【问题描述】:这三个术语有什么区别?我的大学提供以下定义:持续集成基本上只是意味着开发... 查看详情

持续集成,持续交付,持续部署

...文章TheProductManagers‘GuidetoContinuousDeliveryandDevOps文中对「持续集成(ContinuousIntegration)」、「持续交付(ContinuousDelivery)」和「持续部署(ContinuousDeployment)」这三个概念有很详细的解释。这里借用文中的插图,说一下我对这三个... 查看详情

持续集成+持续交付+持续部署

1continuousintegration持续集成持续集成强调对于开发人员的每个提交,立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起。  2continuousdelivery持续交付持续交付在持续集成的... 查看详情

持续交付

JezHumble编著的《持续交付(发布可靠软件的系统方法)》讲述如何实现更快、更可靠、低成本的自动化软件交付,描述了如何通过增加反馈,并改进开发人员、测试人员、运维人员和项目经理之间的协作来达到这个目标。《持续交... 查看详情

持续集成:什么是持续集成(ci)持续交付(cd)和持续部署(cd)

持续集成、持续交付和持续部署持续集成ContinuousIntegration:持续集成,简称CI,是软件开发周期的一种实践,把代码仓库(Gitlab或者Github)、构建工具(如Jenkins)和测试工具(SonarQube)集成在一起,频繁的将代码合并到主干然后... 查看详情

cicd:持续集成持续交付持续部署

...员构建出色的产品的技术路线。随着DevOps的兴起,出现了持续集成(ContinuousIntegration)、持续交付(ContinuousDelivery) 、持续部署(ContinuousDeployment) 的新方法 查看详情

持续交付

Ref:blue-greenCanaryReleaseContinuousDelivery 查看详情

docker入门实战

...「这段代码在我机器上没问题啊」这类问题。    .持续交付和部署:Docker是buildonce,runeverywhere.使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员可以通过Dockerfile来进行镜像构建,并结合持续集... 查看详情

3.21go微服务实战(微服务实战)---持续交付

第21章 持续交付21.1 持续交付简介 21.1.1 手动部署 21.1.2 持续交付的好处 21.1.3 持续交付面面观 21.1.4 持续交付的过程21.2 容器编排的选项和基础架构21.3 Terraform 21.3.1 提供者 21.3.2 Terraform配置入口点 21.3.3 VPC模块 21.3.... 查看详情

3.21go微服务实战(微服务实战)---持续交付

第21章 持续交付21.1 持续交付简介 21.1.1 手动部署 21.1.2 持续交付的好处 21.1.3 持续交付面面观 21.1.4 持续交付的过程21.2 容器编排的选项和基础架构21.3 Terraform 21.3.1 提供者 21.3.2 Terraform配置入口点 21.3.3 VPC模块 21.3.... 查看详情

Docker 和 Ansible 如何配合以实现持续交付/持续部署

】Docker和Ansible如何配合以实现持续交付/持续部署【英文标题】:HowDockerandAnsiblefittogethertoimplementContinuousDelivery/ContinuousDeployment【发布时间】:2016-09-2617:45:29【问题描述】:我是配置管理和部署工具的新手。我必须为我参与过的... 查看详情

车队持续交付构建

】车队持续交付构建【英文标题】:Fleetcontinuousdeliverybuild【发布时间】:2021-06-2518:35:49【问题描述】:在Rancher中使用管道和Jenkins来构建图像的持续交付非常适合我的用例,因为它从服务器上的源代码构建图像。但考虑到Rancher... 查看详情

linux企业运维——持续集成与持续交付(代码片段)

Linux企业运维——持续集成与持续交付文章目录Linux企业运维——持续集成与持续交付1、git工具使用1.1、git版本控制系统简介1.2、本地git仓库部署1.3、远程git仓库搭建2、搭建远程私有仓库gitlab3、jenkins持续集成3.1、jenkins简介3.2、... 查看详情

linux企业运维——持续集成与持续交付(上)(代码片段)

Linux企业运维——持续集成与持续交付(上)文章目录Linux企业运维——持续集成与持续交付(上)一、git工具使用1.1、git版本控制系统简介1.2、本地git仓库部署1.3、远程git仓库搭建二、搭建远程私有仓库gitlab三、... 查看详情

持续交付中高效率与高质量

交付流水线的工具落地开源方案:GoCD、Spinnaker环境管理–容器集群管理---------------------------------------------------------------------------------------------------------------------------------------------------------------- 查看详情