Files
wordcloud/learning/01-project-lifecycle-and-operations.md

88 lines
4.9 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 传统项目开发有哪些部分,运维是干什么的
> 对应你的问题:**“传统项目开发中有哪些部分,运维是干什么的”**
下文按“全生命周期”拆解,先讲开发各阶段,再讲运维对应干什么。所有例子尽量映射到 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,按步骤排查 |
你只管问,我问完就写成文档。