后端开发流程(一) | 青训营笔记

81 阅读4分钟

为什么要有流程

  • 复杂项目没有流程会有什么问题:
    • 需求阶段:每个人都有自己的想法,团队决策需要有一个过程。
    • 开发阶段:多人/多端协作开发,每个人有自己的安排,相互配合需要有一个流程。
    • 测试阶段:产物怎样交付,测试如何开展,bug怎样修都需要流程。
    • 发布阶段:怎样确保发布过程平稳丝滑,版本和流量如何控制,需要有规范。
    • 运维阶段:线上问题如何应急响应,处理用户反馈和线上问题需要有流程。

有哪些流程

需求阶段

MVP(minimum viable product,最小化可行产品)思想

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

image.png

开发阶段

云原生的开发

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

  • 在物理主机中虚拟出多个虚拟机,每个虚拟机拥有自己的操作系统
  • 运维人员负责维护和交付虚拟机
  • 每个虚拟机中都要安装相应的依赖环境
容器化
  • 容器是在操作系统中虚拟出来的
  • 通过cgroup,namespace和Union Mount等技术实现了容器之间的相互隔离,同时容器只有很低的开销
  • 应用和其依赖作为一个整体,打包成镜像交付
单体架构
  • 多个模块共同组成一个服务,服务体量较大
  • 模块之间直接调用,不需要RPC通信
  • 服务整体扩缩容量
  • 多人开发一个代码仓库,需要充分集成测试
微服务架构
  • 各个功能在不同的服务中
  • 不同模块需要进行RPC通信
  • 不同模块可以独立扩缩容
  • 每个服务的代码仓库仅由少部分人维护
代码规范
  • 养成良好的注释习惯,超过三个月的代码,自己都会忘了当时在想什么
  • 不要有魔法数字,魔法字符串
  • 重复的逻辑抽象成公共的方法,不要copy代码
  • 正确使用IDE的重构功能,防止修改错误
自测
  • 单元测试
  • 功能环境测试
  • 测试数据构造
文档
  • 大型改造需要有技术设计文档,方案评审
  • 好的接口文档能更方便的和前端进行沟通

测试阶段

image.png

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

发布阶段

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

image.png

image.png

image.png

image.png

image.png

运维阶段

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

个人总结

今天学习了字节同学分享的后端开发流程介绍,及各流程中各细节如何去做,总结来说即使是在个人开发过程中目前也还是有不太规范的习惯,应该注意改变这些喜欢,向优秀靠拢。