这是你 DevOps 学习之旅的第一课。学完这一课,你就能回答面试中最常见的问题:「什么是 DevOps?」
假设你是一个前端开发者。你写了一个很棒的 React 应用,在本地 localhost:3000 跑得完美。现在你把它推给「运维」去上线。
运维说:「你用的 Node 版本是多少?环境变量有哪些?数据库连哪?nginx 配置谁写?这个端口跟现有服务冲突了…」
三天过去了,你的代码还躺在 Git 仓库里,没上线。
这就是经典问题:开发(Dev)和运维(Ops)之间有一堵墙。Dev 只管写代码,Ops 只管跑服务。双方用不同的语言、不同的工具、不同的优先级。代码在 Dev 的机器上能跑,但在 Ops 的服务器上跑不了——「在我机器上没问题」成了行业梗。
DevOps 的核心主张就一句话:
让写代码的人(Dev)和跑代码的人(Ops)用同一套工具、同一种语言、同一条流水线协作,从而更快、更可靠地交付软件。
它不是一个职位,不是一组工具,而是一种文化和方法论。工具是实现这种文化的载体。
DevOps 通常用一个「无限循环」(infinity loop)来表示软件从想法到上线、再到反馈的完整生命周期:
Plan ──→ Code ──→ Build ──→ Test
↑ ↓
Monitor Release
↑ ↓
Operate ←── Deploy ←───────────┘
每个阶段解释一下(你现在不用深究,后面每课深入一个):
| 阶段 | 做什么 | 你认识的工具 |
|---|---|---|
| Plan(规划) | 需求拆分、任务管理 | Jira, GitHub Issues |
| Code(编码) | 写代码、代码审查 | VS Code, Git, GitHub |
| Build(构建) | 编译、打包 | npm build, webpack, Docker |
| Test(测试) | 自动化测试 | Jest, Playwright, CI 流水线 |
| Release(发布) | 版本管理、发布准备 | Git tags, GitHub Releases |
| Deploy(部署) | 把代码推到服务器 | Docker, Kubernetes, 云服务 |
| Operate(运维) | 保持服务运行 | Linux, systemd, 负载均衡 |
| Monitor(监控) | 观测系统状态 | Prometheus, Grafana, 告警 |
注意:这 8 个阶段大多数已经在你的日常工作中出现了!你作为前端/后端开发者,已经在做 Plan → Code → Build → Test。DevOps 只是把这个循环延伸到右边的部分。
把 DevOps 拆成四个可以独立学习的领域:
DevOps 不是一个「纯运维」岗位。一个 DevOps Engineer 的工作大致包括:
你是前端 + 部分后端开发者。这意味着:
目标:用你当前的工作(或一个你熟悉的项目)来映射 DevOps 生命周期。
步骤:
举个例子,你的图可能长这样:
Plan: GitHub Issues ✓
Code: VS Code, Git ✓
Build: npm run build ✓
Test: Jest(手写) ✓ (但是没有自动跑)
Release: npm version ✓ (手动)
Deploy: ??? ✗ (不会)
Operate: ??? ✗ (不会)
Monitor: ??? ✗ (不会)
这张图就是你的个人 DevOps 学习路线图。接下来的每一课,都会帮你把其中一个 ✗ 变成 ✓。
主要推荐资源:找一本《凤凰项目》(The Phoenix Project),花一个周末读完它。它不是技术书,而是一个关于 DevOps 为什么重要的故事。读完你会对整个领域的「为什么」有深刻的理解。
下一课我们将开始第一个动手环节:Linux 命令行基础——因为不管你以后用 Docker、Kubernetes 还是云服务,你最终都是在跟 Linux 打交道。