快手港股上市:下沉市场的短视频帝国

快手今天港股上市了,市值直接冲到了万亿。我盯着盘前数据,脑子里想的却是另一件事——我他妈还在手动给客户部署环境。团队里那三个后端,一个说要用 Python 3.7,另一个项目死活只认 3.6,第三个测试环境跑得好好的,一上生产就各种库版本冲突。上周为了一个客户的微信小程序后台部署,三个人在阿里云上折腾到凌晨三点,就为了那点该死的依赖。我坐在中间,看着他们互相甩锅,感觉不是在管理一个团队,是在管理一个随时会炸的炸药库。

钱是赚了点,流水账面上好看。但自由呢?时间呢?全搭进去了。每个客户都是一座孤岛,环境、配置、数据库,没有一样是能复用的。我赚的不是产品钱,是卖血汗的运维苦力钱。这种模式,规模越大死得越快。快手能靠算法和内容工厂横扫下沉市场,我他妈连自己团队里的代码环境都统一不了。

必须容器化。就现在。不能再拖了。

上周我让一个技术去研究 Docker,他给我交上来一份二十页的文档,全是概念,屁用没有。我把他叫过来,当着他面打开终端。我说,你看好,我们不要理论。第一个目标:把现在最赚钱的那个知识付费小程序的 Django 后端,打包成一个镜像。FROM python:3.6-slim,WORKDIR /app,COPY requirements.txt,RUN pip install -r requirements.txt –no-cache-dir –index-url https://pypi.douban.com/simple。就这几行,Dockerfile 写完了。然后 docker build -t knowledge-pay:latest .,再 docker run -d -p 8000:8000 knowledge-pay。整个过程,三分钟。他那个后端上次配环境配了一下午。

但这只是单机。我要的是“分布式超级个体”。意思就是,我,一个人,要能像操作一台机器一样操作十台、二十台 VPS。核心是 Docker Compose 和一套编排逻辑。我在一台干净的 Ubuntu VPS 上,先装 Docker 和 Docker Compose。然后把整个项目目录,包括 Django 代码、Nginx 配置、MySQL 初始化脚本,全部扔进去。写一个 docker-compose.yml,定义三个 service:web(Django + Gunicorn)、nginx(反向代理)、db(MySQL)。关键在这里,所有环境变量,比如数据库密码、SECRET_KEY、微信支付的 API KEY,全部通过 .env 文件注入,这个文件永远不进版本库。

这样,我本地测试好的整套东西,就是一个完整的、密封的“罐头”。我把它打包成一个 tar 包,或者直接推到私有的 Docker Registry。接下来就是魔法时刻了:我新开一台腾讯云轻量应用服务器,2核4G,一个月也就几十块钱。我 SSH 连上去,第一件事就是安装 Docker 和 Docker Compose,然后把我的项目目录 scp 过去,或者从 Registry pull 镜像。最后,就在那台新机器上,执行唯一的一条命令:docker-compose up -d。五分钟,一个包含完整后端、数据库、反向代理的生产环境,就在一台全新的、干净的机器上跑起来了。

这解决了几个要命的问题。第一,环境一致性。从我的 MacBook Pro 到测试机再到任何一家云厂商的生产机,环境100%一样,因为跑在同一个镜像里。第二,横向扩展。如果某个客户流量突然爆了(虽然目前还没发生过),我只需要再买一台机器,把同样的“罐头”部署上去,然后用 Nginx 做个负载均衡就行,代码和配置零修改。第三,也是最重要的,把“部署”这个动作,从一个需要专业知识、容易出错的“项目”,变成了一个我甚至可以用脚本自动化完成的“任务”。我把这个流程写成了一个 Bash 脚本,叫 deploy.sh,里面无非就是 ssh、scp、几条 docker 命令。

我现在手头维护着八个客户的线上项目,分布在阿里云、腾讯云、AWS Lightsail 上。以前每次更新,都是噩梦。现在,我改完代码,本地 docker-compose 测试通过,然后对每个客户,我只需要运行 ./deploy.sh customer_name。脚本会自动找到对应的服务器IP、密钥、项目路径,完成全部更新和重启。我把这个脚本放在了加密的网盘里,这就是我的“核按钮”。

快手的帝国建立在算法对人性精准的拿捏上,我的“帝国”,如果这也能算帝国的话,就建立在这套简陋但有效的容器化部署流程上。它让我从无休止的、琐碎的、令人崩溃的交付泥潭里,稍微把脖子抬起来了一点。我仍然不自由,团队管理的破事一件没少,但至少,在技术的层面,我重新获得了一种确定性的控制感。这种感觉,在2020年这个混乱的年份,比什么都珍贵。

我知道这玩意在真正的运维工程师眼里就是玩具。没有 Kubernetes,没有 CI/CD 流水线,没有监控告警。但对我这个阶段,这个小团队,这些中小客户,它够用了。它让我能把精力,从“让代码跑起来”这种低级问题,稍微腾出一点,去思考“接下来做什么”这种真正重要的问题。虽然,我大部分时间思考的结果依然是焦虑。

© 版权声明
THE END
喜欢就支持一下吧
点赞74 分享