这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记。
团队规模和流程的关系
复杂项目没有流程会有什么问题?
- 需求阶段:每个人都有自己的想法,团队决策需要有一个过程
- 开发阶段:多人/多端协作开发,每个人都有自己的安排,相互配合需要有一个流程
- 测试阶段:产物怎么交付,测试如何开展,BUG怎么修都需要流程
- 发布阶段:怎样确保发布过程平稳丝滑,版本和流量如何控制,需要有规范
- 运维阶段:线上问题如何应急响应,处理用户反馈和线上问题需要有流程
传统的瀑布模型
- 工作流程的直观表达
- 定义了标准的研发阶段
- 以流程为本,理想化模型 需求->开发->测试->发布->运维
敏捷开发
- 以小团队快速迭代
- 团队成员之间的合作更加紧密
- 以人为本,和用户沟通
需求阶段
- 站在用户的角度思考
- 收集用户反馈,快速迭代
云原生下的开发
传统虚拟机
- 在物理主机中虚拟出多个虚拟机,每个虚拟机拥有自己的操作系统
- 运维人员负责维护和交互虚拟机
- 每个虚拟机中都要安装相应的依赖环境 容器化
- 容器是在操作系统中虚拟出来的
- 通过cgroup,namespace和Union Mount等技术实现了容器之间的相互隔离同时容器只有很低的开销
- 应用和其依赖作为一个整体,打包成镜像交付 单体架构
- 多个模块共同组成一个服务,服务体量较大
- 模块之间直接调用,不需要RPC通信
- 服务整体扩缩容量
- 多人开发一个代码仓库,需要充分集成测试 微服务架构
- 各个功能在不同的服务中
- 不同模块需要进行RPC通信
- 不同模块可以独立扩缩容
- 每个服务的代码仓库仅由少部分人维护