CATEGORY / 16

工程效率与质量

测试、交付、Git、容器、监控和日常工具。 这里的文章按实际问题组织,可以从任意一篇开始。

工程效率与质量9 分钟

Monorepo 不只是把仓库放在一起:用工作区守住模块边界

从目录职责、依赖方向和发布边界出发,搭建一个不会随着项目增长而失控的 Monorepo。

MonorepopnpmTypeScript模块化
工程效率与质量8 分钟

TypeScript 大项目提速:从一个 tsconfig 拆到 Project References

用 Project References 拆分类型检查边界,降低编辑器负担,并让 CI 只重建真正受影响的项目。

TypeScripttsconfig增量构建Monorepo
工程效率与质量7 分钟

给 API 错误一个稳定契约:别再只返回 message

设计可被前端、日志和监控共同理解的错误结构,让失败既能展示给用户,也能快速定位。

API错误处理契约设计可观测性
工程效率与质量10 分钟

不停机数据库迁移:用 Expand and Contract 拆掉危险变更

把字段重命名、约束收紧等破坏性操作拆成兼容阶段,降低应用与数据库同时切换的风险。

数据库Migration零停机发布
工程效率与质量8 分钟

测试金字塔落地:按风险选测试,不按数量凑比例

从系统边界和故障成本出发选择测试层级,让测试套件既快又能发现真正的问题。

测试策略单元测试集成测试E2E
工程效率与质量9 分钟

Playwright 稳定性实践:消灭等待、串扰和偶发失败

用可观察条件替代固定等待,隔离测试数据,并为偶发失败保留可诊断证据。

PlaywrightE2E自动化测试Flaky Test
工程效率与质量9 分钟

微服务契约测试:在部署前发现接口不兼容

由消费者描述真实依赖,再由提供者验证契约,减少联调环境中的意外破坏。

契约测试Pact微服务API
工程效率与质量6 分钟

测试数据 Builder:让用例只表达与场景有关的差异

用合理默认值和链式覆盖生成测试对象,避免每次模型加字段都修改整套测试。

测试数据Builder Pattern单元测试可维护性
工程效率与质量8 分钟

CI 缓存别靠运气:设计可解释的缓存键与恢复策略

区分依赖缓存与构建产物缓存,设计完整缓存键,并避免旧缓存制造难以复现的结果。

CI/CD缓存GitHub Actions构建优化
工程效率与质量10 分钟

金丝雀发布实战:用指标决定继续还是回滚

从小流量开始逐步放量,把健康指标、观察窗口和自动回滚写进发布流程。

金丝雀发布持续交付KubernetesSLO
工程效率与质量9 分钟

更小也更可信的容器镜像:多阶段构建、固定版本与 SBOM

缩小运行镜像、固定基础镜像来源,并生成软件物料清单,让容器既轻量又可审计。

Docker容器安全SBOM供应链
工程效率与质量8 分钟

线上故障前 15 分钟:一份能真正执行的 Runbook

明确指挥、止损、证据保全和沟通节奏,避免故障现场所有人同时猜原因。

故障响应Runbook可观测性复盘
工程效率与质量6 分钟

Pre-commit Hook 怎么配才不惹人关:只检查这次改动

把快速、确定的检查前移到本地,同时把完整验证留给 CI,兼顾反馈速度与质量门禁。

Git Hookslint-staged代码质量开发体验
工程效率与质量8 分钟

可复现开发环境:让新成员半小时跑起项目

固定运行时版本、自动准备依赖服务,并用干净环境持续验证项目启动文档。

开发环境Dev Container版本管理Onboarding
工程效率与质量8 分钟

结构化日志落地:从 requestId 一路追到后台任务

统一字段、传递上下文并控制敏感信息,让日志真正支持跨服务检索和故障定位。

日志OpenTelemetryTrace可观测性
工程效率与质量8 分钟

团队 CLI 设计:把散落脚本做成可靠的自助工具

统一参数、退出码和安全确认,让部署、数据修复等高频操作既容易发现又不容易误用。

CLI自动化脚本开发体验