2031年我在社区旧物站,靠Node.js接住了半城人的念想

凌晨两点的滨江出租屋走廊,老陈攥着半罐冰可乐盯着屏幕上跳红的报错。

鼠标垫是2018年Node.js全球开发者大会领的,边角磨得发毛,上面印的Ryan Dahl的侧脸都快看不清了。

可乐早就温了。

他今天本来想给旧物站加个“物品溯源”的小功能——就是能看到每一样东西在多少个邻居家转过手,结果写了一半,接口报了个跨域的错,折腾了快四十分钟才找到问题出在Nginx的配置文件里。

当初选Node.js,纯粹是被生活逼的

2027年他从待了十二年的电商部门离职那天,HR把离职证明递给他的时候,语气客气得像在招待客户:“陈老师,我们也没办法,现在团队要做技术栈升级,要招更年轻的工程师。”

他背着电脑包走出写字楼,六月的太阳晒得后颈发疼,兜里的银行卡余额算上遣散费,刚够付半年的房租。一开始他还投了几十份简历,要么石沉大海,要么面到最后HR问他“能不能接受996,能不能比年轻小伙子多扛三倍的活”,他笑着说不能,转头就把简历关了。

后来他在住的小区租了个十平米的底商,本来想做个打印店,结果发现小区里好多邻居扔东西心疼:刚买了半年的空气炸锅因为换工作要去别的城市带不走,小孩的绘本看了俩月就翻腻了,老人家里堆的旧藤椅占地方又舍不得卖。他干脆改了主意,做个免费的旧物共享小站,谁有闲置就挂上来,邻居之间自提,不收一分钱手续费。

一开始他找外包问报价,对方报八千,说要给他做个带用户系统、上传功能、搜索功能的小网站,半个月交付。他当时兜里只剩交完房租的三万块,咬咬牙没舍得,干脆自己写代码。现在想想,当时要是真掏了那八千块,说不定现在早就把小站关了。

选技术栈的时候他根本没纠结。之前在公司写了那么多年JavaScript,闭着眼都能写几行,何必重新学新的?更重要的是他那台用了五年的笔记本,16G内存,之前试过搭个Java的后台框架,光框架启动就占了8个G,开个VS Code都卡得掉帧。换成Node.js就完全不一样,单线程非阻塞I/O的特性,跑个带数据库的小站,内存占用连1G都不到。

谁懂啊!他当时看着任务管理器里平得像直线的内存曲线,差点对着屏幕给Ryan Dahl鞠个躬。就这破配置,搁别的重型技术栈,他连个本地数据库都不敢往上面存。

2031年社区底商程序员工作室深夜亮灯的窗
2031年社区底商程序员工作室深夜亮灯的窗

上线的第一个月,整个站点只有不到两百个注册用户,都是同小区的邻居,挂的东西大多是闲置的衣架、半盒打印纸、小孩穿小的运动鞋。他那时候每天晚上就坐在铺面里,盯着后台的日志看,有人上传新物品他就手动审核一下,怕有人发广告。

第三个月的那个周六,他正蹲在铺面门口给张阿姨递一台闲置的落地扇,手机上的告警短信炸了。他以为服务器被人攻击了,手忙脚乱跑回电脑前,才发现旁边的老小区要拆迁,大家刷到小红书的笔记,一窝蜂涌进来找搬家纸箱、折叠梯、旧窗帘,一晚上涌进来两千多访问。

他当时心脏都快跳出来了。毕竟之前在大厂的时候,这种流量峰值至少得叫三个运维同事爬起来扩容,不然系统铁定崩。结果他盯着后台的监控看了十分钟,Node.js的进程稳得像一块老石头,CPU占用连15%都没到,连个超时的请求都没有。

后来翻日志他才反应过来,这些进来的用户根本不是来刷复杂功能的,就是点进来搜个“纸箱”,看两个结果,找到联系方式就走,全是轻量的短请求。Node.js本来就是为这种场景生的——没有复杂的事务,没有阻塞的长连接,处理这种零散的访问,比那些动辄要占几个G内存的重型框架高效太多。

没人告诉他,Node.js能接住比代码重得多的东西

之前在大厂的时候,老陈总觉得代码就是代码,是要算KPI的,是要压测QPS的,是要和别的团队比性能的。他写了十几年代码,从来没想过这些冷冰冰的接口,能接住这么多带着温度的细碎念想。

有个刚毕业的小姑娘,把自己考研用的全套专业书挂上来,备注写着“留给下一个在出租屋熬夜的人,不要钱,看到书里的笔记别嫌我乱涂”。

有个住在三楼的老爷爷,把老伴生前织的十几条毛线围巾都挂上来,说“我眼睛花了,织不动了,谁围着暖和,就当她还在惦记着人”。

有个刚离婚的小伙子,把之前准备结婚用的一套玻璃杯挂上来,说“杯子是成对买的,我用不上了,希望拿到的人能遇到愿意和他碰杯的人”。

老陈看着这些留言,突然觉得之前想的那个“只是个旧物网站”的想法太单薄了。他花了一个下午,给系统加了个小功能:30秒语音留言。不用打字,每个物品下面可以录一段语音,想留什么就留什么,哪怕是哼半首歌也行。

这个功能他写得特别顺:用Express搭个简单的接口,接个免费的云存储SDK,前端加个录音的按钮,一下午就上线了。之前在大厂的时候,类似的留言功能要走三个月的流程,产品要改八版需求,测试要写几百条用例,安全团队要审核会不会有违规内容,最后上线的功能连个表情符号都不让加。现在他自己说了算,想加什么就加什么。

社区旧物共享平台用户留的30秒语音留言界面
社区旧物共享平台用户留的30秒语音留言界面

上次他翻后台的录音,听到有个小伙子给自己挂的旧吉他录了段《晴天》,最后加了一句“加班到凌晨的时候就听一遍,就不想裸辞了”。老陈戴着耳机听完,突然鼻子有点酸。

他之前总觉得技术是有高低的,架构是有优劣的,那些大厂的技术栈才是最厉害的。结果现在他用最朴素的Node.js写的小站,跑了四年,累计有十几万注册用户,接的最大的一次流量是去年杭州办亚运会,大家把闲置的运动器材、观赛的应援旗、带logo的水杯挂上来交换,那一天的访问量是十二万。他的服务器还是当年花三百块钱买的最低配云主机,Node.js进程的CPU占用连30%都没超过。

他现在每天晚上还是会留半小时,翻一翻用户的留言。上周看到有人说,拿到的那本考研书里夹了张拍立得,是个笑得很灿烂的女生,现在两个人已经约着一起去爬北高峰了。

那些关于Node.js的偏见,早就在烟火气里碎完了

那些关于Node.js的偏见,早就在烟火气里碎完了
那些关于Node.js的偏见,早就在烟火气里碎完了

老陈还记得之前在大厂开架构会的时候,有个资深架构师拍着桌子说,Node.js就是个写脚本的玩具,根本上不了生产环境,单线程的模型遇到高并发迟早要崩。那时候他刚工作没几年,端着杯子给架构师倒了半杯茶,连句话都不敢插。

现在他偶尔会在开发者论坛上看到类似的争论:有人说Node.js已经过时了,现在大家都用Go写后端,用Rust写高性能服务;有人说JavaScript太松散,写复杂项目容易出问题。他每次看到都只是笑笑,懒得争辩。

上个月他去参加线下的开发者聚会,有个刚毕业的小孩端着可乐过来问他:“哥,我现在学Node.js还有前途吗?会不会过两年就被淘汰了?”

老陈给他递了串烤筋皮,油滴在小孩的笔记本电脑包上,他都没在意。他说:“前途这东西,从来不是看技术栈火不火,是看你拿它做的东西,有没有人真的需要。”

他见过有人用Node.js写了个帮老人查医保的小工具,跑在社区的旧平板上,每天有上百个老人用;见过有人用Node.js写了个自动给流浪猫投喂点补粮提醒的脚本,比那些动辄几百万的公益项目还实用。这些东西从来不是什么能拿出去吹的大厂项目,没有漂亮的架构图,没有亮眼的QPS数据,但是真真切切在帮人解决问题。

风从铺面的门缝钻进来,吹得桌上的代码笔记翻了两页。老陈抬头看了眼玻璃门,刚才那个要换拼图的小朋友已经抱着乐高模型站在门口了,书包上挂着个奥特曼的挂件,一蹦一跳的。

他转回屏幕,后台的日志还在一行行跳,绿色的字体安安静静的,没有报错,没有告警。那个磨破边的Node.js纪念鼠标垫,就安安静静躺在键盘旁边,像个陪了他很多年的老伙计。

他突然想起2016年第一次在公司的服务器上跑通第一行Node.js代码的时候,根本没想过十年后自己会靠这行代码,在一个满是烟火气的社区底商,接住这么多和自己一样,在城市里飘着的人的细碎念想。

至于那些关于技术的争论,那些关于栈的高低的偏见,就让它们留在写字楼的会议室里吧。

作者|大讲堂

排版|大讲堂

审核|乐乐

免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。如有侵权请联系删除。
文章名称:2031年我在社区旧物站,靠Node.js接住了半城人的念想
文章链接:https://www.lfdjt.com/info_23_25678.html