TapTap 算法平台的 Serverless 探索之路
Serverless 在构建应用上为 TapTap 节省了大量的运维与开发人力,在基本没投入基建人力的情况下,直接把我们非常原始的基建,或者说是资源管理水平拉到了业界相对前沿的标准。最直观的数据是,仅投入了个位数的人力,就可以为TapTap整个搜广推相关的所有业务提供全套AI和大数据方面的支持。
——陈欣昊 TapTap/IEM/AI平台负责人
业务背景
在基建升级方案的需求上:
- 能大幅提升开发运维效率
- 以较低的人力成本来满足业务需求
- 服务足够可靠,能够具备良好的性能
- 因为 TapTap 工程目前主要是以 Go 语言为主,所以在后续基建升级上需要对 Go 有良好的支持。
方案对比
而 Serverless 应用引擎 SAE 在我们看来类似于功能更丰富的、提供了全套微服务能力的增强版 K8s,可以极大降低维护成本,并做到真正的开箱即用。这个就比较适合做微服务改造,把原先在 ECS 上的旧服务直接迁移上来,可以在不投入运维人力的情况下获得一套完整的容器化运维方案。
业务实践
函数计算 FC
- 通过 OSS 触发的全自动模型部署/小时级更新服务。: 算法模型 -> OSS -> FC -> EAS
- 通过 HTTP 触发的模型实验管理平台(WEB 服务): web服务 -> FC -> RDS
- 通过 Kafka 触发新内容 NLP 处理/解析服务: kafka -> FC
- 每周/每日定时统计资源消费: 定时触发器 -> FC
Serverless 应用引擎 SAE
业务价值
- 简单运维,省心省力:开发可以轻松搞定应用开发、部署、管理全流程,让自己更专注于业务,也大大节省了运维的投入和成本。
- 不停机发布 +分钟级上线:SAE 支持灰度发布、滚动发布的能力,还提供了较为完善的Open API,可以集成到 Git 中快速部署,使 TapTap 的服务具备了分钟级发版的能力,这个对于新业务尤其具有吸引力。
- 秒级弹性缩扩容:SAE 支持配置像 CPU、内存、QPS、RT、定时等不同维度指标的扩缩策略,可以帮助提升资源利用率。尤其是业务规模大了之后,通过配置更加精细的弹性策略,可以显著降低机器成本。
- 多语言微服务能力:SAE 提供了 PHP、Python、GO 等多种运行时,并且基于 K8s Service 多语言服务注册发现,实现了 Go 语言低成本微服务化。