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

106 阅读4分钟

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

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

1、流程

传统的瀑布模型

  • 工作流程的直观表达

  • 定义了标准的研发阶段

  • 以流程为本,理想化模型

  • 低效

    需求->开发->测试->发布->运维

敏捷开发

  • 瀑布模型过于重视流程本身,无法适应市场变化

  • 价值观

    • 个体和互动 > 流程和工具
    • 工作的软件 > 文档
    • 客户合作 > 合同谈判
    • 响应变化 > 遵循计划
  • 特点

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

SAFe

  • 精益产品开发

  • 敏捷软件开发

  • 系统思考

  • 由多个团队相互配合

    • 敏捷教练-leader
    • 产品负责人-产品方向,与客户沟通
    • 敏捷团队
    • 敏捷发布火车

2、有哪些流程

需求阶段

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

mvp思想

  • 站在用户的角度思考
  • 开发原型,收集用户反馈,快速迭代
  • 考虑事情重要、紧急程度

开发阶段

  • 云原生

    • 共享同一个os

    • 通过技术实现容器之间相互隔离,同时容器只有很低的开销

    • 微服务架构

      • 各个功能在不同的服务中
      • 不同的模块通过RPC通信
      • 不同模块可以独立扩缩容
      • 每个服务的代码仓库仅由少部分人维护
    • webIDE,开发逐渐从本地IDE向线上转变

  • 分支策略

  • 代码规范

    • 养成良好的注释习惯,超过三个月的代码,自己都会忘了当时在想什么
    • 不要有魔法数字,魔法字符串
    • 重复的逻辑抽象成公共的方法,不要copy代码
    • 正确使用IDE的重构功能,防止修改错误
  • 自测

    • 单元测试

      • 单元测试、集成测试、系统测试、UI测试
    • 功能环境测试

    • 测试数据构造

测试阶段

  • 功能测试

功能测试,是为了测试一个新开发的功能,因此需要有能模拟线上的开发和测试环境,环境之间能相互隔离,这样可以独立验证不同的新功能

  • 集成测试:集成测试,是为了把几个功能合在一起测试,因为可能各个新功能独立测试没有问题,但是合在一起却产生了bug
  • 回归测试:回归测试是为了验证老的功能不被新的改动影响

发布阶段

  • 发布负责人

    • 负责按照计划执行发布
    • 通知发布进展
    • 观察发布状态、及时处理异常
  • 变更服务的相关rd

    • 按照上线checklist检查服务的日志,监控,响应上线过程中的告警
    • 对于自己负责的改动,在小流量或者是预览环境进行功能验证
    • 执行发布计划中的其他操作(如线上配置,数据处理等)
  • 值班

    • 发布过程中的监控和告警需要特别关注,如果有异常需要立刻判断是否由变更引起
    • 如果有变更引起的告警或者用户反馈,需要及时中止发布
  • 发布模式

    • 蛮力发布:直接发布
    • 金丝雀发布:发布一台机器
    • 滚动发布:通过金丝雀方式逐步放大流量
    • 蓝绿发布:两个集群,流量切到一个集群升级另一个集群
    • 红黑发布 :只有一个集群工作,发布时扩容一个集群升级新版本、切换后下掉老版本

运维阶段

  • 止损
  • 周知
  • 定位
  • 修复

3、执行流程

将质量保障融入到流程,自动化

DevOps

  • 代码管理
  • 自动化测试
  • 持续集成
  • 持续交付

效率竖井

  • 流程中实际产生价值的部分很短
  • 大量的时间用在等待和传递上
  • 人和人之间的沟通很慢

全流程自动化

  • 通过效能平台串联各个阶段

    • 需求发起研发流程的自动化
    • 写代码,测试环境部署的自动化
    • 自动化测试触发和报告分析
    • 发布过程可观测融入流程
  • 减少无价值的等待

    • 分析整个流程的耗时,计算真正产生价值的时间
    • 不断优化流程,让有价值的流程时间占比上升

\