开发流程
需求阶段
- 不要浪费时间讨论不应该存在的问题
- 站在用户的角度思考问题
- 收集用户反馈,快速迭代
开发阶段
-
把Kubernetes和容器技术作为一个基础知识
-
云原生下的开发
- 传统虚拟机
- 容器化
- 单体架构
- 微服务架构
-
团队的分支策略:团队需要统一分支的规则
-
代码规范,自测和文档也是非常重要的
-
在开发阶段还要进行自测和文档编写,在开发过程中,随时进行一些静态代码扫描,也能显著提高代码质量
测试阶段
-
测试应该是伴随着开发的全部过程的,每写一段代码之后就要想办法测试这段代码
-
BUG也不是因为没有测试产生的,能够为自己的代码负责
-
传统的测试金字塔模型:越底层的测试粒度越细,就需要越多的数量去覆盖所有场景,越顶层的测试越能用少量的case覆盖大多数场景
-
越早发现的缺陷解决成本越低
-
因为85%的缺陷是在开发阶段引入的,而如果要在上线之后修复他们,花费的成本可能是一开始就解决他们的数百倍所以我们还是要尽可能早的发现bug,进行充分的单元测试
-
用特定的设备可以通过某些设置,让他请求到对应的后端服务器,从而达到测试对应的后端服务的目的
-
功能环境是用于开发和测试新开发的功能的
集成环境是为了把不同的功能合并在一起测试
回归环境是为了验证新的功能对老功能没有影响
发布阶段
- 蛮力发布:简单粗暴,直接用新版本覆盖老版本。
- 金丝雀发布:由于金丝雀对瓦斯极其敏感,因此以前矿工开矿下矿洞前,先会放一只金丝雀进去探是否有有毒气体,看金丝雀能否活下来,金丝雀发布由此得名。
- 滚动发布:每个实例都通过金丝雀的方式逐步放大流量,对用户影响小,体验平滑。
- 蓝绿发布:把服务分成蓝绿两组,先把蓝组流量摘掉然后升级,只用绿组提供服务,之后切换全部流量,只用蓝组提供服务,然后升级绿组服务,最终两组全部升级。
- 红黑发布:和蓝绿发布类似,但是发布时会动态扩容出一组新的服务,而不需要常备两组服务。