从需求到上线全流程| 青训营笔记

117 阅读3分钟

这是我参与「第三届青训营 -后端场」笔记创作活动的的第2篇笔记。

学员手册:juejin.cn/post/709712…

为什么要有流程

项目的开发需要团队的合作

瀑布模型

按照一定的时间线逐步完成工作,流程直观可达、以流程为本、理想化模型 image.png

敏捷开发

快速迭代、以人为本、和用户沟通Scrum image.png

The Scaled Agile Framework(SAFe)

多个scrum相互配合; 精益产品开发、敏捷软件开发、系统思考

团队的流程

举例: image.png

有哪些流程

流程的总览

需求阶段:提出idea,团队做出决策
开发阶段:多人协作开发
测试阶段:交付产物、开展测试、修复BUG
发布阶段:确保发布过程平稳、如何控制版本和流量
运维阶段:应急响应,线上问题处理流程

image.png

需求阶段

明确什么该做、什么不该。 后端站在客户角度评估需求;

最小化可行产品(minimum viable product,MVP)思想 站在用户角度思考;收集用户反馈,快速迭代。如

image.png

开发阶段

云原生开发

容器化

传统虚拟机开发:每个虚拟机有自己操作系统,安装相应的依赖环境

容器化:容器在操作系统虚拟出来,容器之间相互隔离,开销低;应用和其他依赖作为一个整体,打包成镜像交付

微服务:

各个功能在不同的服务中;
不同模块进行RPC通信;(缺点:造成了网络通信开销)
不同模块独立扩缩容;
每个服务代码仓库由少部分人维护

参考论文:μSuite: A Benchmark Suite for Microservices.

分支策略

根据main提交自己的分支,再将自己的分支提到主干分支

测试阶段

google软件测试之道 保证每一段的质量——单元测试

功能环境:模拟新的功能;保证不影响其他功能 集成环境:所有功能合在一起测试 回归环境:确保新的功能不对老的功能产生影响

发布阶段

发布过程中出现问题,如何调查?

1、F12开发者工具
2、使用cur检测接口发现  ,绑定

发布模式

蛮力发布:

优点:简单、成本低
缺点:发布过程服务中断、影响用户
适用:测试环境部署、非核心业务

image.png

金丝雀发布

先发布一部分进行试探。

优点:相对简单、能够少量用户验证新版本
缺点:发布过程中中断;发现不了用户量增多暴露的问题
适用:测试环境部署、非核心业务

image.png

滚动发布

每个实例都通过金丝雀方式逐步放大流量;

优点:发布过程用户体验不中断;充分验证服务功能
缺点:流程较复杂,对发布系统有较大要求;发布速度慢;新老版本需要兼容
适用:发布系统能力强;发布自动化程度高

image.png

蓝绿发布

分为蓝绿两组,先把蓝组升级,只用绿组提供服务;之后切换全部流量只用蓝组提供服务,升级绿组。

优点:发布速度快、流程简单
缺点:有一般机器承担所有流量的能力,出问题影响全部用户
适用:服务器资源丰富,需要一次性升级到新版本

image.png

红黑发布

发布时动态扩容一组新的服务,不需要常备两组。

优点:发布速度快、流程简单
缺点:对机器数量要求,出问题影响所有永华
适用:和蓝绿发布一致

image.png

一般实际中使用滚动发布和蓝绿发布模式。

运维阶段

一些问题如:

用户量增加引起洪峰
数据库数据流增长、查询变慢
内存泄漏导致服务资源不足
光缆被挖断

先止损、修复再定位问题。

怎么样执行流程

DevOps

开发运维形成一个闭环

image.png

全流程自动化

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