88 lines
4.9 KiB
Markdown
88 lines
4.9 KiB
Markdown
# 传统项目开发有哪些部分,运维是干什么的
|
||
|
||
> 对应你的问题:**“传统项目开发中有哪些部分,运维是干什么的”**
|
||
|
||
下文按“全生命周期”拆解,先讲开发各阶段,再讲运维对应干什么。所有例子尽量映射到 WordCloud 这个项目本身,方便你直接对照。
|
||
|
||
---
|
||
|
||
## 一、项目开发的全生命周期(6 个阶段)
|
||
|
||
| 阶段 | 昵称 | 这个阶段的产出物 | WordCloud 里的例子 |
|
||
|------|------|------------------|-------------------|
|
||
| 1. 需求/设计 | 想清楚 | PRD、原型图、接口契约 | 词云效果要支持 `VERTICAL_RATIO`,垂直字怎么排;前端画布要能导出 SVG |
|
||
| 2. 开发 | 写代码 | 功能代码、单元测试 | `ewc_core.cpp` 的碰撞布局算法、`frontend/src/components/...` 的 UI 面板 |
|
||
| 3. 构建/打包 | 编译出来 | 可执行产物 | C++ → `.so`、前端 `vite build` → `dist/`、Docker image |
|
||
| 4. 部署 | 放上线 | 线上运行的服务 | `docker compose up -d`,VPS/云主机上跑 backend + frontend |
|
||
| 5. 运行/监控 | 盯着它 | 日志、告警、扩缩容 | 查看 `/api/health`、容器内存占用、用户访问量是否把接口打满 |
|
||
| 6. 维护/迭代 | 打补丁 | 新 release、热修复 | 修复布局算法 bug、加新字段 `canvasNegativeSpaceRatio`、灰度发布 |
|
||
|
||
**不要把“开发”只理解为写代码。** 写代码只是阶段 2,后面 4 个阶段合起来叫“运维相关”或“交付相关”。
|
||
|
||
---
|
||
|
||
## 二、运维(Operations)到底是干什么的
|
||
|
||
运维不是修电脑、不是只会重启服务器。它的核心职责可以用一句话概括:
|
||
|
||
> **让软件从“能跑”变成“稳定、安全、低成本地跑在线上,并且出了问题能快速恢复”。**la
|
||
|
||
### 2.1 运维的 5 大日常工作领域
|
||
|
||
| 领域 | 通俗解释 | 在 WordCloud 项目里的具体体现 |
|
||
|------|----------|------------------------------|
|
||
| **部署与发布** | 把新版本放上线,让用户能用 | `docker compose build` → `docker compose up -d`;或者把 image 推上私有 registry,服务器拉下来跑 |
|
||
| **监控与告警** | 知道系统什么时候快挂了 | `healthcheck` 配置在 `docker-compose.yml` 已有:`curl -f http://localhost:8000/api/health`,失败 3 次就标记容器 unhealthy |
|
||
| **日志与排障** | 出事了看日志找原因 | FastAPI 访问日志、C++ 扩展 `stderr` 报错、前端浏览器 console error |
|
||
| **备份与恢复** | 数据丢了能救回来 | `service_workspace/`、`service_projects/` 里的用户设计稿、字体文件,是否定期快照? |
|
||
| **安全与权限** | 别让人随便进来搞破坏 | 前端直接暴露到公网?后端有没有 CORS 白名单?Docker 端口只开 8000/3000? |
|
||
|
||
### 2.2 运维与开发的关系——不是“前后顺序”而是“左右手”
|
||
|
||
```
|
||
开发(Dev) 运维(Ops)
|
||
│ │
|
||
├─ 写功能代码 ←→ ├─ 配 CI/CD 流水线(自动构建、自动部署)
|
||
├─ 本地调通 ←→ ├─ 配测试环境(staging)让你先验证
|
||
├─ 写接口文档 ←→ ├─ 配网关/路由/负载均衡
|
||
├─ 写单元测试 ←→ ├─ 写监控规则、告警阈值
|
||
└─ 代码合并到主分支 ←→ └─ 上线、回滚、值班
|
||
```
|
||
|
||
现代常说的 **DevOps** 就是把这两只手绑在一起:开发也要懂怎么部署,运维也要懂代码里埋的探针。
|
||
|
||
### 2.3 没有“专职运维”时,这些活谁来干
|
||
|
||
小团队(比如这个项目目前的状态)通常没有独立的运维工程师,这时工作会分摊给:
|
||
|
||
- **开发自己**:配 Docker、写 `docker-compose.yml`、看日志排查线上 bug。
|
||
- **项目负责人/你自己**:买服务器、配域名 HTTPS、决定什么时候升级 Node 版本。
|
||
- **云服务商托管**:比如用 Vercel 部署前端、用 Cloud Run / 阿里云函数计算 跑后端,省掉一部分基础设施运维。
|
||
|
||
---
|
||
|
||
## 三、用这张图记住重点
|
||
|
||
```
|
||
需求 → 开发 → 构建 → 部署 → 运行 → 监控 → 维护 → 回到需求
|
||
↑___________________________________________↓
|
||
(开发闭环:迭代)
|
||
|
||
需求 → 开发 = 产品经理 + 程序员
|
||
构建 → 部署 = 构建工具(Docker、Vite)+ 发布脚本
|
||
运行 → 维护 = 运维(或全栈开发者兼任)
|
||
```
|
||
|
||
---
|
||
|
||
## 四、下一步你可能想问的(预告)
|
||
|
||
| 如果你想问 | 我可以写的大概内容 |
|
||
|-----------|------------------|
|
||
| "这个项目具体怎么搭测试环境?" | 本地 vs Docker 两种跑法,数据卷挂载 |
|
||
| "我需要学哪些运维命令?" | `docker`、`docker compose`、`htop`、`curl`、`journalctl`、`tail -f` 等结合本项目场景 |
|
||
| "上线前要做哪些检查清单?" | 一份针对 WordCloud 的 pre-deployment checklist |
|
||
| "前端和后端是怎么联调的,接口崩了怎么看日志?" | runbook,按步骤排查 |
|
||
|
||
你只管问,我问完就写成文档。
|