腾讯云 Serverless 技术在「老司机」的落地实践

立即点击-> 选择您最常用的编程语言,免费体验 Serverless Demo

首先简单介绍下,我们是一个有趣、有态度的汽车新媒体分享平台,我们有自己的 APP 和网站。目前服务超过 2 亿的汽车消费者与汽车兴趣用户群体,为广大汽车用户提供专业原创出品的图文、短视频、视频、直播、音频等多元化泛汽车生活领域节目。针对汽车消费者选车、用车、玩车等核心需求,老司机会让「新司机们」选得轻松、买得安心、玩得尽兴,让「新司机们」体验乐趣,享受汽车生活。

我的团队是老司机数据智能组,负责公司 AI、大数据、推荐、搜索系统等业务和对外网站业务,团队成员包括算法工程师、数据挖掘/分析工程师、前端工程师、后端开发工程师。随着业务的快速增长,需求迭代、资源投入、运维压力也随之变得越来越紧迫。怎样提升研发效能、保障业务快速上线,提升资源利用效率、降低成本开销,减少运维的压力、又能保障系统的可靠运转,轻松应对流量洪峰,逐渐成为我们的重点诉求。

我们发现最近云计算领域非常火的一个技术方向 Serverless 有诸多优势,不仅可以节省运维人力和时间消耗,缩短开发周期,提升效率,同时提供了可靠的管理后台集成开发,测试,上线,监控等一系列功能,保证服务拆分后各个服务之间达到自动解耦自治的效果,大大降低了生产环境的部署成本,同时容量巨大的弹性伸缩性能,非常适合应对流量洪峰场景。

针对项目开发、项目维护及现有服务的迁移成本等方面的调研之后,我们最终选择了腾讯云 Serverless 技术。

我们主要在推荐系统和用户画像以及后端的相关业务上使用了 Serverless 技术方案,一些轻量级的服务根据 Serverless 的技术方案进行了部署;部分机器学习算法推理引擎分拆为算法迁移和数据迁移同时部署,部分实时数据 pipeline 的消费端进行迁移部署,部分定时批任务分批次进行迁移部署。

使用 Serverless 的技术方案后,对开发人员来说帮助挺大的,首先,团队协作模式带来了巨大改变,Serverless 的服务由开发人员自己监控管理及部署,不需要和运维人员配合服务的管理部署,包括测试/线上环境的服务更新,版本控制也更为轻松,极大地简化应用从开发到部署和维护的整个过程。其次,解决了高并发的问题,服务的响应也是极快的。最后,对众多微服务进行统一管理和调度,轻松实现服务解耦、抽象、可重用、服务自动发现和服务自治。例如:版本控制、流量控制、测试/预发布/发布环境、日志记录、监控、告警等一系列服务支持,让开发人员在项目中无论是开发还是日常管理,都起了极大的作用。

当然,和其他新技术的应用一样,Serverless 的技术方案也有一些可以优化的空间,比如:

  1. 开发人员需要修改设计去适应它,对熟悉的编程模型进行调整。
  2. 开发人员需要解决诸如规划预算、安全的问题,比如在弹性伸缩时对预启动服务时间比较久的服务不是很友好。
  3. 服务运行最大内存也限制了一些服务运用 Serverless。
  4. Serverless 内部引起的错误告警可以更加完善,可以在发生错误的第一时间告知使用者,目前我们只能根据服务接口响应时长去预防,但无法解决根本性问题。

希望未来在使用 Serverless 的时候能给使用者在各个方面有更多的选择。

对于还未开始 Serverless 的技术方案团队,我推荐可以将部分轻量化服务迁移到Serverless 进行部署的,待熟悉 Serverless 的整套流程后根据迁移成本以及应用场景去考虑是否大量的使用。当然,无论是否会在业务中使用,Serverless 的技术都是值得去学习研究的。

推荐学习腾讯云 Serverless 官方文档:

  • https://cloud.tencent.com/document/product/1154
  • https://cloud.tencent.com/document/product/583