从需求到上线

74 阅读3分钟

这次课讲得挺不错,内容也门槛低,了解体系很有帮助

image.png

什么样的经历才能叫做工作经验?

Why 为什么需要「流程」

团队规模

image.png

传统瀑布模型

  • 理想化、标准的一个直观流程
  • 但是流程定死了,很多时候大家都卡在某个流程

敏捷开发 image.png

  • 就是因为之前的流程太过于注重于过程本身
  • 更注重客户反馈(以人为本)、团队互动(以小团队快速迭代)
  • Scrum 两队人争求,共同的目标,象征着理想的合作状态

SAFe

image.png

  • 现代的 Scrum:多个 Scrum 相互配合

image.png

实例

image.png

What 有哪些流程

需求阶段

  • 不要浪费时间讨论不应该存在的问题
  • MVP,最小化可行性产品思想:需要动态收集用户的反馈来迭代产品,而不是到上线了才完成一个可行产品,前面都无反馈
  • 爱僧豪威尔矩阵对需求事件的划分

image.png

开发阶段

云原生深刻改变了后端开发流程

  • VM 容器化:应用和运行时容器同时作为交互产物

image.png

  • 微服务:

image.png

  • 其他
    • 开发环境也云原生化

团队的分支策略

代码规范

  • 注释,三个月一定会忘了自己写的什么
  • 硬编码被叫做魔法数字
  • 抽象重复逻辑
  • 学会使用 IDE 重构

自测 & 文档

image.png

测试阶段

image.png

测试的阶段

image.png

  • 越早发现问题测试成本越低

image.png

发布阶段

“空难大多数发生因素是由人为检查失误造成的”

  • 顺着链路、用 DevTool, curl 等工具去定位问题

发布过程中要做的事情

image.png

发布模式

  • 蛮力发布:直接覆盖
  • 金丝雀发布:探路,但是发现不了大规模问题
  • 滚动发布:成本高,用的多
  • 蓝绿发布
  • 红黑发布

image.png

运维阶段

How:流程优化思路

效率 和 质量 的矛盾

image.png

融合、自动化

image.png

DevOps 解决方案

  • 代码管理
  • 自动化测试
  • CI
  • CD

DevOps是一种软件开发和运维的方法论,旨在通过自动化和协作来加速软件开发和部署的过程。它将开发和运维团队紧密结合在一起,以实现更快、更可靠的软件开发和部署。

举个例子,假设一个公司正在开发一个新的软件产品。在传统的软件开发模式下,开发团队会开发软件代码,然后将代码交给运维团队进行部署。但是,在这个过程中可能会出现许多问题,比如开发团队和运维团队之间的沟通不畅、代码部署出现错误等等。

在DevOps模式下,开发和运维团队会紧密合作,共同开发和部署软件。他们会使用自动化工具来加速软件开发和部署的过程,例如使用持续集成和持续交付工具来自动化构建、测试和部署软件。此外,他们还会使用监控和日志工具来实时监控软件的运行状况,以便及时发现和解决问题。

通过使用DevOps方法,开发和运维团队可以更快、更可靠地开发和部署软件,同时也可以更好地协作和沟通。这有助于提高软件开发和部署的效率和质量,从而帮助企业更好地满足客户需求。

全流程自动化

image.png

例子:后端开发的一周