我写文章主要写【道、法、术、器】四种内容,平时法、术、器写的多一些。本篇是道篇,有的朋友可能会觉得没啥干货,提前说明下,节约一些朋友的时间。有兴趣的朋友听我慢慢道来~~
说明:本文中的生产,代表软件部署的正式环境,又称线上环境或生产环境。
生产变更在确保稳定性方面的演进
8年之前,个人认为哈:中国的软件和互联网公司对生产变更还没有很高的要求。大家更关心功能是否实现、技术栈如何、架构怎样。功能上线了,也没有什么多维度的监控报警。靠的是最终用户打电话过来报bug。
其实,那时候外企是很注重测试的,测试也细分为冒烟测试、回归测试、黑盒测试、白盒测试、单元测试、集成测试、系统测试和验收测试、随机测试、探索性测试和安全测试。中国也在不断的学习借鉴。
后来,特别是随着支付领域的崛起,大家对生产更加敬畏。建立起了多套发布环境:开发环境、测试环境、预发布环境、生产环境。为了防止多个版本功能不同影响测试效果,测试环境会用【泳道】技术,保证多个环境之间互不影响。一个功能经过多个环境的重重考验才能最终上线。
一直在完善的自动化测试也初见成效:sonar静态代码检查、jar包漏洞扫描、安全风险扫描、单元测试扫描……再加上变更流程的规范:低峰期上线、封禁期等。
生产变更的薄弱环节
这些还不够。个人观点,从变更的稳定性上来说,有两项极为薄弱:一项是生产变更中人的因素把控,另外一项是基础数据变更的管控。
对于第一项,有的公司做到了,但是成本极高,不是一般公司可以承受的:所有的生产变更要经过部门专家团评审、公司专家团评审、超级专家评审。讲述变更的人并不是一线开发,而是团队的专家或者负责人。他们必须比一线开发更了解变更的内容、影响、实现、变更过程、应急预案,并且思路要清晰无破绽,说服所有人,才能证明上线是可以把影响降到最低的。
这对我的触动很大。之前我自己总结过怎么上线可以不出问题。我总结了三问:你确认这次变更是做正确的事吗?你确认上线不会出问题吗?如果上线出了问题怎么办?这个方法是没错的,但是这里面有个很大的问题:一个人的思维是有盲区的,一个人是总是会出现意志的薄弱期。而三层专家团就像是用最好的硬件做成多活容灾服务器集群,SLA瞬间提升好几个9。
基础数据举例来说:企业的加密证书号、上下游http链接、数据字典。这些数据可能是配置数据,一个系统只有一两条,比如一个系统的SSL证书。也可能有几百几千条,比如服务治理系统里存的服务名。它们的变更出现问题带来的影响可能比生产变更更大:比如我们平时看到的收款二维码代表一个收款账户,如果把某商家的收款账户改错了,导致所有的钱打到了错误的商户上。
基础数据这么重要,它的变更怎么来把控呢?
基础数据变更管控思考
基础数据需要遵循安全合规和最小够用的原则。
安全合规是指遵循国家法律法规、管理制度,符合国家及行业标准规范,建立健全数据安全管理长效机制和防护措施,通过技术手段将原始信息脱敏,并与关联性较高的敏感信息进行安全隔离、分散存储。严控访问权限,严防数据泄露、篡改、损毁与不当使用,依法依规保护数据主体隐私权在数据管理与应用过程中不受侵害。
最小够用是规范数据使用行为,严控数据获取和应用范围,确保数据专事专用、最小够用,杜绝过渡采集、误用、滥用数据,切实保障数据主体的数据所有权和使用权。
在上面原则基础上,下面是我对一个数据变更管控系统的规划:
后记
我以前有段时间,会在写文章的最后加一句话的总结。后来干脆出了几期三言,每期三句话。我的初衷有两方面:一方面是正确的理念被灌输多了,人会朝着正确的方向走。另一方面是有时候一句名言给人很大启发或者在关键时刻给人以正确的引导。后来发现,写的多了,自己都记不住,理解也很肤浅。【敬畏生产】这句话可能要花很多年的时间才能真正感受到它的分量:
敬畏生产=生存指南
感谢朋友们一直以来的支持,大家知道我的公众号不接广告,但是很长时间一直开启赞赏功能,开启的原因很简单:点这个按钮就不用手输作者名了,方便【捂嘴笑】。但是真的感谢大家的支持,有几个朋友的昵称我记得很清楚:休几天假再上班我会忘记下地铁从哪个出口走,但是我却记得那几个朋友的昵称。我至今为止收到的所有赞赏已经全数(我老公凑热闹给我的不算)通过XX宝爱心捐献了,这是大家的爱心,感谢。
推荐阅读