f@deepin
deepin
2024-07-25 20:04 流程比具体的编程语言更重要
Reply Like 0 View the author
流程比具体的编程语言更重要
菜就是菜别怪语言
Rust 能部分避免这次事件出现的内存溢出问题, 流程能部分避免出现问题以后不出现大规模事故。 要分开来看。
所有讨论都基于:所属公司的“无心之失”这个层面。
如果这个前提不成立,用啥语言都是一个结果或是多个结果。
网上有大量的“战前测试”之说,就是基于“有意为之”的前提。。。
这么多聪明而且伟大的程序大佬们,仅从技术层面讨论,意义不大的。。。
再严谨的技术,也无法规避“有意为之”。。。
Rust 能部分避免这次事件出现的内存溢出问题, 流程能部分避免出现问题以后不出现大规模事故。 要分开来看。
但是即使Rust,也不排除通过panic unwind来让系统关键进程退出,或者通过unsafe代码触发内核级别的野指针解引用
Rankings
Popular Events
More
但我们必须接受这样一个事实:这次代码 bug 只是特定的触发因素,就算换一个触发因素也可能会产生类似的恶果。本次全球宕机事件的根本原因,在于配置变更的发布流程。
根据 SRE 101(或 DevOps,随便你怎么叫)规定,配置变更必须分阶段进行,以缓慢和受控的方式部署,并在每个步骤进行验证。这些变更应该先在很小的范围内进行验证,然后再向全球推送,而且每次推送都应是渐进的。
考虑到 Falcon 的关键性以及 bug 可能带来的巨大影响,我很难相信 CrowdStrike 没有对部署进行任何验证。但根据 CrowdStrike 最新更新的事后分析来看,他们确实没有进行任何形式的测试或金丝雀部署(在将更改推广到整个服务集群之前,先把更改推广到一小部分用户进行测试),这实在是令人难以置信的疏忽。
所以说,CrowdStrike 的部署实践是造成此次事件的罪魁祸首——也就是说,这次宕机事件是一个流程问题,而不是代码或技术问题,改用 Rust 也无济于事。
https://mp.weixin.qq.com/s/sWxIq4OniwZLpOISIqdKIw