欢迎光临散文网 会员登陆 & 注册

微软道歉!一条代码引发惨案:一个拼写错误,17个生产数据库被删

2023-06-05 18:14 作者:互联网的一些事  | 我要投稿

微软 Azure DevOps 是一套应用程序生命周期服务,提供了从代码管理到持续集成、持续交付、测试、监控等一系列功能。然而,就在 5 月 24 日,这个服务在巴西南部区域发生了长达 10 小时的宕机,影响了数千名客户。事后调查发现,竟然是因为一个简单的拼写错误,导致了 17 个生产数据库被误删。

这个拼写错误出现在一个用于清理数据库快照的后台作业中。原本,这个作业是为了帮助 Azure DevOps 工程师偶尔保存生产数据库的快照,以便调查问题或测试性能改进。但是,在最近的一次代码升级中,工程师用一个新的 NuGet 包替换了一个已经弃用的包,导致了一个巨大的变更请求。在这个请求中,有一行代码将删除 Azure SQL 数据库的调用换成了删除托管数据库的 Azure SQL Server 的调用。也就是说,本来只想删除一些旧的快照数据库,结果却把整个服务器都删掉了。

这个错误并没有被及时发现,因为它只在特定条件下才会触发,而 Azure DevOps 的测试并没有覆盖这些极端情况。当这个错误代码被部署到巴西南部区域的客户环境时,就引发了灾难性的后果。17 个生产数据库被删除后,整个区域的服务无法处理。

虽然数据没有丢失,但恢复过程却非常复杂和耗时。首先,由于客户无法自行恢复 Azure SQL Server,必须由 Azure SQL 团队参与恢复工作。其次,由于数据库有不同的备份配置,导致恢复数据时出现了不匹配的问题。最后,在数据库开始恢复上线之后,还出现了一系列网络服务器和负载均衡器的问题,导致服务无法正常访问。

微软已经对此次事件进行了深入分析,并采取了各种措施来防止类似问题再次发生。包括修复快照删除作业中的 bug,增加更多的测试覆盖范围,为关键资源添加锁定机制,确保所有数据库备份使用相同的设置等等。微软也向所有受此次中断影响的客户表示了歉意,并承诺会持续改进服务质量和可靠性。

这起事件给我们提供了一个教训:即使是一个看似微不足道的拼写错误,也可能造成严重的后果。因此,在编写、审查和部署代码时,我们要格外小心和仔细,并且要有充分的测试和备份机制来应对可能出现的问题。


微软道歉!一条代码引发惨案:一个拼写错误,17个生产数据库被删的评论 (共 条)

分享到微博请遵守国家法律