可迁移
在我们开发平台项目的时候,如果涉及到不少数据与环境无关,那平台项目必须具备环境迁移能力;
- 数据库脚本迁移(无缓存的可使用,自增id当业务id的慎用)
- 页面上导入导出(需要一定开发量,需要做导出文档验证等逻辑,适合有缓存或者处理逻辑的初始化)
举例: 统一权限平台,会涉及到很多服务的资源角色菜单等数据需要人工或脚本录入,如果平台不支持迁移功能,那这个工作量会非常大,而且人工操作无法保证0风险。
可灰度
平台级项目需要保证高度可用,测试环境同样的操作可行,并不代表在生产环境同样操作就可以达到同样效果,所以平台必须具备生产灰度的能力,保证同样环境下没有问题才能正式应用于生产。
- 提供灰度测试能力
举例: 短信平台,如果生产环境没有预先灰度测试短信模板,如果在高并发的项目下直接接入,短时间会造成大量的错误,无法发出或者发出错误的结果。
可限流降级
平台级项目要保证可靠,如果有非正常的流量,应该具备针对流量入口能做到精准限流与降级处理
- 针对接入侧指定控制(比如通过client或租户做拦截)
举例:在saas服务服务中,如果有非法租户非法高频率调用接口,那应该具备针对该租户限流拉黑降级的能力,防止影响其他租户。
可回滚
平台项目要保证发版后能兼容旧的接入方,所以必然要保证如果发版发生问题可以最快回滚,保证旧版本不受影响。
- 版本兼容(新增功能表修改、逻辑调整必须考虑对旧的版本的影响,版本回滚要考虑数据修复很问题)
网友评论