后端开发与迭代 | 青训营笔记

124 阅读3分钟

后端开发与迭代

一、开发流程

1、需求阶段

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

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

重要和紧急程度(先看重要性,再看紧急性 )

2、开发阶段

云原生

云原生下的开发最大的区别就是部署形式不同

  • 传统虚拟机

传统虚拟机上的服务开发,是在物理机上或者是更底层上虚拟出多个虚拟主机,然后在每个虚拟主机中安装软件和依赖,虚拟机需要有专门的运维人员维护。

  • 容器化

容器是从操作系统中虚拟出来的,所有容器共享宿主机的系统,通过cgroup,namespace 和union mount 实现了容器之间的隔离,因此在部署时,应用和其依赖的系统是整体打包成一个镜像的,后端开发不再依赖运维人员创建程序的运行时环境。

云原生带来另一个改变就是微服务

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

一个服务中多个不同的模块构成了一个部署单元,各个模块作为一个整体部署和伸缩,这种架构下往往服务会形成一个很大的代码仓库,大家共同维护一个大型系统

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

微服务架构是把模块拆分到不同的服务中去,拆分的粒度更细,可以让每个模块独立的扩缩容,同时可以让少数几个人维护一个仓库,更适合敏捷的开发流程

开发环境逐渐云原生化

FaaS、PaaS 等技术让开发逐渐从本地 IDE向线上转变

团队之间采用分支策略

代码规范

  • 有良好注释习惯
  • 不要有魔法数字,魔法字符串
  • 重复的逻辑抽象成公共的方法,不要copy代码
  • 正确使用IDE的重构功能 ,防止修改错误

自测

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

文档

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

3、测试阶段

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

  • 功能环境
  • 集成环境
  • 回归环境

4、发布阶段

各种发布模式

  • 蛮力发布
  • 金丝雀发布
  • 滚动发布
  • 蓝绿发布
  • 红黑发布

5、运维阶段

当故障发生时,首先是止损,其次是让服务上下游感知到出了问题,之后我们才需要取定位和修复问题

二、流程怎样优化

DevOps 解决方案

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

从需求开始,写代码,编译,测试,发布,运维,监控形成一个闭环

全流程自动化

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

减少无价值的等待