开发与迭代 | 青训营笔记

76 阅读4分钟

后端开发流程

为什么要有流程

个人开发不需要流程 超过一个人的团队就需要协作 随着团队规模上升,会出现新的问题

复杂项目没有流程会出现什么问题?

  1. 需求阶段:每个人有自己的想法,团队决策需要有一个过程
  2. 开发阶段:多人协作,每个人有自己的安排,相互配合需要一个流程
  3. 测试阶段:产品怎样交付,测试如何开展,Bug怎么修
  4. 发布阶段:怎样确保发布过程平稳丝滑,版本和流量如何控制,需要有规范
  5. 运维阶段:线上问题如何紧急响应,处理用户反馈和线上问题需要有流程

传统瀑布模型

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

敏捷开发

敏捷开发宣言:

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

敏捷开发

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

SAFe:多个scrum相互配合

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

现代的Scrum

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

image.png

有哪些流程?

需求阶段:

不要浪费时间讨论不应该存在的问题,有些需求本身就不应该存在 ----------砍需求

如何评估一个需求? MVP思想方式 站在用户的角度思考 收集用户反馈,快速迭代

image.png

开发阶段

云原生开发

云原生下,应用和运行容器共同作为交付产物

微服务

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

>_<

  • 开发环境逐渐云原生化
  • Faas,Paas等等技术,让开发逐渐从本地IDE向线上转变
  • 从入职领到电脑搭建完一套完整的开发环境需要多久,通过WebIDE等技术,环境未来将会开箱即用

团队分支策略

主要是Git的使用

代码规范、自测和文档

代码规范

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

自测

  • 单元测试
  • 功能环境测试
  • 测试数据构造

文档

  • 大型改造需要有技术设计文档,方案评审
  • 好的接口文档能更方便的和前端进行沟通

测试阶段

image.png

越早发现缺陷修复的成本越低

发布阶段

蛮力发布模式:

image.png

金丝雀发布:

image.png

滚动发布:

image.png

蓝绿发布:

image.png

运维阶段

公司在发展过程中,逐渐形成了十分复杂的超大规模微服务体系,为了实现对这些复杂微服务的监控,我们往往会在微服务中添加埋点采集Metrics,Logging,分布式Trace等多种数据

流程优化思路

在重视质量的团队,效率往往比较低 在重视效率的团队,事故往往比较多

  • 技术发展会带来质量和效率的同时提高
  • 将质量保证融入到流程将流程自动化
  • 从需求到上线全流程自动化,同时提高质量和效率

DevOps

效率竖井

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

全流程自动化

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

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

减少无价值的等待

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

后端开发的一周