Skip to content

第8章:可观测性、安全和故障处理 ​


8.1 系统可观测性(Observability)三大支柱 ​

mermaid
graph TD
    Obs["现代系统可观测性三大支柱"] --> Logs["1. 结构化日志 Logs: 记录具体的业务事件与上下文"]
    Obs --> Metrics["2. 度量指标 Metrics: 统计系统整体聚合趋势与数值脉冲"]
    Obs --> Traces["3. 分布式追踪 Traces: 还原单次请求在网关/应用/数据库的耗时瀑布"]

独立开发者的“极简指标看板”黄金清单: ​

不要因为开源监控工具(Prometheus / Grafana / Datadog)支持 1000+ 项指标就全盘引入把自己淹没在告警噪音中。在初期,只需紧盯以下 7 项关键业务指标:

  1. 请求吞吐速率(RPS / QPS);
  2. HTTP 5xx 错误率(Error Rate,超过 1% 立即告警);
  3. P95 / P99 响应延迟(Latency);
  4. 后台异步任务队列积压长度(Queue Depth);
  5. 异步任务失败重试率;
  6. 数据库连接池占用率(超过 80% 告警);
  7. 每日 AI API 调用成本与 Token 消耗流水(防欠费账单爆炸)。

8.2 独立产品最致命的五大安全漏洞与威胁建模 ​

从用户身份、数据流动与资产权限出发进行威胁建模(Threat Modeling):

1. 认证(Authentication)与授权(Authorization)混为一谈 ​

  • 典型水平越权漏洞(IDOR):前端隐藏了“删除”按钮,但后端接口只检查了“用户是否已登录”,没有检查“该数据对象究竟是不是当前登录用户创建的”。用户通过修改 URL 参数 DELETE /jobs/88 就能直接销毁他人数据!
  • 铁律:前端隐藏按钮不等于后端具备权限校验!

2. SQL 注入与 XSS 跨站脚本攻击 ​

  • SQL 注入:严禁字符串拼接 SQL,必须全面采用底层参数化查询(Parameterized Query / Prepared Statements);
  • XSS 防御:对富文本或用户提交的文本在渲染到前端页面前做严格的上下文转义编码,严格配置 Content Security Policy (CSP)。

3. 文件上传安全 ​

  • 严禁仅仅依靠客户端传来的文件扩展名(如 .jpg)做校验;
  • 必须在服务端校验上传文件的文件头魔数(Magic Number)、限制文件物理大小上限(如不超过 20MB)、并在随机重命名后存储至隔离的对象存储,绝对禁止在当前 Web 目录下直接执行上传文件!

4. API 密钥保护与敏感接口限流 ​

  • 所有的第三方 API 密钥(OpenAI、微信支付、Stripe)必须严格保留在后端私网服务端,严禁在前端打包代码中泄露;
  • 对登录、发短信、扣费、AI 对话接口必须设置基于 IP 和 UserID 的速率限制(Rate Limiting,如每分钟最多 10 次)。

5. 供应链安全(Supply Chain Risk) ​

  • 定期扫描 npm audit 或 pip-audit,避免引入恶意勒索或挖矿三方开源依赖包。

8.3 生产重大事故应急处理标准 SOP ​

mermaid
graph TD
    Alert["1. 触发线上严重事故告警"] --> Step1["2. 第一原则: 快速止损与恢复服务 严禁死磕排查拖延回滚!"]
    Step1 --> Step2["3. 保留案发现场证据 内存Dump/关键报错日志快照"]
    Step2 --> Step3["4. 执行降级开关或一键回滚发布"]
    Step3 --> Step4["5. 服务全面恢复后, 启动事故深层次复盘 Blameless Postmortem"]

事故复盘(Postmortem)核心纪律: ​

  • 对事不对人(Blameless):复盘的终极目的从来不是“寻找哪个人去背锅惩罚”,而是寻找**“系统防线为什么没有拦截这个错误”**;
  • 复盘报告必备要素:
    1. 事故真实影响范围(多少付费用户受到影响、丢失多少订单金额);
    2. 精确到分钟的事故时间线(从故障发生、告警触发、介入排查、止损回滚到恢复正常);
    3. 根本原因分析(直接原因 + 系统性缺陷设计原因);
    4. 落地改进动作(Action Items,明确责任人与完成截止时间)。

8.4 实战任务:故障注入演练 ​

在本地或预发环境人为制造以下三种真实故障,检验系统韧性:

  1. 数据库突然不可用(停止数据库容器):验证应用是否抛出友好的维护中提示,而不是让用户看到满屏报错;
  2. AI 模型接口超时/熔断:验证系统是否能在 5 秒内自动降级,给出备选方案并保护前端不白屏卡死;
  3. 恶意水平越权请求攻击:验证后端权限拦截逻辑是否 100% 记录安全告警日志并返回 403 Forbidden。

智测工坊丨软件测试与AI测试开发求职通关基地