写点什么

Slack 借助 Z 分数监控克服部署恐惧

作者:Matt Saunders

  • 2024-04-23
    北京
  • 本文字数:1168 字

    阅读完需:约 4 分钟

大小:565.88K时长:03:13
Slack借助Z分数监控克服部署恐惧

团队沟通平台Slack的一位工程师写了一篇文章,讲述了他们如何克服部署恐惧,并成功地实现了一个机器人来监控部署过程。

 

Slack 高级软件工程师Sean McIlroy记录了他们如何从由一群开发人员轮流监控其 Webapp 部署,转变为使用机器人每天部署 150 个变更。McIlroy 在一篇博文中详细解释了赋予 ReleaseBot 关键角色的原因和逻辑。他描述了一个看似可怕的责任委派如何最终归结为一个检测图表峰值的数学问题。

 

工程师在将变更部署到像 Slack 这样的大型平台时会面临一系列独特的挑战,因为大多数服务都是在一个名为“The Webapp”的单体应用上运行,每周变更达数百次。Slack 采用了持续交付的部署理念,旨在根据反馈快速迭代,并将开发人员的工作快速交付给客户。然而,管理一个经常使用的变更流(平均每天 150 次左右)需要谨慎权衡,既要避免使系统不堪重负,又要将错误风险降至最低。

 

传统上,Slack 依赖于部署指挥官(DC),即负责在轮班期间执行部署步骤的人。但是,DC 的轮转性质和系统复杂性的日益增加对于信心和专门知识的构建构成了挑战。因此,发布工程团队试图通过为 DC 提供更清晰的决策指导来解决这个问题。

 

这就是开发 ReleaseBot 的初衷。ReleaseBot 是一个具备异常检测和监控功能的自动部署系统。从手动部署到自动部署的过渡是一个渐进的过程。最开始的时候,ReleaseBot 与 DC 一起操作,并逐步证明了它的可靠性和效率。它可以比人更快地捕获问题,且提供了更高的一致性。虽然起初,人们对自动化部署可能带来的风险感到担忧,但 ReleaseBot 的性能超出了预期,使人们对其自主处理部署的能力充满了信心。

 

ReleaseBot 的有效性在于它的异常检测机制,特别是使用了 z 分数(z-score)。Z分数量化了数据点与平均值的偏差,能够识别指示潜在问题的统计异常值。如果应用程序在部署后的表现与之前的表现不同,就会触发问题的“高置信度”信号,并通知工程师可能存在需要干预的问题。实际上,这是一种检测图形峰值的数学技术。高置信度信号由与历史数据的显著偏差触发,可立即引起注意,而低置信度信号通常由静态阈值控制,可作为补充预警。



Slack 发送给团队的通知其严重程度根据高置信度信号的频率和范围来确定,并用白、蓝、红构成的三色标尺来表示信号的紧急程度。Slack 还使用静态阈值通知作为低置信度预警,但也会把它们作为 ReleaseBot 的输入来计算动态阈值。动态阈值考虑了部署时组件的正常负载和性能。ReleaseBot 会使用历史数据来区分部署期间的异常峰值和预期波动。这种方法使得 Slack 可以过滤掉常规变化,同时标记出需要干预的真正异常。

 

最后,McIlroy 着重说明了部署监控与普通监控的不同之处。Slack 利用这些知识构建了一个工具,使部署变得不再那么可怕。与让开发人员盯着仪表板相比,使用这个工具来管理部署会让他们更有信心。点击这里阅读全文。

 

原文链接:

https://www.infoq.com/news/2024/03/slack-z-score-monitoring/

2024-04-23 08:003572

评论

发布
暂无评论
发现更多内容

Redisson 分布式锁源码 06:公平锁排队加锁

程序员小航

Java redis 分布式锁 redisson

我给我讲GIT,并成功把我得罪了

加百利

git 7月日更

网安行业这几个熟悉又陌生的名词,啥帽子都清楚啦?

郑州埃文科技

什么?C语言也能try...catch!

实力程序员

腾讯二面:Linux操作系统里一个进程最多可以创建多少个线程?

白亦杨

统一缓存帝国 - 实战 Spring Cache

悟空聊架构

缓存 passjava 悟空聊架构 7月日更 Spring Cache

DataWorks赋能企业一站式数据开发治理能力

阿里云大数据AI技术

底层技术支撑智慧出行,汽车智能化发展下区块链大放异彩

旺链科技

区块链产业

DolphinDB插件开发深度解析

DolphinDB

数据库 大数据 时序数据库 插件开发 DolphinDB

研发管理和项目管理有哪些痛点?

万事ONES

研发管理 ONES 项目管理工具

union 分页/group/join 复杂查询(.net core/framework)

Spook

sql ORM

打造中国数字军人 数军科技携黑科技亮相军博会

科技热闻

并发王者课-铂金9:互通有无-Exchanger如何完成线程间的数据交换

MetaThoughts

Java 多线程 并发

萌宠大陆APP开发|萌宠大陆系统软件开发

小马哥的Java项目训练营-毕业总结

姑射仙人

拖延背后的故事

卢卡多多

拖延症 7月日更

百度交易中台之商品推广流程构建以及实现

百度Geek说

中台 软件架构 电商 交易

4轮技术面+1轮HR面,成功拿到腾讯40k*16的Offer ,详解面试流程和真题解析

Java 程序员 架构 面试

多媒体技术(一)之图形图像

轻口味

android 音视频 计算机图形学 图形图像处理

替换 Spring Cloud,使用基于 Cloud Native 的服务治理

火山引擎开发者社区

云原生 后端 Service Mesh 服务网格

我还是没有忍住,于是乎我开通了lua语言学习专栏!

李阿柯

lua 专栏

互联网公司的「敏捷开发」流程是怎么样的?每个职位的角色和分工是什么?

万事ONES

如何利用极狐GitLab CI提高生产力?

极狐GitLab

ci

我删库跑路失败了

程序员鱼皮

Java c++ Python Linux 服务器

Python 绑定:从 Python 调用 C 或 C++

华为云开发者联盟

c c++ Python 函数 Python 绑定

银行业智能运维的探索与实践

云智慧AIOps社区

银行数字化转型 智能运维

Go 学习笔记之 数组

架构精进之路

Go 语言 7月日更

RTC为何这么火?

anyRTC开发者

音视频 WebRTC RTC 实时通讯

华为云薛浩:媒体业务进入全面云化时代,云原生成为必然选择

华为云开发者联盟

云原生 媒体 音视频 华为云

在数据库中如何查询表的创建时间?

华为云开发者联盟

数据库 日志 视图 GaussDB(DWS) 查找对象

使用tar 命令进行文件的归档和压缩

学神来啦

云计算 Linux 运维 linux运维

Slack借助Z分数监控克服部署恐惧_后端_InfoQ精选文章