专栏名称: axb的自我修养
微博原创视频博主 不写代码和看动漫和瞎折腾就会死。
目录
相关文章推荐
51好读  ›  专栏  ›  axb的自我修养

凌晨了,暂时恢复技术博主。看到腾讯关于最近这次故障的公告,简单来-20240415005614

axb的自我修养  · 微博  ·  · 2024-04-15 00:56

正文

请到「今天看啥」查看全文


2024-04-15 00:56

凌晨了,暂时恢复技术博主。

看到腾讯关于最近这次故障的公告,简单来说是配置数据错误导致的服务崩溃。

系统演化的规律之一就是灵活性和可靠性之间会存在长期博弈,配置作为一个提升灵活性的重要功能,如果从稳定性的角度看,存在几个风险:

一,没有编译期检查
除了编译器相关的配置以外,几乎所有的配置都是启动时或者运行期加载,这就跳过了绝大部分编译或者链接问题(类型不兼容、引用不存在等),很多问题只能在启动时或者运行期才能显现出来。

二,缺少测试
绝大部分开发人员不会为配置写单元测试,虽然有集成测试可以验证配置的正确性(一般在金丝雀发布前的阶段),但是测试用例里也只是功能回归,而不是专门测配置相关的边界和异常情况。

三,缺少版本和流程管理
大部分公司对于代码发布都会建立严格的流程,但是对于配置发布,尤其是运行期动态加载的配置发布,却很少有同等级别的管理。
不少公司直接没有把配置纳入版本管理体系里,配置的变更后不能直接回滚,或者没有动态配置的金丝雀、蓝绿发布流程。

四,开发人员缺少配置管理的意识
绝大部分开发会把配置变更和代码变更分开,认为代码变更是“上线”,配置变更是“改配置”,因此很多配置相关的幺蛾子都游离于稳定性体系之外,出了问题之后可能绝大部分人都还不知道到底发生了什么。

就像我之前说过的观点,解决配置问题的第一步就是先明确一个问题:
配置是代码的一部分。
配置是代码的一部分。
配置是代码的一部分。






请到「今天看啥」查看全文