概述
敏捷开发:以更小的团队进行更快的迭代
SAFe:一套管理框架
- 精益产品开发
- 敏捷软件开发
- 系统思考
流程
需求阶段
MVP思想:
- 站在用户角度思考
- 收集用户反馈,快速迭代
开发阶段
多人/多端协作开发
云原生下的开发
传统虚拟机:
容器化:
代码规范,自测和文档
代码规范:
- 养成良好的注释习惯
- 不要有魔法数字,魔法字符串
- 重复的逻辑抽象成公共的代码
- 正确使用IDE的重构
自测:
- 单元测试
- 功能环境测试
- 测试数据构造
文档:
- 大型改造需要有设计文档,方案评审
- 好的接口文档能够更方便和前端进行沟通
测试阶段
功能环境
集成环境
回归环境
发布阶段
发布模式:
-
蛮力发布:简单粗暴,新版本覆盖旧版本
- 优点:简单,成本低
- 缺点:发布过程中服务会中断,出现问题会影响用户
- 适用:测试环境部署,小公司或非核心项目
-
金丝雀发布
- 优点:相对简单,能够用少量用户验证新版本功能
- 缺点:发布过程中服务会中断,发现不了随用户量增大而发生的问题
- 适用:测试环境部署,小公司或非核心项目
-
滚动发布:
- 优点:发布过程中服务不会中断,可以充分验证服务功能
- 缺点:流程较复杂,发布速度较慢,新老版本不兼容的情况下不能使用
- 适用:
- 发布系统能力较强,可以平滑切换流量
- 发布自动化程度高,可以自动滚动
-
蓝绿发布:
- 优点:发布速度快,流程相对简单
- 缺点:需要有一半机器承担所有流量的能力,出现问题会影响全部用户
- 适用:服务器资源丰富,新老版本不兼容需要一次性升级到最新版
-
红黑发布:
- 优点:发布速度快,流程相对简单
- 缺点:机器数量需要能扩容一倍,出现问题会影响全部用户
- 适用:服务器资源丰富,新老版本不兼容需要一次性升级到最新版
运维阶段
流程优化
DevOps解决方案:
- 代码管理
- 自动化测试
- 持续集成
- 持续交付