这是我参与「第三届青训营 -后端场」笔记创作活动的的第1篇笔记
一、为什么要有流程
多人开发需要控制团队协作,保证团队效益最大化
瀑布模型
需求 -> 开发 -> 测试 -> 发布 -> 运维
敏捷开发
个体互动高于流程与工具 工作的软件高于详尽的文档 客户合作高于合同谈判 响应变化高于遵循计划
SAFe框架
需求的提出 站在用户的角度思考,收集用户反馈,快速迭代
二、有哪些流程
需求阶段
站在用户的角度思考,收集用户反馈,快速迭代
开发阶段
云原生如何改变后端开发?
1、传统虚拟机和容器化
传统虚拟机从物理层面模拟多个虚拟机,每个虚拟机拥有自己的操作系统,运维人员负责维护和交付虚拟机且每个虚拟机要安装相应的依赖环境。
容器是直接从操作系统中模拟出来的,且容器开销低,应用和其依赖作为一个整体打包成镜像交付。
2、单体架构和微服务架构
传统单体架构多模块共同组成一个服务,体量较大,需要充分集成测试,若要扩缩容量需要扩缩服务整体容量。
微服务将功能分散到不同的服务中,不同模块间需要进行RPC通信,但不同模块可以独立扩缩容,且每个服务需要的维护代价很小。
3、开发环境搭建便利化
注重代码规范、测试和文档。
测试阶段
便开发边测试,尽早测试
越早发现缺陷,修复成本越低
发布阶段
注意检查服务日志,监控,即使响应上线过程中的告警
蛮力发布--直接用新版本覆盖老版本
简单而成本低
发布过程中服务会中断,出问题会影响全部客户
适用:测试环境部署,小公司活非核心的业务服务
金丝雀发布--少量用户验证
相对简单
发布过程中服务会中断,无法检验用户压力大的情况下的问题
适用:测试环境部署,小公司活非核心的业务服务
滚动发布--每个实例都通过金丝雀的方式逐步放大流量
发布过程中服务不会中断,重复验证服务功能
流程复杂,速度慢,新老版本兼容才可使用
适用:发布系统能力强,可平滑切换流量。自动化程度高,可自由滚动。
_ 蓝绿发布--分组蛮力发布_
发布速度快,相对简单
需要一组机器承担所有流量,出问题会影响全部客户
适用:服务器资源丰富且新老版本不兼容
红黑发布--发布时临时扩容
发布速度快,相对简单
需要一组机器能扩容一倍,出问题会影响全部客户
适用:服务器资源丰富且新老版本不兼容
运维阶段
可能出现问题:流量突增,数据量大量增长,内存/进程泄露
三、流程优化
效率和质量是否能兼得?
DevOps解决方案
代码管理
自动化测试
持续集成
持续交付
全流程自动化