摘自《大型网站技术架构演进与性能优化》
一、沟通效率:通过规范和约定把大家圈在同一个语言频道里
1、统一的术语,减少沟通成本
2、结构化表达需求,将一系列需求用术语、图表、页面等更好理解的方式呈现
二、开发效率
1、开发态和运行态分离:线下开发都是独立进行,各自owner各自的代码,但是线上部署在同一个容器中,兼顾开发效率和运行效率
2、对系统进行分层和抽象建模:提炼公共模块,减少重复开发,对典型交易场景进行建模设计,使整个交易流程可拓展
三、测试效率
全链路beta测试:保持beta环境与线上环境的一致性,各链路环节均打通,保持环境稳定性,可实现以下效果:
1、测试环境招之即来、挥之即去
2、在分批发布之前,可以在极短时间内有针对性的验证核心功能
3、也可以选择性的屏蔽cache访问
4、数据轨迹可以实时透出
运维效率:
1、打包编译环节
- 优化流程:环境分配,可预先分配好代码copy,要主动准备而不是每次代码编译时才准备环境
- 预处理:监控版本代码修改,当代码修改后,自动触发代码合并冲突检查,不要等到用户点击再触发 ; 每个分支代码更新主动和主 干做 Merge,发现有冲突要主动通知相应开发人员修改 , 不要等到 打包部署 时 再临时修改 ;
- 代码编译优化:规则检查,业务依赖包要做到规范化管理,通过工具识别依赖,优化maven配置减少不必要的消耗
- 增量编译:只编译变化的部分,比较代码修改时间可以得到被修改的类
- 打包机器硬件升级 ,提高编译速度
2、代码部署:
分布式系统进行滚动更新,保证流量切走之后再停止服务,同时保证现存提供服务的机器能满足当前系统压力需求
3、回滚:
可直接利用本机老代码包直接部署,有的持续化集成工具如jenkins可支持直接选取版本回滚,注意回滚也需滚动更新