需求到上线全流程| 青训营笔记

147 阅读4分钟

需求到上线全流程| 青训营笔记

这是我参与「第三届青训营 -后端场」笔记创作活动的第1篇笔记

1、为什么要有流程

  • 个人开发者不需要流程
  • 超过一个人团队需要协作
  • 团队规模up,会产生问题

如果开发的话没有流程会产生大问题

image-20220518140306911

瀑布模型

image-20220518131140796

敏捷开发

image-20220518131206029

  • 更小团队迭代
  • 团队成员合作更紧密
  • 以人为本,和用户沟通

The scaled agile framework

它是一套管理框架,有着如下特点

  • 精益的产品开发
  • 敏捷软件开发
  • 系统的思考

现代的scrum包括以下流程

  • 软件教练
  • 产品owner
  • 敏捷团队
  • 敏捷发布火车

2、有哪些流程

2.1 需求阶段

不应该浪费时间讨论不存在的问题。

image-20220518131523853

MVP思想

  • 站在用户的角度思考
  • 收集用户反馈,快速迭代

image-20220518131607703

在做事情的时候可以按照紧急程度进行分类,优先做紧急且重要的事情。

image-20220518131645216

2.2 开发阶段

目前时代在发展,已经进入云原生的开发时代,它深深的改变了后端开发的工作。

image-20220518131924963

在原来传统虚拟机的开发环境下:

  • 物理主机中虚拟出多个虚拟机
  • 运维人员交互虚拟机
  • 每个虚拟机安装依赖环境

容器化之后:

  • 容器是操作系统虚拟来的
  • 通过cgroup、namespace、union mount等技术实现容器之间的相互开销,同时容器只有很低的开销
  • 应用和依赖作为一个整体,打包成镜像交付

目前许多应用也从单体应用转变为微服务应用。

image-20220518132159256

单体架构

  • 服务大
  • 不需要rpc通信
  • 服务整体扩充容量
  • 多人开发一个代码仓库,需要充分集成测试

微服务架构

  • 各个功能在不同的服务中
  • 需要rpc通信
  • 可以独立扩缩容
  • 每个服务代码只需要少部分人维护

目前开发环境也渐渐云原生化,各种web ide层出不穷,免去了人们花时间配置web ide的总体时间。

image-20220518132700250

在协作方面,团队采用分支开发的方式进行协作开发,每个人可以创建自己的开发分支,开发完毕并完成代码审查后再将已经开发好的代码合并到主分支上。

image-20220518132818058

代码规范方面,应遵循以下原则:

  • 写注释!
  • 不要有魔法数字以及字符串
  • 公共逻辑进行抽象,不要光cv代码
  • 正确使用ide的重构功能,防止修改错误

自测:

  • 单元测试
  • 功能测试
  • 测试数据自己造

文档:

  • 大的改造要有评审
  • 好的接口文档和前端进行沟通

2.3 测试阶段

image-20220518133028415

image-20220518133037288

测试阶段的环境

功能环境

需要模拟线上环境进行开发和测试,环境环境间要隔离好!不要影响其他功能。

集成环境

不同人开发的功能一起测试,相互之间影响发现可能产生的缺陷

迭代发布的所有功能一起测试,确保此次迭代发布的功能互不影响

回归环境

确保新功能不影响老功能

回归测试一般借助脚本

2.4 发布阶段

image-20220518133411629

发布过程要做的事

负责人:

  1. 负责按计划发布
  2. 通知各个人员发布进展
  3. 观察各个服务状态,及时处理异常

业务负责RD:

  1. 按照checklist检查服务日志,监控等信息
  2. 对于自己负责的改动,在小流量进行认证
  3. 执行发布阶段其他操作

值班同学:

  1. 监控和告警需要特别关注,如果有异常需要及时关注
  2. 变更引起的告警,需要及时终止发布

发布模式

1、蛮力发布

image-20220518133714814

2、金丝雀发布

image-20220518133820295

3、滚动发布

image-20220518133835201

4、蓝绿发布

image-20220518133910539

5、红黑发布

image-20220518133932201

2.5 运维阶段

image-20220518134051600

在公司发展过程中有很多超大规模微服务体系,在应对这些复杂的微服务监控,往往研发人员会在服务中进行埋点采集metrics、logging、分布式trace等数据。

3、如何优化流程

image-20220518134238429

image-20220518134245992

image-20220518134251146

image-20220518134256576