这是我参与「第三届青训营 -后端场」笔记创作活动的的第6篇笔记
1.敏捷开发
1.1需求阶段
MVP (minimum viable product, 最小化可行产品)思想
四象限图:
1.2开发阶段
云原生下的架构
- 各个功能在不同的服务中
- 不同模块需要进行RPC通信
- 不同模块可以独立扩缩容
- 每个服务的代码仓库仅由少部分人维护
云端IDE
1.3团队的分支策略
- 集中式工作流
- Forking工作流
- GifFlow工作流
1.4测试阶段
测试环境:
1.5发布阶段
蛮力发布
-
优点
- 简单
- 成本低
-
缺点
- 发布过程中服务会中断
- 出了问题会影响全部用户
-
适用
- 测试环境部署
- 小公司或者非核心的业务服务
金丝雀发布
-
优点
- 相对简单
- 能够用少量用户验证新版本功能
-
缺点
- 发布过程中服务会中断
- 发现不了随用户量增大才会暴露的问题
-
适用
- 测试环境部署
- 小公司或者非核心的业务服务
滚动发布
-
优点
- 发布过程中用户体验不会中断
- 可以充分验证服务功能
-
缺点
- 流程较复杂,对发布系统有比较高的要求
- 发布速度较慢
- 新老版本不兼容的情况不能使用
-
适用
- 发布系统能力较强,可以平滑切换流量
- 发布自动化程度高,可以自动滚动
蓝绿发布
-
优点
- 发布速度快
- 流程相对简单
-
缺点
- 需要有一半机器承担所有流量的能力
- 出问题会影响全部用户
-
适用
- 服务器资源丰富
- 新老版本不能兼容的情况,需要一次性升级到新版
红黑发布
-
优点
- 发布速度快
- 流程相对简单
-
缺点
- 对机器数量仍然有要求
- 需要能扩容一倍
- 出问题会影响全部用户
-
适用
- 服务器资源丰富
- 新老版本不能兼容的情况,需要一次性升级到新版
1.6运维阶段
2.DevOps
-
DevOps解决方案
- 代码管理
- 自动化测试
- 持续集成
- 持续交付
-
效率竖井
- 全流程自动化