写点什么

Jira 等云产品宕机多日,这场 Atlassian 有史以来的最长停机发生了什么?

  • 2022-04-15
  • 本文字数:3306 字

    阅读完需:约 11 分钟

Jira等云产品宕机多日,这场Atlassian有史以来的最长停机发生了什么?

近几日,我们在 Reddit 和 Hacker News 上随处可见关于 Atlassian 的 Cloud 版本宕机的讨论,这导致近 400 家公司,5 万至 40 万名用户无法访问 Jira、Confluence 在内的至少 7 款产品,这场宕机事故从 4 月 4 日开始持续至今。Atlassian 估计许多受影响的客户在两周内无法访问他们的服务,目前至少有 53% 的公司已经恢复了访问权限。

发生了什么?


4 月 4 日,JIRA、Confluence、OpsGenie 和其他 Atlassian 服务在某些公司停止工作。


4 月 5 日,Atlassian 注意到该事件并开始在其状态页面上对其进行跟踪。他们今天发布了几个更新,确认他们正在修复。他们在当天结束时说“我们将在解决问题的过程中提供更多细节”。



部分客户开始抱怨本次宕机,比如:



4 月 6 日,Atlassian 每隔几个小时发布一次相同的更新,但不分享任何相关信息。更新内容如下:


“我们正在对部分实例进行验证阶段的工作。重新启用后,支持人员将通过打开的事件单更新账户。恢复客户站点仍然是我们的首要任务,我们正在与全球团队进行协调,以确保工作 24/7 持续进行,直到所有实例都恢复。”



4 月 7 日,Atlassian 通过 Twitter 账户承认了这个问题并提供了一些简单的细节。



接下来几天,Atlassian 方面关于本次宕机事件没有做太多细节说明。与此同时,这一消息已经在 Hacker News 上引起了广泛的讨论,有自称是该公司前员工的网友评论说该公司内部的工程实践低于标准。


“This does not suprise me at all. (…) at Atlassian, their incident process and monitoring is a joke. More than half of the incidents are customer detected.


“这一点都不让我吃惊。(…) 在 Atlassian,他们的事件流程和监控是个笑话。超过一半的事件是客户检测到的。


虽然 Atlassian 方面表示在和客户做沟通,但客户们似乎并不满意。Atlassian 首席技术官 Sri Viswanath 发布了一篇关于此事件的博客:


4 月 4 日,约 400 位 Atlassian Cloud 客户经历了服务产品全面宕机。我们正在努力恢复网站,目前已经为约 53% 的客户恢复了正常服务(这一比例截至 4 月 14 日,可以在 Statuspage 页面中查看最新进度)。预计在未来两周内,其余客户的服务也将逐步回归正常。


这里首先澄清一点:此次事件并非网络攻击,也不属于任何系统扩展故障。此外,大部分已经恢复的客户没有出现数据丢失,仅有少部分客户报告称事件发生前 5 分钟内的数据无法找回。


必须承认,此次事件与我们的响应时间及运营标准相违背,我谨代表 Atlassian 向您诚挚道歉。我们知道,Atlassian 产品对您的团队至关重要;而一旦服务可用性受限,您的业务也将受到影响。我们正在夜以继日工作,着力帮助客户业务尽早恢复正常运行。


什么情况?


我们在 Jira Service Management 以及 Jira Software 等产品中广泛使用到一款独立应用,名为“Insight-Asset Management”。这款应用以原生功能的形式全面集成到 Atlassian 产品之内。因此,我们需要在已经安装过这款旧版应用的客户站点上将其停用。我们的工程团队原计划使用现有脚本停用该独立应用实例,但却意外引发两个重大问题:


  • 沟通不畅。首先,请求停用的团队与执行停用的团队间未能顺畅沟通,导致前者没能提供正确的预期停用应用 ID,反而把整个云站点上所有应用程序的 ID 交给了执行团队。

  • 脚本错误。第二,我们使用的脚本既提供用于日常操作(需要保障可恢复性)的“删除标记”功能,也提供出于合规性要求而永久删除数据的“永久删除”功能。此次事件,就源自该脚本以错误的执行模式对错误的 ID 列表进行操作,最终导致约 400 名客户的站点被意外删除。


为了实现事件恢复,我们的全球工程团队专门建立起系统性流程,帮助受影响客户重回正轨。


恢复方案


Atlassian Data Management(https://www.atlassian.com/trust/security/data-management)详细描述了我们的数据管理流程。


为了保障高可用性,我们在多个 AWS 可用区(AZ)中预置并维护有一套同步备用副本。可用区具备自动故障转移功能,一般每隔 60 到 120 秒保存一次;我们会定期处置数据中心宕机及其他常见的服务中断情况,并保证不对客户造成可感知的影响。


我们还维护着多个不可变备份,用以抵御数据损坏事件、借此随时恢复至之前的特定时间点。备份数据会保留 30 天,Atlassian 还会持续测试并审计这些用于支持恢复需求的存储备份。


利用这些备份,特准会定期回滚个别客户、或者少部分意外删除了自己数据的客户。如果有必要,我们还可以立即将所有客户恢复至另一个全新环境当中。


但我们的自动化体系仍有缺失,就是无法在不影响其他客户的前提下、将大量客户自动恢复至现有(且当前正在使用的)环境当中。


在我们的云环境当中,每份数据存储都包含来自多家客户的数据。由于此次事件中被删除的数据并非独立存在,其所在数据存储中还承载着其他客户仍在使用的信息,所以我们只能从备份当中手动提取并恢复各部分。因此,各个客户站点的恢复成了漫长而复杂的过程,还要求我们在恢复期间不断进行内部验证与客户验证。具体步骤我们的初步客户站点恢复方案只能做到半自动化,其中仍涉及一系列耗时费力的复杂步骤,原因就是之前提到的需要手动验证已恢复站点中的客户数据。


现在,我们希望转向自动化程度更高的新流程,具体如下:


  • 在集中编排系统内重新启用已删除站点的元数据。

  • 恢复从备份中提取到的客户数据,包括用户、权限等。

  • 重新启用生态系统应用、计费数据以及其他与客户所生成数据没有直接关联的数据。


因为每个站点都需要进行对应的数据存储提取与恢复,所以我们不断测试站点并与各家客户密切合作,共同确保恢复结果的准确性。


目前我们正在分批恢复客户,一轮最多可涵盖 60 个租户。自始至终,整个网站恢复过程大概需要 4 到 5 天。我们的团队已经开发并开始使用新的多批次恢复功能,相信这有助于缩短我们的整体恢复周期。


第一要务:恢复客户业务


我们知道,此类事件会削弱我们在客户心中的可信度。我们未能达成自我设定的运营高标准,也没能做好全面的客户沟通工作——截至目前,我们的沟通对象仍然仅限于受到事件直接影响的客户群体。


此次事件已经得到工程团队乃至整个 Atlassian 公司的高度关注。我们将继续夜以继日工作,直至成功恢复每一位客户的网站。


下面,我们向大家汇报接下来的工作安排:


  • 恢复客户站点。我们将继续与受影响客户直接合作,帮助各位恢复站点、通过支持工单与客户支持团队一对一沟通。请您相信,我们正在尽快解决此次事件。

  • 每日更新。我们将随时通过受影响客户的工单及每日状态页面更新,向受到影响的客户发布最新恢复动态。

  • 事后审查。我们也会组织事后审查,并及时公布调查结果与后续计划。相关报告整理完成后将全面公开。


最后,感谢各位客户:谢谢您的合作,也感激您与我们共同走过的每一步。我们知道您需要为组织内的利益相关方陈述事件,也知道此次故障已经给正常业务带来重大干扰。我和我的团队将尽一切努力为每位客户尽快恢复业务,也将尽我们所能消除事件影响。


从这次中断中吸取的教训


任何工程团队都可以从这次中断学到很多东西。


事件处理:


  • 拥有灾难恢复和黑天鹅事件的运行手册。对于可能的意外事件提前计划如何回应、评估和沟通。遵循灾难恢复手册。Atlassian 有自己的 Confluence 灾难恢复手册,但可能没有完全遵循该手册。他们的操作手册指出,任何操作手册都有沟通和升级指南。

  • 直接和透明地沟通。一旦发生类似事件,一定要及时与客户沟通,缺乏沟通会导致信任缺乏,不仅在受影响的客户之间,而且在任何意识到中断的人之间。虽然 Atlassian 可能认为什么都不说是安全的,但这可能不是最好的选择。这一点可以参考 GitLab 或 Cloudflare 发生中断后的做法。

  • 说客户的语言。Atlassian 状态更新含糊不清,缺乏技术细节,这对于购买了 Atlassian 产品的 IT 主管和 CTO 可能是不够的。

  • 避免什么都不说的状态更新。事件页面上的大多数状态更新都是复制粘贴相同的内容,这样做显然是为了每隔几个小时提供一次更新……但这些不是更新,他们增加了无法控制住宕机的感觉。

  • 避免沉默。直到第 9 天,Atlassian 一直处于静默状态。不惜一切代价避免这种方法。


避免事件:


  • 为所有迁移和弃用制定回滚计划。

  • 进行迁移和弃用的试运行。

  • 不要从生产中删除数据。

  • 相反,标记要删除的数据或使用租约来避免数据丢失。

2022-04-15 16:325588

评论 1 条评论

发布
用户头像
混动工程一把
2022-04-19 10:41
回复
没有更多了
发现更多内容

三分建设,七分运营|用现代化安全运营应对数据安全风险

爱科技的水月

2022-11-24:小团在地图上放了3个定位装置,想依赖他们进行定位! 地图是一个n*n的棋盘, 有3个定位装置(x1,y1),(x2,y2),(x3,y3),每个值均在[1,n]内。 小团在(a,

福大大架构师每日一题

golang 算法 福大大

Mysql基础超详细讲解

陈老老老板

MySQL 数据库 11月月更

软件架构的定义与分类

穿过生命散发芬芳

架构 11月月更

如何使用Git进行代码托管

我是一个茶壶

git 代码托管 11月月更

Linux 文件基本属性

芯动大师

chmod 11月月更 Linux文件属主 charp chown

China SAFe Day 2022中国规模化敏捷大会圆满落幕!

爱吃鱼的小雨

敏捷 safe 规模化敏捷 SAFeDay

云数据库时代,DBA将走向何方?-v4

科技之光

聊聊Mybatis的类型转换接口TypeHandler

急需上岸的小谢

11月月更

华为云GaussDB(for Influx):让智能电网时序数据处理更高效

路过的憨憨

华为

C++--- 类型萃取 ---is_void && is_null_pointer

桑榆

C++ STL 11月月更

聊聊Mybatis的数据源之获取连接

急需上岸的小谢

11月月更

华为云区块链三大核心技术国际标准立项通过

科技怪授

广告业务存储神器:华为云GaussDB(for Redis)

秃头也爱科技

“链游版羊了个羊”Matching Game即将登陆Gate

股市老人

【Python 基础学习】-变量和常量、输入输出

度假的小鱼

11月月更 Python变量常量 Python变量

感恩每一位 RockStar!

StarRocks

数据库

成为数字游民,他们为何「All in Web3」?

One Block Community

程序员 web3 数字游民

支持向量机-非线性SVM与核函数

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

【web 开发基础】PHP 中的可变参数个数的函数 (34)

迷彩

函数 web开发基础 11月月更 可变个数参数的函数

性能测试知识科普(六):三大模型

老张

性能测试 数据模型 业务模型 流量模型

聊聊Mybatis的类型转换注册类TypeHandlerRegistry

急需上岸的小谢

11月月更

kitti数据集在3D目标检测中的入门(二)可视化详解

Studying_swz

人工智能 11月月更

一文了解 Go 的复合数据类型(数组、切片 Slice、Map)

陈明勇

Go golang go基础 11月月更

【Python 基础学习】-基础语法

度假的小鱼

11月月更 Python基础语法

Web3领域首个三消小游戏Matching Game,近30交易量破800万U

BlockChain先知

支持向量机-探索核函数在不同数据集上的表现

烧灯续昼2002

Python 机器学习 算法 sklearn 11月月更

【Python 基础学习】-运算符

度假的小鱼

11月月更 Python运算符 Python运算符优先级

JavaWeb项目部署到腾讯云教学

陈老老老板

腾讯云 javaWeb java; 11月月更

基于鸿蒙系统的commonEvent和限制与约束原子化服务代码简析

恒山其若陋兮

前端 11月月更

Jira等云产品宕机多日,这场Atlassian有史以来的最长停机发生了什么?_服务革新_赵钰莹_InfoQ精选文章