ssm如何支持热部署_Pipedrive如何在每天部署50+次的情况下支持质量发布?

a465aacb6de263eb4f5d781620eaabf4.png 作者 | Valeriia Iuzhakova 策划 | 田晓旭 “我把每一天都看作是比昨天高出一个档次的机会——无论是在服务质量、交付、速度还是业务的其它任何方面。”1 介绍 — 速度 Vs. 质量

客户总是在寻找有效的解决方案,来满足他们已经确定地需求,并为他们节省资金。在企业致力于生产高效、节省成本的东西时,他们也希望自己的产品被认为是高质量的——Pipedrive 也不例外。当你开发一个产品,不仅提供一流的功能,还经得起时间的考验,然后你就拥有了一款客户满意且自己感到自豪的产品。

然而,我们不应该忽视另外一个指标的价值(它也会影响质量)——交付速度。关注交付速度是为了确保竞争优势。平均上,Pipedrive 每周向生产环境进行大约 500 次部署,拥有超过 250 名开发人员,没有专门的测试部门。

问题是,速度是以质量为代价的。此外,保持平衡也需要一些努力。我们十年来是如何保持速度和质量的呢?在深入讨论这个问题之前,我们先来讨论下我们在 Pipedrive 遵循的流程。

2 Pipedrive 的“幕后”流程

为了弥补不同团队同步工作之间的沟通差距,我们在软件开发过程中遵循 DevOps 原则。这额外促进了实现更快的交付和反馈。

为了在不妨碍团队发布流程的同时采用 DevOps 流程,我们几乎不需要专门的测试专家。在我们 以开发人员为中心的环境 中,开发人员负责测试和部署他们的变更。我们通过依赖专注于测试自动化的持续测试(Continuous Testing)来弥补差距。

我们没有提供一个安全网来捕获失败,而是帮助团队适应失败。为此,我们引入了几个 专业团队,例如 DevOps、SRE、QA 分析师、支持工程师、基础设施工程师、敏捷 / 个人教练等,他们支持所有的 开发小组:围绕特定产品领域的产品开发单元。

例如,站点可靠性工程(Site Reliability Engineering,SRE)团队专注于与产品和开发团队协作来创建可伸缩的架构,同时提高我们服务的性能、稳定性和可靠性。

既然你们对于 Pipedrive 的运作流程已经有了比较好的理解,我们将进一步讨论我们是如何保证快速交付和内在品质的。

3 我们如何保持交付速度 完全自动化的发布流程

平均,我们每周自动测试和执行多达 500 次部署(你可以在 [“Fueling the Rocket for 500 deploys per week”] 这一文章中了解更多关于我们如何实现这一点的信息)。

https://medium.com/pipedrive-engineering/fueling-the-rocket-for-500-deploys-a-week-2f31bb84d26a

功能标记 / 切换

在我们的持续交付系统,我们希望将新功能作为我们日常发布的一部分。如果功能还需要一些时间来完成,代码在这些日常发布期间被一个功能标记禁用。这使得我们可以增量地将代码推送到生产环境,每次发布都非常小且易于管理。

任务框架

我们采用了我们自己的 Pipedrive 敏捷框架,开发部门专注于产品领域,与工程小组一起协作。使用这些小组的一个好处是,他们专注于特定时间的某一特定功能,最终提供更快的结果。

4 我们如何保持软件质量

在 DevOps 中保证质量仍然是一个令人生畏的难题,你需要投入更多精力来平衡质量。

下面是一些可行的方法:

可控的发布

为了逐步推进并控制新功能的持续交付,我们使用了(上文提到的)功能标记。我们采用了分阶段的方法,这样只有一部分用户可以访问这个功能。如果我们的支持票和监控显示最初的发布是成功的,我们会逐步增加到 100% 的用户都有这个功能。通过这种可控的方法,我们确保以最小的风险向客户引入新功能。

测试自动化

我们依赖专注于测试自动化的持续测试。测试自动化使我们能够快速高效地进行测试,并且参与的员工更少。测试自动化发生在一个 CI/CD 流程中,向团队提供快速的反馈,这反回来又支持了频繁发布。

可操作的数据

我们使用与客户满意度直接相关的可靠指标。我们还收集客户反馈来了解更多关于客户体验的信息,并跟踪客户 NPS 的变化,将其作为客户满意度当前状态和潜在流失风险的一个指标。

除了测量 Pipedrive 如何被使用之外,我们还测量我们的项目运行效率、任务 / 启动板运行方式以及 bugs 的已创建 vs. 已解决的数量,等等——必要时采取行动。

1e953dd6e0c8a4aac678b7d303f65c35.pngGrafana 的 DevOps 指标仪表板

最后,我们还跟踪质量相关的指标。目前,我们主要的质量指标如下:

  • 产品稳定性——向客户表明产品整体的总体稳定性。* 这个数据受事件数和持续时间影响。

  • 严重事件——数量、持续时间和受这些事件影响的功能

  • 生产环境引入的 bugs——这些 bugs 的总数以及这些 bugs 打破他们的 SLA 的数量

  • 支持工程中的新报告案例——客户报告的关于他们所遇到的问题的案例。

重要的是,对于我们收集到的指标,趋势是可见的和可观测的——为我们指明了特定领域发展的方向,这使得数据驱动的软件质量决策成为可能。这些指标在 Tableau 收集,然后每周共享到一个专用频道。

5f27cc347d711df4cbc8701e07423a46.png在 Tableau 中我们的质量关键指标的主面板

所有这些指标都是在组织中获得认可并为质量问题带来可信度的关键部分。

利益相关者一致

我们广泛使用可操作的数据。例如,每周向利益相关者(例如工程经理)提供工程运营指标。这提高了可见性并在整个组织实现了数据驱动的质量决策。

QA 分析师

我们采用 QA 分析师的角色来支持产品组织和各种工作小组来确保应用程序在最重要的领域得到足够的测试,识别自动测试的机会,并通过在需要时组织 bug 脚本会话来支持手动测试需求,等等。他们的重点是全组织的质量相关倡议、度量可视化、分析和任务规划。

QA 大使

还有一个专门的轮换角色,把更多的注意力集中在日常开发过程中的软件质量上。这个角色专注于提高人们对质量的认识和兴趣,推动质量相关的倡议,并帮助在各个工作小组内做出更好的质量相关的决策。

对延期零容忍

QA 分析师和大使为客户辩护,帮助避免拖延质量问题。有时候,由于上市时间的压力而超出你的控制范围,但是只要有可能,他们都会鼓励团队立即修复问题,以免问题一直累积。

内部测试

对于一些重要的领域,我们的员工可能被要求使用我们制作的软件的预发布版本来发现问题并提供反馈。

“完成”的定义

在我们的发布 / 预着陆检查清单中,我们有一套定义“完成”的标准。我们创建了这种检查清单以及任务 / 项目文档,提醒我们在发布期间应该做什么,来满足一定的技术成熟度。

e9f263b844e7e135212edde9eb231b75.png预着陆 / 发布清单摘录

为了从模板中创建一个合适的检查清单,我们将 [从模板宏创建] 添加到一个创建子任务的任务页面。

倡导质量的明确政策和协议

为了达到和维持所需的流程和软件质量,需要遵循特定的政策和指南。

这种协议的一个例子是,生产缺陷管理流程。它的目的是识别影响生产环境的 bugs 并对其进行优先级排序,使它们与 ETA 保持一致,以确保这些 bugs 被及时处理,从而最小化对业务的影响。

重要的是要记住,即使是不严重的问题也会对客户的质量感知产生复杂的负面影响并降低产品的可用性。

5 结论

那么怎样才能在速度和质量之间取得平衡呢?没有简单的答案或神奇的方案,但你可以从我们正在努力创建的东西和我们尚未完善的东西中获得一些灵感:

在生产中测试

在生产中测试是实现速度 / 质量平衡的方法之一。通过提前发布软件并采用允许用户测试的实践,一旦软件投入运行,开发部门就可以缓解风险。决策可以由实际用户与生产软件的交互数据来驱动。

DevOps

另一个直接的方案是采用 DevOps 和 SRE,而且通过减少上市时间并带来更多透明度和稳定性,它帮助我们以更好的方式与公司合作。

质量文化

质量文化非常重要!根据《哈佛商业评论》,拥有强烈的质量文化的公司所遇到的错误比没有质量文化的公司少一半。这会转变成真正的商业价值:提高你的质量文化能节省一大笔钱,并带来更高的用户满意度。

对问题的信心

综上所述,一个人需要良好的常识。如果你已经验证了问题并证明它对客户非常重要,那么你就不应该走任何捷径——而是应该尽可能以最佳质量实现解决方案。

6 下一步行动

不仅如此,我们还将引入新的 mini-live 或基于区域的 canary 部署,这些将被用来在新的部署被传播到更广的客户群之前对这些部署进行验证。我们还开始着手创建质量和测试相关的培训。接下来还有很多事情,但这会在以后的另一篇文章中讨论。

作者介绍

Valeriia Iuzhakova 是 Pipedrive 的一名首席 QA 分析师。

原文链接

https://medium.com/pipedrive-engineering/how-pipedrive-supports-quality-releases-while-deploying-50-times-per-day-da975e91d846

点个在看少个 bug ?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490047.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

armv7 cortex a系列编程手册_STM32、Cortex-M3和ARMv8-M之间的关联

大家都应该知道STM32、Cortex-M3、ARMv8-M与ARM有关,但可能分不清他们是什么关系,或者具体是什么东西。嵌入式开发直播课 - STM32 USART串口的应用 - 创客学院直播室​www.makeru.com.cn一、总述ARMv8-M:是一款ARM架构。ARM架构分为&#xff…

IDEA如何显示类的所有方法

ALT7(数字7) 例如在Thread类下(Thread.java)按ALT7,就能左下角显示这个类的所有方法,点击相应方法会跳到那个方法中

5G只是小儿科?任正非对话人工智能专家2万字实录

9月26日,深圳,华为公司创始人任正非对话两位人工智能专家杰里卡普兰和彼得柯克伦。来源:澎湃新闻9月26日下午,深圳,华为公司创始人任正非对话两位人工智能专家杰里卡普兰和彼得柯克伦,三人围绕“创新”&…

IDEA自动生成try catch异常处理语句

在写Java程序时,有些方法需要我们对其进行异常处理,例如线程的join方法,IDEA可以自动帮我们生成try catch语句 现在写一个join方法,发现下划线报错,因为需要对其异常处理 我们将鼠标放到报错处,按下altent…

c++ map 获取key列表_好未来Golang源码系列一:Map实现原理分析

分享老师:学而思网校 郭雨田一、map的结构与设计原理golang中map是一个kv对集合。底层使用hash table,用链表来解决冲突 ,出现冲突时,不是每一个key都申请一个结构通过链表串起来,而是以bmap为最小粒度挂载&#xff0c…

Gartner 2019 年 BI 炒作周期五大趋势:增强分析、数字文化、关系分析、决策智能、实施和扩展...

来源:云头条Gartner研究副总裁Jim Hare声称:“由于智能/情报是所有数字化业务的核心,IT和业务负责人继续将分析和商业智能(BI)视为创新投资方面的重中之重。该炒作周期帮助数据和分析负责人过渡到增强分析,…

IDEA实现类自动输出需要实现的方法

在IDEA中写实现类时可以自动输出需要实现的方法,具体见下 首先定义一个实现Runnable接口的类 发现报错了,接着把鼠标放置报错的地方,按下altenter,选择下面红框 此时就会出现需要我们实现的接口中方法,点击ok

字典的数据怎么转变为excel_Excel小技巧——快速为多行数据排列名次

大家好,上一期我们介绍了合并单元格的自动排序小技巧,今天,再为大家准备一个排名表,下面我们就利用这个表格,来了解一下快速排名的方法吧。首先,我们在第一行排名单元格中输入今天要学习的公式前半部分。公…

GIt 从入门到放弃

一、注册github账号 github网址https://github.com/ 下一步 然后,你的邮箱会收到一封邮件,进行邮箱验证就行了 二、创建github仓库 登录你的github,在首页的右方可以看到下图所示(我已经创建过项目了,没有创建过项目的…

麻省理工牛人解说数学体系

来源:P.Linux‘s blog与 ima一、为什么要深入数学的世界作为计算机的学生,我没有任何企图要成为一个数学家。我学习数学的目的,是要想爬上巨人的肩膀,希望站在更高的高度,能把我自己研究的东西看得更深广一些。说起来&…

IDEA提示方法参数的快捷键

在写Java方法的时候有时想让软件提示一下方法的参数,解决方法是将鼠标放置到方法括号里,按下ctrlp,即可显示方法参数

docker常用命令_docker常用命令整理

docker常用命令整理代码狂魔 • 5 天前 • 技术积累 • 14 • 0前面已经把docker是什么和 docker怎么安装已经写了,现在我将常用命令做一个整理,方便日后查阅常用命令docker pull ${CONTAINER NAME} #拉取镜像 docker images …

素数问题是物质的几何学问题

来源:知乎大家知道,黎曼猜想、孪生素数猜想、哥德巴赫猜想中皆涉及素数(质数)。关于黎曼猜想,黄逸文说“这是1900年希尔伯特提出的23个唯一未被解决的问题,也是数学中最重大的未解决的难题。1859年&#xf…

shell sort 最后一列排序_没想到 Shell 命令竟然还能这么玩?| Shell 玩转大数据分析...

关于作者:程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader。正文开始本文是一个命令行工具的综合应用,将用一个具体的例子来阐述如何用 Shell 来进行高效地数据统计和分析。最近北京又开…

对于不是特别擅长Photoshop的人来说,熟悉和运用Photoshop工具提供的各类便捷的快捷键,是有帮助的。...

应用程序菜单快捷键之文件 应用程序菜单快捷键之编辑 应用程序菜单快捷键之图像图层 应用程序菜单快捷键 应用程序菜单快捷键之视图 Ctrl H 取消参考线调板菜单快捷键一览。 工具板快捷键一览 其他类别的快捷键。 按Shift时可画出正圆和方形的选区、图形、直线。 按Shift时可…

懂数学人的都认同:数学的本质[关联]万物(二)

来源:数学职业家结构、关系与信息关系是与结构绑定的不可分割的,是对结构从某个视角观察的结果,并且这个角度看到的是可以被观察者所理解和可感知的。这里的可感知,即是可以被人体的感觉系统(如视觉、听觉、触觉等&…

计算虚拟化涉及的关键技术有哪几项_都开始商用了 5G的这些关键技术还不知道?...

[PConline 杂谈]作为新一代移动通信技术,5G为我们带来了更高的数据速率与更低的延迟,甚至比4G快了100倍。在满足移动超高清视频、AR/VR等大流量应用的同时,更将开启万物互联、深度融合的发展新阶段。如果说3G提升了速度,4G改变了生…

沃丰报告:物联网的未来

物联网的未来激动人心,但物联网并不只为那些极具创新精神的创业企业而生。大多数物联网项目都不是为了创造头条新闻,而是为了做出切实的成果。我相信我们已经越过了临界点,物联网已经成为主流。来源 | 沃达丰物联网近日,沃达丰(vo…

推销员(codevs 5126)

题目描述 Description阿明是一名推销员,他奉命到螺丝街推销他们公司的产品。螺丝街是一条死胡同,出口与入口是同一个,街道的一侧是围墙,另一侧是住户。螺丝街一共有N家住户,第i家住户到入口的距离为Si米。由于同一栋房…

python管理系统web版_Python学生管理系统(web网页版)-Go语言中文社区

前言:本项目是使用Python的Django的web框架搭建的,是一个完整的学生管理系统,功能包括基本的增删改查 项目演示图: 首页展示数据的页面(index.html)添加学生的页面(add.html)搜索学生…