CHECKLIST · 2026-11

网站上线与维护检查清单

配合视频《AI 时代全栈工程师:一个网站从需求到上线和维护》。勾选状态只保存在你自己的浏览器里。服务名只是举例,不代表推荐;价格、配额以各家最新说明为准;标“示意”的数字只是示例。

0 案例与范围

小团队用的活动报名网站:参与者用邮箱登录、填表报名、在线付费、收到确认邮件;组织者在后台看名单、导出、取消、退款。

需求→开发→上线→维护→ 新需求回到第一步

1 需求

给定 活动已满员(40 / 40)
当   用户点击“报名”
应该 看到“加入候补”选项
并且 不创建支付会话,不扣款

2 技术选型

标准不是性能,而是你能不能维护得了它。每一块都应能在需要时替换。

全托管自己管
前端 / 函数Vercel、Netlify、Cloudflare 等托管平台云服务器 + Docker Compose,或 Fly.io、Render、Railway 等容器平台
数据库托管 Postgres(如 Neon、Supabase)自己跑 Postgres(或仍用托管)
登录 · 邮件 · 支付现成服务(如 Auth.js / Clerk;Resend / Postmark;Stripe)同左,尽量不自建
优点几乎不碰服务器,起步快成本可控、可迁移、更自由
代价月费随用量上涨;被平台绑住的程度备份、升级、补丁、监控都是你的事
用户主要在国内时,国内云厂商也有对应的托管服务和服务器产品,思路相同;网络、合规和可选服务范围不同,按实际情况选。

3 与 AI 代理协作

必须由人拍板代理可以
数据模型(改起来最贵)给出方案和取舍
权限:谁能看到谁的数据写代码、写测试
花钱:付费服务、机器规格审查、找漏洞
对用户的承诺:退款规则、隐私整理文档
# 活动报名网站
规格:docs/spec.md(每个任务先读对应小节)

## 运行
pnpm install && pnpm db:migrate && pnpm db:seed
pnpm dev     # http://localhost:3000
pnpm test    # 单元测试;pnpm e2e 走浏览器

## 约定
- 接口输入一律校验;金额用整数(分),时间存 UTC
- 改表结构只写新迁移,不改旧迁移
- 改功能时同时更新 docs/spec.md

## 不要碰
- .env*、已有的迁移文件、支付回调的验签逻辑
- 不要新增依赖,除非任务里写了

4 设计与前端(详见前两个系列)

5 后端与支付回调

提交表单→登录校验→权限检查→输入校验→事务:写报名 + 锁名额→创建支付会话
BEGIN;
SELECT taken, capacity FROM events WHERE id = $1 FOR UPDATE;  -- 锁住这一行
INSERT INTO registrations (...) VALUES (...);
UPDATE events SET taken = taken + 1 WHERE id = $1;
COMMIT;

支付回调(以 Stripe 为例)

Stripe 不保证事件顺序;生产模式下回调失败会持续重试,最长约 3 天,测试模式重试次数更少。官方 SDK 验签有默认时间容差(300 秒)。以 Stripe 当前文档为准。

后台任务与上传

6 数据模型

核心表:users、events、registrations、payments、emails。

7 认证与权限

-- 有漏洞:只检查了已登录
SELECT * FROM registrations WHERE id = $1;
-- 修复:同时检查归属
SELECT * FROM registrations WHERE id = $1 AND user_id = $2;

8 环境与密钥

本地预发布生产
代码同一份
配置 / 密钥.env.local平台密钥管理(预发布)平台密钥管理(生产)
数据种子数据假数据真实数据
支付 · 邮件测试模式测试模式正式模式

9 持续集成

10 部署、迁移与回滚

托管平台自管服务器 / 容器平台
部署连接仓库,推送即构建;每个分支 / PR 一个预览地址流水线构建镜像 → 推到镜像仓库 → 逐个替换实例
回滚切回上一个部署(不重新构建)换回上一个镜像版本号

11 域名、证书与邮件

生效日期公开信任 TLS 证书最长有效期
2026-03-15 之前398 天
2026-03-15 起200 天
2027-03-15 起100 天
2029-03-15 起47 天

来源:CA/Browser Forum Ballot SC-081v3。Let's Encrypt 另有缩短默认有效期的计划(2028 年起默认 45 天)。

12 安全基线

更完整的参考:OWASP Top 10、OWASP ASVS。

13 性能与容量

14 生产准备

15 发布与上线当天

16 可观测性与告警

信号回答的问题工具举例
日志每个请求做了什么平台自带或集中日志服务
指标多少请求、多少出错、多慢OpenTelemetry → Grafana 等
链路追踪请求经过了哪些服务OpenTelemetry
错误上报哪里抛异常、影响多少人Sentry 等
真实用户监控用户浏览器里页面多快Sentry、平台 Web Analytics 等
{"ts":"2026-11-06T12:03:41.512Z","level":"error","msg":"webhook signature verification failed",
 "request_id":"req_8f3a","route":"POST /api/webhooks/stripe","registration_id":1042,
 "release":"2026.11.06-2","env":"production"}
// 不要出现:密码、令牌、完整卡号、完整手机号、邮件正文
告警(阈值为示意)级别
报名接口 5xx > 2%,持续 5 分钟紧急:推送到手机
已付款未入账 > 0,持续 10 分钟紧急
p95 延迟 > 2 s,持续 10 分钟一般:邮件,次日处理
证书剩余 < 14 天 · 磁盘快满 · DB 连接 > 80%一般
其余看板,定期看

17 事故处理

发现→止损→定位→恢复→复盘
阶段案例:支付回调失败
发现告警:已付款但报名状态未更新的数量上升
止损确认影响范围;若由刚才的发布引起先回滚;不确定时先挂提示“付款已收到,确认邮件稍后送达”
定位错误上报:验签失败;部署记录:生产环境变量被换成了测试模式的密钥
恢复改回密钥;支付服务重试失败的回调,幂等处理自动补上状态;超过重试期的用对账脚本补齐
复盘写下经过、影响、为什么没更早发现、如何防止(如启动时检测到生产使用测试密钥就拒绝启动);不追究个人
## 发生了什么
## 影响(多少用户、多长时间)
## 时间线
## 为什么没有更早发现
## 以后怎么防止(负责人、截止日期)

18 备份与数据保留

19 成本

常见意外办法
调试日志忘了关,日志量暴涨日志分级;采样;保留期
大图未压缩、被盗链,带宽暴涨压缩、CDN、防盗链
按用量计费的数据库被慢查询拖满慢查询告警、索引
没限流的 AI 接口一夜花掉预算按密钥设花费上限;代码里每用户每日上限

20 安全维护

21 持续迭代

22 AI 参与运维

可以交给 AI必须人确认(或只给只读权限)
读告警和日志,总结发生了什么直接修改生产数据库
写排查用的查询和脚本接触生产密钥和权限
从错误上报定位代码,提修复 PR账单、扩容等花钱的操作
起草复盘文档;定期检查依赖和配置对用户发出的任何通知
实用做法:给代理一个只读的生产账号(日志 / 指标查看、数据库只读副本),没有部署、密钥、账单权限;改动走 PR → 流水线 → 人审。

23 人 · AI · 工具

需求开发上线维护
人:决定范围 · 不做清单数据模型 · 权限上线时机 · 花钱事故决策 · 对用户承诺
AI:加速追问边界写代码和测试审查 · 写脚本排查 · 起草复盘
工具:兜底规格文档测试 · 类型检查流水线 · 自动部署 · 证书监控告警 · 备份

参考

本页与视频由 AI 生成(文稿与画面:Claude;配音:Gemini TTS)。服务名只是举例;价格、配额与政策以各家和官方最新说明为准。