问题
- 需求阶段:需要有决策需求的过程
- 开发阶段:多人协作开发,相互配合需要流程
- 测试阶段:产物如何交付,测试如何开展
- 发布阶段:怎样确保发布过程平稳,版本流量如何控制
- 运维阶段:线上问题如何应急响应
应对
随着互联网环境的变化,软件开发流程逐步从早期的瀑布模型,转到了现在的敏捷开发,其核心为
- 以小团队快速迭代
- 团队成员之间合作更紧密
- 以人为本,和用于沟通
- 需求阶段
- 不要浪费时间讨论不该存在的问题
- MVP思想(最小化可行产品)
- 站在用户角度,快速收集,快速迭代
- 优先处理,重要且紧急的事,而后是重要不紧急的事
- 开发阶段
- 自2019年起,业界大规模采用云原生的技术
- 容器化
- 应用和依赖打包成一个整体--镜像,来进行交付
- 微服务
- 各个功能在不同的服务中,不同模块之间进行RPC通信
- 不同模块可以独立扩容,每个服务仅少部分人维护
- 开发环境云原生化,开发逐渐从本地IDE到云上
- 容器化
- 分支管理策略
- 代码规范、自测、文档
- 自2019年起,业界大规模采用云原生的技术
- 测试阶段
- 测试阶段
- 单元测试
- 集成测试
- 系统测试
- UI测试
- 测试环境
- 功能环境
- 集成环境
- 回归环境
- 测试阶段
- 发布阶段
- 任务
- 发布负责人
- 变更服务相关的RD
- 值班
- 发布模式
- 直接替换
- 金丝雀发布(先部署一部分,再全部转移,适合非核心业务)
- 滚动发布
- 每个实例都通过金丝雀逐步放大流量,对用户影响小
- 蓝绿发布
- 服务分成蓝绿两组,一组升级,另一组提供服务
- 红黑发布
- 和蓝绿类似,需要动态扩容出一组新的服务来替换旧服务
- 资源充足采用滚动和蓝绿发布,资源不足则蛮力发布或者金丝雀发布
- 任务
- 运维阶段
- 此处问题原因复杂,事故发生后优先止损,而后周知,定位,修复
优化
- 开发维护形成闭环(DevOps)
- 全流程自动化,减少无价值的等待
这里主要是一些开发流程的介绍,不涉及过多技术层面的东西,但对于理解工作模式,环节还是有一定的帮助。也有利于后端开发工程师了解自己的工作在整个项目中的位置,从而减少因一个环节而引发的损失