写点什么

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:003604

评论

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

小菜鸟河北联通上岗培训随笔二

乌龟哥哥

8月月更

Java性能优化的七个方向

小柴说Java

编程 JVM Java性能调优 Java性能优化

要相信自己可以解决问题

FunTester

Java基础知识(一些需要注意的点)

自然

基础 8月月更

不是吧,还有人不知道三目运算符的BUG

自然

基础 8月日更 8月月更

STM32入门开发:编写XPT2046电阻触摸屏驱动(模拟SPI)

DS小龙哥

8月月更

Redis分布式锁-觉悟吧,红锁!

知识浅谈

redis分布式锁 8月月更

都说MySQL单表不要超过2000W行,这是真的吗?

Java全栈架构师

Java MySQL 数据库 程序员 面试

Web3 结算协议 Zebec Protocol 的商业模式与发展前景一览

BlockChain先知

加码企业服务,阿里云发布计算巢加速器

阿里云弹性计算

PaaS 企业服务 计算巢 ISV

开源一夏 | 使用 Three.js 实现"雪糕"地球,让地球也凉爽一夏

战场小包

JavaScript 开源 前端 3D ThreeJS

【云原生】SpringCloud Alibaba 之 Nacos注册中心实战

Bug终结者

Java 分布式 SpringCloud 8月月更

a豆14 Pro高性能高颜笔记本,新潮配色助力打造a豆AIoT智能生态圈

科技热闻

计算机网络(一、概述)

计算机网络 8月月更

Web3 结算协议 Zebec Protocol 的商业模式与发展前景一览

股市老人

Java基础之Java枚举

自然

Java core 8月月更

docker下,极速搭建spark集群(含hdfs集群)

程序员欣宸

spark 8月月更

再见MybatisPlus,阿里推出新ORM框架!

TimeFriends

8月月更

CAT认证敏捷团队教练工作坊 (Coaching Agile Teams) | 9月24日开课

ShineScrum

敏捷教练 专业教练 团队教练 GROW Model

Go-Excelize API源码阅读(十二)——SetSheetVisible(sheet string, visible bool)

Regan Yue

Go 开源 源码刨析 8月日更 8月月更

每日一R「08」类型系统(二)

Samson

8月月更 ​Rust

RocketMQ高可用设计之消息发送重试

急需上岸的小谢

8月月更

App切换到后台后如何保持持续定位?

HarmonyOS SDK

元宇宙系统源码——测试方案

开源直播系统源码

软件测试 软件开发 元宇宙

[极致用户体验] 用户体验好的 Button,在手机上不应该有 Hover 态

HullQin

CSS JavaScript html 前端 8月月更

面试突击75:SpringBoot 有几种读取配置文件的方法?

王磊

Java 常见面试题

华硕a豆召开智能生态发布会,软硬兼施解锁智能新生活

科技热闻

春意盎然,适合“二叉树剪枝”

掘金安东尼

算法 前端 8月月更

Web3 结算协议 Zebec Protocol 的商业模式与发展前景一览

鳄鱼视界

干货|语义网、Web3.0、Web3、元宇宙这些概念还傻傻分不清楚?(下)

Orillusion

WebGL 元宇宙 Metaverse webgpu #开源

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