从一个 Gateway 和一个 Runtime,到今天的后端架构
最开始,我们这条生成链路的核心就是两个服务:一个 Gateway,一个 Runtime。
Gateway 接用户请求,处理项目相关的接口,再通过 RPC 把执行交给 Runtime。Runtime 跑 Agent,调模型和工具,维护执行状态,把过程和结果传回来。项目、素材、用户以及各种外部依赖,很多都围着这两个服务接。
当时这么做很自然。产品还在快速变化,先把一条生成链路跑通,比提前设计十几个服务更重要。两边接口对齐,部署两个应用,就能开始验证。
但今天再看,前面有 NLB 和 Nginx,有按业务划分的 Gateway,也有面向移动端的 WAP;后面有项目服务、调度、Runtime 和其他领域服务。旁边还长出了一整套环境管理、发布、监控、日志和告警。
这些东西是怎么一步步长出来的?我觉得值得讲的,是每次拆开一个边界以后,我们又必须补上什么。
服务拆开了,调用关系就要有人管理;允许不同版本同时跑,环境选择就要贯穿整条链;发布不再只有两个应用,制品、目标和运行结果就必须能对得上。 后面的研发平台,就是沿着这些问题做出来的。