开发流程拆解 | 青训营笔记

85 阅读3分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天

当要开发的项目复杂了之后,会遇到一系列的问题。 例如:

  • 需求阶段:每个人都有自己的想法,团队决策需要有一个过程
  • 开发阶段:多人/多端协作开发,每个人有自己的安排,相互配合需要有一个流程
  • 测试阶段:产物怎样交付,测试如何开展,bug 怎么修都需要流程
  • 发布阶段:怎样确保发布过程平稳丝滑,版本和流量如何控制,需要有规范
  • 运维阶段:线上问题如何应急响应,处理用户反馈和线上问题需要有流程

可以看见,这些都需要一个规范和流程。下面是几个阶段的一些注意事项。

需求阶段

  • 不要浪费时间讨论不应该存在的问题
  • 开发者需要学会站在用户的角度评估需求
  • 使用 MVP 思想、四象限法等多种方式

开发阶段

由于云原生的发展,现在的后端开发工作跟几年前已经有了很大的区别, 作为后端开发者,应该把 Kubernetes 和容器技术作为一个基础知识, 因为这对日常的开发影响很大。

虚拟机 VS 容器化

如果说过去在虚拟机中的开发是用剑决斗,那云原生技术爆发的当下,就是能够在决斗中用枪了

虚拟机

  • 在物理主机中虚拟出多个虚拟机,每个虚拟机拥有自己的操作系统
  • 运维人员负责维护和交互虚拟机
  • 每个虚拟机中都要安装相应的依赖环境

容器化

  • 容器是在操作系统中虚拟出来的
  • 通过cgroup、namespace和Union Mount等技术实现了容器之间的相互隔离,同时容器只有很低的开销
  • 应用和其依赖作为一个整体,打包成镜像交付

单体架构 VS 微服务架构

单体架构

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

微服务架构

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

测试阶段

你需要在写完每一段代码之后立即测试这段代码,当完成了更多的代码时,就要做更多的测试。测试不是独立隔离的活动,它本身就是开发过程的一部分,质量不等于测试,当你把开发过程和测试放到一起,就像在搅拌机里混合搅拌那样,直到不能区分彼此的时候,你就得到了质量。

——《Google 软件测试之道》