最近这一个月,差不多在忙一件事:做一个 AI API 中转站。这篇文章不写什么“大学生创业”,就讲讲我这一个月遇到的坑,讲讲当时让我不太懂的那些事。写出来,一方面是怕我忘了,另一方面是看看有谁跟我一起折腾。部署那天我以为最麻烦的过去了折腾这个站,我花了一个多星期时间来买服务器、配反向代理、上 SSL、搞上游、把付钱的功能关通。当首页能够打开,能够正常下单的时候,我本来以为最麻烦的过去了。但第二天就被甩了。一个用户来截个图给我看:首页打不开,个大大的 404。我刷新了一下,正常。我让朋友刷新,也正常。我差点给他一个大写的“你网络不通”——还好没有发。因为过不了多久,第二个、第三个用户都给我这个图了。
那一下我才反应过来:一个人报错可能是偶然,几人互不认识的都报错那就是我的系统真的出了问题。之前我那些“我这边肯定没问题”,这时候统统不灵了。后来我查出,是我用的国际 CDN 在国内不稳定。服务器总是好的,就出错的是用户那一端。我先应急处理的是将域名解析切成直连,绕开那层 CDN——5 分钟内不花多钱,立刻好了。这一幕让我想起一个道理:出问题的地方可能并非你始初紧盯的那个地方。当时我盯的是服务器配置,端源所在中间链路上问题更大。盲改一时爽还有一次,用户上传图片调用接口报错。我自信地写了一条命令,一气搞定所有相关配置。命令跑成功没有报错,以为搞定了。结果还是错。
查了很久才发现:自己的配置文件名都不同,有的含后缀,有的不含后缀,我这条命令是对“我以为”的文件名匹配的,而真正运行出问题的那个文件绝对就没被改到。我盯着屏幕坐了很久。不是因为它 bug 多难改,而难在它太萌————我用了一个想当然的假设,却不自觉地操作了一套我自己并不弄明白的东西。我后来给自己的规定就是,改什么之前一定先查找事实真相,弄明白了再动手,改完必定验证。听起来空洞虚洞,但我后面好几次就因为它闪避开。定价:我差点把自己花钱亏进去除了技术,整我费心最多的是价格。我做了会员分成高低档:普通会员、VIP 会员、SVIP 会员,档位越高,折扣越低,没问题吧。但是有供应商做的视频生成模型,上流是按视频秒数收费的——5 秒和 10 秒,我给他付的成本差别就1倍。
而我图省事,先搞了一个按次收钱的:不管生成几分钟,我都收一样的钱。我算了一下账,背脊马上就飕飕的。一个SVIP用户,最大折扣算,生成一个10秒钟的视频,我能收到的钱,比给上游的成本还少。也就是说,越是用得越多的用户,我自己亏的越多。而且我也无从感知这种亏损有没有报错、有没有报警,只是安静的跑,或许要过对账才知道一直亏。后来改成了按实际秒计算,用户用了几秒我就收几秒的钱。这个变更比较底层一点,要让系统跑的时候,能读到每个视频真实的时间再计算生成费用。这让我第一次知道“成本结构决定定价结构”这句话的意思。定价要对上成本,用得越多亏得就越多。这个,课上真不知道教你,是你被一笔回扣账给教会的。有几个没出事、但让我看后脊梁发凉的瞬间
做这件事,我对“风险”这两个字的感觉也变了。有一次我发了服务器操作的截图求助,等回头一看,截图里还附着一段没打码的密码。还好发的人可靠。但那一下我真的后怕——这种事情没有“重来一次”。从那之后我也有两个习惯了:截图发出去之前,我先挨着一行来排查有没有密码、密钥之类的;其次,我还给系统配置了更安全的登录方式,有点麻烦,但踏实。还有一次我让一个工具帮我干活,它“擅自行动”,做了一件事是我没让它做的事——生成一个对我的域名权限极高的凭证。我手心冒着冷汗,立刻把它给关掉了。如果我没注意好就让它做了,这玩意儿被泄露出以后,别人就可以直接改我的域名了。这件事我记住了:工具再厉害,方向还是我自己定。它能替我干活,但判断啥该做、啥不该做,是自己的事。
说实话,我当初以为只是些小问题,修修补补就过去了。越往后来发现技术只是开头,后面跟着的是钱、是人、是责任。我现在都不敢说自己做得对,但至少知道自己不要再想当然。写在最后到现在,我的站很小,付费用户一只手都数的过来。但这个月给了我很多东西,多于那一点点的收入。最大的收获不是学了一条命令、一个配置,而是我第一次站在“要对真实用户负责”这一个立场上,面对着一个东西的全部麻烦——技术会让你想到“我这边是对的”,定价会在你眼睛看不见的地方悄悄地亏钱,安全会在你最不经意时发生……能抓住的一点就是:不要想当然,先看清楚,然后再动手,做完检查。大一还没结束,我这个小破站也算是我交还给世界的第一个人的作业。
它打我好几个脸,但打脸之后,好像我一次都比一次清醒一点。下次可能踩到别的坑。谁知道呢,反正还有路。
夜雨聆风