部署工具的一些思考:一个30岁转行程序员的深夜复盘

PR审核员
2025-12-16 19:46
阅读 221

去年十月的一个周五晚上,我在光谷软件园B2栋加班到快十点。窗外的关山大道早已车流稀疏,办公室里只剩下我和隔壁工位的小王还在对着屏幕敲代码。那天我们俩都在为一个前端项目上线焦头烂额——不是代码有问题,而是部署流程卡住了。

“这破 Jenkins 又挂了?”小王一边刷新控制台一边嘟囔,“我都重试三次了,还是卡在 npm install 这一步。”

我苦笑:“可能是 node_modules 缓存没清理干净,要不咱手动删一下再跑?”

“别啊哥,上次手动删完整个构建直接崩了,运维老张差点拿拖鞋抽我……”他瘫在椅子上,一脸生无可恋。

那一刻,我突然意识到:作为一个刚转行半年的前端新人,我对“部署”这件事的理解,还停留在“写完代码点个按钮就能上线”的天真阶段。而现实是,部署这个看似简单的词背后,藏着无数让人掉头发的技术选型、配置陷阱和协作摩擦。


从卖建材到写 JavaScript:我的转行之路

先简单自我介绍一下吧。我叫李伟,今年30岁,武汉本地人。去年年初之前,我干了整整七年建材销售——每天陪客户喝酒、算报价单、处理售后纠纷,月薪稳定在15k左右。听起来不错?但每天下班回家看着镜子里油腻疲惫的脸,我心里总有个声音在问:“就这样过一辈子吗?”

去年三月,老婆怀孕了。那天晚上我蹲在阳台抽烟,她走过来轻轻说:“要不……试试你一直想做的那件事?”

我说的是学编程。

其实大学时我学的是机械工程,但大二偷偷蹭过计算机系的课,对 JavaScript 特别着迷。后来工作忙就搁置了,但心里一直没放下。于是咬牙报了个线上培训班,白天上班,晚上九点后开始啃教程,周末泡在省图书馆。三个月后,我用 React 写了个简易的电商后台,投简历时附上了 GitHub 链接。

面试过程惨不忍烈。有家公司 HR 直接问我:“你都30了,能熬得住加班吗?”我笑着说:“我以前陪客户喝到凌晨三点,现在写代码到十二点算养生。”

最后靠着一股子“不要脸”的劲儿,加上几个还算像样的前端 demo,我拿到了光谷一家 SaaS 公司的 offer,起薪 18k。虽然比之前少了一点,但老婆支持我:“技术岗有成长性,三年后肯定翻倍。”

就这样,我成了光谷软件园里年龄最大的“应届生”。


第一次部署事故:我的“社死”现场

入职第三个月,我第一次独立负责一个前端模块的上线。功能很简单:用户管理页面的权限控制优化。我自认为代码写得干净利落,测试也过了,信心满满地提交了 MR(Merge Request)。

结果第二天上线时,整个页面白屏。

“怎么回事?本地跑得好好的啊!”我在会议室里急得满头大汗。

运维同事查日志发现:构建时用了开发环境的 API 地址,生产环境根本访问不到。原来我在 .env 文件里硬编码了 http://localhost:3001,而 CI/CD 流程没有正确注入环境变量。

项目经理老刘拍了拍我肩膀:“小李啊,前端不只是写页面,部署链路也得懂。不然写得再漂亮,上不了线等于零。”

那天晚上我失眠了。不是因为被批评,而是突然意识到:从前端开发到可运行的服务,中间隔着一条叫“部署”的鸿沟。而我,连这条河有多深都不知道。


深入部署工具:Vercel、Netlify、Jenkins 和 Docker 的实战对比

痛定思痛,我开始系统研究前端部署工具。正好公司也在评估要不要从传统的 Jenkins 迁移到更现代化的方案。我主动申请参与调研,老板居然同意了——可能看我太惨了吧(笑)。

下面是我踩坑后的真实体验,纯干货,不吹不黑:

1. Jenkins:老将虽迟但稳,就是太重

我们公司目前主力用 Jenkins。优点很明显:高度可定制,插件生态庞大,适合复杂流水线(比如要同时构建前端、后端、移动端)。

但缺点也扎心:

  • 配置全靠手写 Groovy 脚本,语法反人类;
  • 每次改 pipeline 都要重启服务;
  • 对前端友好度低,比如缓存策略、静态资源 CDN 回源这些,得自己拼凑插件。

有一次我想加个 cache node_modules,折腾三天才搞定。运维老张看不下去,直接甩给我一段脚本:“抄这个,别问原理。”

适合谁?大型企业、已有 DevOps 体系、不差人力维护。

2. Vercel:Next.js 官配,开箱即用爽到飞起

为了对比,我用自己的个人博客(用 Next.js 写的)试了 Vercel。注册账号 → 关联 GitHub → 推代码 → 自动部署,全程不到五分钟。

最惊艳的是:

  • 自动识别框架(React、Vue、Svelte 都支持);
  • 预览部署(每个 PR 自动生成临时链接,产品经理狂喜);
  • 边缘函数(Edge Functions)让 SSR 性能起飞。

而且免费额度对个人项目绰绰有余。上周我给老婆做了个婚礼照片分享站,部署完直接发链接,她惊呼:“这么快?!”

缺点?绑定太深。如果你不用它的生态(比如自定义服务器),灵活性就受限。

适合谁?个人开发者、初创团队、Next.js 重度用户。

3. Netlify:静态站点之王,表单和身份验证是彩蛋

Netlify 我也试了,和 Vercel 齐名。它对纯静态站点(比如 VuePress、Gatsby)支持极佳,还自带表单处理、身份验证(Identity)功能。

我用它部署了一个 React + TypeScript 的文档站,配合 netlify.toml 配置重定向和 headers,比 Nginx 配置直观多了。

不过构建速度偶尔抽风,国内访问有时延迟高(毕竟服务器在国外)。

适合谁?内容型网站、营销页、需要快速原型验证的团队。

4. Docker + 自建 CI:自由但痛苦

公司有个新项目尝试用 Docker 容器化部署。前端打包成静态文件,塞进 Nginx 镜像,再推到私有仓库。

听起来很酷,对吧?

但实际操作中:

  • 要写 Dockerfile(前端同学谁想碰这个?);
  • 构建上下文容易包含多余文件,镜像臃肿;
  • 本地调试和生产环境不一致,玄学问题多。

有一次我忘了 .dockerignore,把 node_modules 打包进去了,镜像从 50MB 胖到 1.2GB,运维直接在群里@我:“李伟,你是不是对‘轻量级’有什么误解?”

适合谁?有专职 DevOps、追求完全可控的中大型团队。


我的选择:务实主义者的折中方案

经过两个月折腾,我给团队提了个建议:核心业务继续用 Jenkins(历史包袱重,不敢动),新项目用 Vercel(尤其是 Next.js 的)

理由很简单:

  • 老系统稳定压倒一切;
  • 新项目追求迭代速度,Vercel 的预览部署能让产品、设计、QA 提前介入,减少返工;
  • 前端同学不用再求运维配 pipeline,自主权提升,幸福感飙升。

老板居然采纳了。上个月新项目上线,从需求到生产只用了三天——要知道以前光部署联调就得两天。


写在最后:部署不是终点,而是协作的起点

回想起那个加班的夜晚,我和小王最终还是靠手动清理缓存+重跑解决了问题。走出大楼时已近午夜,光谷的路灯把影子拉得很长。他说:“你说咱们天天写 JavaScript,结果一半时间在搞部署,值吗?”

我当时没回答。但现在我想说:值,太值了

因为部署不是“运维的事”,而是产品交付的最后一公里。作为前端开发者,如果我们只关心组件怎么写、状态怎么管,却对代码如何变成用户能用的服务一无所知,那我们只是“页面仔”,不是工程师。

转行这一年,我工资涨到了 22k,房租还是 3500(感谢武汉的房价)。但最大的收获不是钱,而是解决问题的能力——无论是写一个防抖函数,还是配一个 CI/CD 流水线。

如果你也像我一样,是从传统行业杀进编程世界的“高龄新人”,别怕。那些深夜的焦虑、会议上的尴尬、被运维嫌弃的眼神,都是成长的勋章。

前端的世界不止有 React 和 Vue,还有 Webpack、Docker、CI/CD……它们共同构成了我们交付价值的完整链条。

写好代码是基本功,让代码跑起来,才是真本事

共勉。

—— 李伟,一个在光谷软件园努力不被淘汰的30岁前端新人
2024年6月于武汉

评论 0

最热最新
暂无评论
匿名用户Lv.1
0
影响力
0
文章
0
粉丝