开发推代码,运维别干瞪眼
每次开发团队一通操作猛如虎,提交代码、触发CI/CD流水线,然后就等着系统自动上线。可到了生产环境,服务起不来、配置对不上、端口被占用……锅甩给运维:‘你这边没准备好吧?’ 其实运维也委屈:谁让你改了数据库连接池不提前说一声?
这种场景在推行持续交付的团队里太常见了。交付节奏快了,配合没跟上,反而更容易出问题。开发觉得自动化流程走完就完事,运维却得为稳定性兜底。两边目标不同——一个求快,一个求稳——但项目要跑顺,就得找到中间那条路。
从“你发我接”到“一起搭台”
过去是开发打包交付物,运维负责部署。现在不行了。持续交付要求每小时都可能上线几次,靠人工交接文档、邮件通知那一套根本跟不上。必须把运维能力嵌入流水线。
比如,部署脚本不再由运维单独维护,而是和应用代码一起放在Git仓库里。开发改接口依赖时,顺手更新一下部署清单里的环境变量。运维则通过代码评审提意见:这个服务内存配512M够吗?日志路径是不是该统一挂到共享存储?
deploy:
image: nginx:alpine
ports:
- "80:80"
environment:
- DB_HOST=prod-cluster-01
- LOG_LEVEL=warn
volumes:
- /logs/app:/var/log/nginx像这样的配置,开发看得懂,运维也放心。出了问题能快速定位是谁提交的变更引入的。
监控不是上线后才看
很多团队上线完等用户反馈才知道服务异常。其实可以在流水线最后加一步“健康检查探测”。新版本发布后,自动调用预设接口,验证返回状态码和响应时间。
运维提前把监控规则写进配置模板。比如某个API延迟超过200ms就标为失败,流水线自动回滚。开发也不用等到半夜被报警叫起来。
这种机制就像装修完房子先通水通电试一遍,而不是让住户搬进去才发现插座没电。
权限开放不等于放飞自我
有些公司为了提速,直接给开发生产服务器root权限。结果删错配置、误杀进程的事故频发。真正的配合不是无底线放权,而是建立可控的自助通道。
运维搭建标准化发布平台,开发在界面上选版本、点发布,背后执行的是预审过的安全脚本。既能自助操作,又不会越界。类似小区快递柜——住户自己取件,但门禁系统仍由物业控制。
持续交付不是开发单方面的冲刺,而是开发和运维共同搭建一条跑得稳的传送带。谁也不用等谁,也不用怪谁。