后端开发 | 青训营笔记

68 阅读3分钟

这是我参与「第五届青训营」笔记创作活动的第十二天

一、为什么要有流程

1、团队规模和流程的关系

  • 为什么要有流程

    • 个人开发者是不需要流程的
    • 超过一个人的团队就需要协作
    • 随着团队规模上升,会出现全新的问题
  • 复杂项目没有流程会有什么问题

    • 需求阶段:每个人都有自己的想法,无法决策
    • 开发阶段:每人有自己的安排,相互配合需要有一个流程
    • 测试阶段:产物怎样交付、测试如何开展都需要流程
    • 发布阶段:怎样确保发布过程平稳丝滑
    • 运维阶段:线上问题如何应急响应,处理用户反馈和线上问题需要有流程

2、传统的瀑布流行

需求 → 开发 → 测试 → 发布 → 运维

  • 工作流程的直观表达
  • 定义了标准的研发阶段
  • 以流程为本,理想化模型

3、敏捷开发

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

4、the scaled agile framework(SAFe)

SAFe是一套管理框架:精益产品开发、敏捷软件开发、系统思考
现代的Scrum:

  • 敏捷教练
  • 产品负责人
  • 敏捷团队
  • 敏捷发布火车

二、有哪些流程

1、需求阶段

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

2、开发阶段

云原生下的开发

  • 传统虚拟机

    • 在物理主机中虚拟出多个虚拟机,每个虚拟机拥有自己的操作系统
    • 运维人员负责维护和交付虚拟机
    • 每个虚拟机中都要安装相应的依赖环境
  • 容器化

    • 容器是在操作系统中虚拟出来的
    • 通过cgroup,namespace和Union Mount等技术实现了容器之间的相互隔离,同时容器只有很低的开销
    • 英勇和其依赖作为一个整体,打包成镜像交付
  • 单体架构

    • 多个模块共同组成一个服务,服务体量较大
    • 模块之间直接调用,不需要RPC通信
    • 服务整体扩缩容量
    • 多人开发一个代码仓库,需要充分集成测试
  • 微服务架构

    • 各个功能在不同的服务中哦
    • 不同模块需要进行RPC通信
    • 不同模块可以独立扩缩容
    • 每个服务的代码仓库仅有少部分人维护

3、测试阶段

  • 功能环境
    • 需要一个能模拟线上的环境进行开发和测试
    • 环境和环境之间能够隔离,不影响其他功能的开发和测试
  • 集成环境
    • 不同人开发的功能合并在一起测试,相互之间的影响可能产生缺陷
    • 迭代发布的所有功能合并在一起测试,确保发布的所有功能之间的影响不产生缺陷
  • 回归环境
    • 确保新的功能不对老的功能产生影响
    • 回归测试一般会借助自动化测试脚本

4、发布阶段

  • 发布负责人
    • 负责按照计划执行发布
    • 需要通知各个相关人员发布进展
    • 观察各个服务的发布状态,及时处理异常
  • 变更服务的相关RD
    • 按照上线checklist检查服务的日志,监控,响应上线过程中的告警
    • 对于自己负责的改动,在小流量或者是预览环境进行功能验证
    • 执行发布计划中的其他操作
  • 值班同学
    • 发布过程中的监控和告警需要特别关注,如果有异常需要立刻判断是否由变更引起

5、运维阶段

关键动作:止损、周知、定位、修复