先给结论:企业不开放生产环境权限时,交付仍然可以执行,但必须把“部署动作”从服务商手中移到企业侧,服务商改为交付可验证的构建产物、变更说明和回滚方案。前提是双方先约定一个双方都能访问的验收环境,否则所谓交付只是把风险从一方推给另一方。
同样是“不给生产权限”,原因不同,处理方式也不同。常见的三类是:安全合规要求,生产环境只允许内部人员操作;职责边界要求,运维由企业自有团队承担;变更管控要求,上线必须经过内部审批窗口。三类限制都指向同一个动作:服务商不能直接改生产,但交付物必须让企业侧的人能独立完成上线。
如果限制来自安全合规,验收证据要能脱离生产环境成立,例如构建日志、依赖清单、静态资源校验值。如果限制来自职责边界,交付说明要写到企业运维可直接执行的粒度。如果限制来自变更管控,交付节奏要匹配审批窗口,而不是按服务商自己的排期推进。
需要区分的是,不给生产权限不等于不给任何环境。若连测试环境都不提供,服务商只能交付代码和文档,无法验证运行结果,这时的交付边界必须写清楚:哪些问题由企业侧自行承担。
可执行的交付不是一堆源码压缩包,而是三份能各自被验证的材料。
这三份材料的共同要求是:企业侧的人在不联系服务商的情况下,能照着做完一次上线和一次回滚。做不到这一点,说明交付还没有完成。
权限不在服务商手里,验收就必须前移到企业能提供访问的环境里。可以按下面的顺序推进:
这个顺序的关键在于第三步:由企业侧的人动手,而不是服务商演示。演示通过不代表文档可执行,只有别人照着做通了,交付才算落地。
假设企业提供了一份待改版的页面清单,共若干页面,但不给生产权限。服务商可以先在验收环境完成这些页面的构建,产出一个包含页面路径、构建版本和校验值的交付清单。企业侧运维拿到清单后,按变更说明把产物同步到生产,再按回滚方案保留上一版本。
这个例子里,服务商的动作是产出清单和说明,企业侧的动作是执行上线。结果如何影响下一步:如果企业侧按说明一次上线成功,说明交付粒度足够;如果卡在某一步,说明该步骤需要写得更细,或者需要企业侧提前提供某项配置。这里的页面数量只是说明比较方法,不代表任何实际项目规模。
有几种边界需要提前说清。企业既不给生产权限,也不提供任何可部署的验收环境时,服务商无法验证运行结果,只能交付代码和文档,运行风险由企业侧承担。企业要求服务商对上线结果负责,却不允许服务商参与上线过程时,责任和操作能力不匹配,这类要求需要在合同阶段就澄清。
还有一种情况是变更频率很高,而企业审批窗口很窄。此时按批次交付比按单次改动交付更可行,否则每次上线都要重新走一遍说明和演练,成本会超过改动本身。是否采用批次交付,取决于审批窗口的长度和改动的独立性,不取决于服务商单方面的偏好。
判断交付是否可执行,最终看一个动作:让企业侧的人在没有服务商在场的情况下完成一次上线和一次回滚。做得到,权限缺口就被流程补上了;做不到,缺的不是权限,而是交付物本身还不够具体。