部署与运维

原子发布与回滚:切版本不能留下半套前端半套后端

用版本目录、不可变产物、原子指针和兼容窗口发布,确保 HTML、静态资源、协议与服务端在失败时整体回到已知版本。

把它做成生产功能之前,需要先拆开协议事实、产品承诺和运行成本,三者混在一起很容易得到错误结论。 如果 HTML 已引用新 hash 资源而文件尚未全部就位,用户会得到永久 404。所有文件先写完整并校验,再切换入口指针。

发布方案必须可复现、可观察并可回退,且回退要包含配置和数据兼容性。健康检查只证明进程存活,核心路由、依赖和后台任务还需单独验收。

落地方案的关键部件

先把下面几项写成可评审的规则,而不是散落在回调和界面判断里。规则越清楚,后续扩容、兼容和排错越少靠猜。

  • 保留当前与上一版本目录,切换使用 rename 或符号链接原子操作;数据库迁移采用 expand/contract,旧程序在兼容窗内仍能读写。
  • 所有输入都设置大小、次数和时间预算,并在超限时返回可操作的稳定错误码。
  • 上线参数必须有保守默认值、服务端上限和灰度开关,不能把浏览器传来的数字直接当作资源预算。

“原子发布与回滚:切版本不能留下半套前端半套后端”的交付标准是正常路径可用、异常路径收敛、资源有界,并且用户能理解系统为何采用当前状态。 这样得到的不是演示代码,而是能解释、能降级、能回滚的生产能力。

别让错误假设进入生产

不要把异常路径理解成弹一次提示。它还包括在途工作如何停、对端如何获知、残留数据如何处置,以及下一次操作是否会继承旧状态。

  • 部署脚本先删旧文件再复制会形成空窗;破坏性迁移与代码同刻上线会让二进制回滚后无法读取数据。
  • 旧响应在新任务建立后迟到,如果没有版本隔离,会把健康状态覆盖成失败或再次启动已取消工作。
  • 指标标签直接包含用户或任务标识,既制造高基数成本,也让诊断数据泄露不必要的身份信息。

发布闸门应该检查什么

用已知输入和可控故障建立金样本,然后把线上低基数指标与测试结果对齐。只有指标能提前识别同类退化,验证才真正延伸到生产。

  1. 在复制 10%、切指针前后和健康检查中断电,逐次确认请求只命中完整版本、缓存 URL 有效且回滚不需人工修数据。
  2. 让刷新、取消、超时和远端完成在同一调度窗口发生,断言系统只产生一个终态和一次副作用。
  3. 分别覆盖直连、中转、弱网、后台标签页和移动端,报告不能只给平均值或一次成功截图。

可以上线的标准是:用户知道当前发生了什么,系统在异常后能停止或恢复,资源不会无界增长,运维也能从最小必要证据定位阶段。

把方法变成一次真实连接

打开 uCopy,让两台设备在浏览器里安全连接并开始传输。

开始免费使用