软件开发流程 | 青训营笔记

102 阅读2分钟

问题

  • 需求阶段:需要有决策需求的过程
  • 开发阶段:多人协作开发,相互配合需要流程
  • 测试阶段:产物如何交付,测试如何开展
  • 发布阶段:怎样确保发布过程平稳,版本流量如何控制
  • 运维阶段:线上问题如何应急响应

应对

随着互联网环境的变化,软件开发流程逐步从早期的瀑布模型,转到了现在的敏捷开发,其核心为

  • 以小团队快速迭代
  • 团队成员之间合作更紧密
  • 以人为本,和用于沟通
  • 需求阶段
    • 不要浪费时间讨论不该存在的问题
    • MVP思想(最小化可行产品)
      • 站在用户角度,快速收集,快速迭代
    • 优先处理,重要且紧急的事,而后是重要不紧急的事
  • 开发阶段
    • 自2019年起,业界大规模采用云原生的技术
      • 容器化
        • 应用和依赖打包成一个整体--镜像,来进行交付
      • 微服务
        • 各个功能在不同的服务中,不同模块之间进行RPC通信
        • 不同模块可以独立扩容,每个服务仅少部分人维护
      • 开发环境云原生化,开发逐渐从本地IDE到云上
    • 分支管理策略
    • 代码规范、自测、文档
  • 测试阶段
    • 测试阶段
      • 单元测试
      • 集成测试
      • 系统测试
      • UI测试
    • 测试环境
      • 功能环境
      • 集成环境
      • 回归环境
  • 发布阶段
    • 任务
      • 发布负责人
      • 变更服务相关的RD
      • 值班
    • 发布模式
      • 直接替换
      • 金丝雀发布(先部署一部分,再全部转移,适合非核心业务)
      • 滚动发布
        • 每个实例都通过金丝雀逐步放大流量,对用户影响小
      • 蓝绿发布
        • 服务分成蓝绿两组,一组升级,另一组提供服务
      • 红黑发布
        • 和蓝绿类似,需要动态扩容出一组新的服务来替换旧服务
    • 资源充足采用滚动和蓝绿发布,资源不足则蛮力发布或者金丝雀发布
  • 运维阶段
    • 此处问题原因复杂,事故发生后优先止损,而后周知,定位,修复

优化

  • 开发维护形成闭环(DevOps)
  • 全流程自动化,减少无价值的等待

这里主要是一些开发流程的介绍,不涉及过多技术层面的东西,但对于理解工作模式,环节还是有一定的帮助。也有利于后端开发工程师了解自己的工作在整个项目中的位置,从而减少因一个环节而引发的损失