Serverless应用引擎SAE(Serverless App Engine)作为一站式应用托管平台,核心价值是给用户提供全应用生命周期管理、微服务治理、弹性免运维的K8s运行环境。本文介绍SAE为小迈科技提升微服务的研发效能的成功案例。

背景信息

小迈科技于2015年01月成立,是一家以数字化领先为优势,实现业务高质量自增长的移动互联网科技公司。小迈科技始终坚持以用户价值为中心,以数据为驱动,为用户开发丰富的工具应用、休闲游戏、益智、运动等系列的移动应用。累计开发400余款产品,累计用户下载安装量破七亿。小迈以成为全球领先开发者增长服务平台为愿景及使命,希望通过标准化的产品和服务赋能,为开发者提供全链路解决方案,以技术+服务全方位保驾护航,助燃产品持续增长,帮助工具和休闲游戏的开发者提升产品的成功率。

小迈内部实行扁平化的管理风格,每个业务团队都可以独立选择采用更适合自己的技术栈和基础架构,因此,内部出现了ECS、K8s、SAE三种不同计算平台共存的局面,而且都在使用微服务架构。不同的计算平台都有自己独特的优势和价值,同时也面临各自的挑战,目前主要是游戏团队在使用SAE平台。

业务痛点

小迈科技的游戏团队面临着以下痛点。针对这些痛点,SAE逐一攻破。
业务痛点为什么选择SAE
对大部分休闲类游戏而言,游戏拥有自己的生命周期,在该生命周期内,游戏本身会出现明显的波峰波谷。例如,白天流量比晚上流量大得多,白天流量又集中在几个时间点,而晚上八点是业务的最高峰,凌晨两点到六点几乎没有流量,但是又不能停服。另外,在游戏刚上线时,每次运营活动又会吸引大量的新客户涌入,需要后台服务能够快速响应流量的变化,所以业务方就期望能有一种自动弹性伸缩的计算平台。SAE拥有丰富的弹性策略,支持突发场景下的秒级弹性伸缩,在大流量冲击下,能够稳健保障用户业务SLA。此外,SAE提供镜像预热策略、基于DADI的镜像加速方案、Java应用冷启动加速、Java应用运行时多线程等提效方案,全方位提升部署、弹性和运行多环节的效率。
大部分休闲类游戏都是无状态的,还可以拆分成不同的服务模块来提升服务性能和质量,例如聊天、红包、背包、升级、用户数据获取、视频处理、广告投放等,适合采用微服务架构来部署。SAE支持Spring Cloud、Dubbo、HSF和Web等主流应用,同时深度集成MSE,提供完整服务治理能力。SAE支持代码包和镜像等多种部署方式,您无需掌握Docker镜像和K8s的底层细节,低门槛拥抱容器技术,快速上手使用功能服务。
游戏在上线期间,会迭代增加很多新的功能模块,需要频繁地发布升级。应用创建成功后,可以通过灰度、分批发布不断迭代升级;如果升级的版本出现问题,支持一键回滚至所需的历史版本,保障应用的安全性与稳定性。同时,SAE无缝集成的ARMS产品,具有白屏化应用监控和诊断能力,对于线上问题的分析、排查、预警和解决,提供强有力支持,节省大量的排查时间。
通过ECS或者K8s自建虽然能够满足上述痛点,但是会给业务团队带来大量的运维成本,而且很难平衡成本的投入。尤其是在弹性方面,自建弹性效率很难满足流量的快速变化,往往还是需要冗余大量的资源。您可以聚焦核心业务,专注于业务的逻辑开发,无需考虑底层资源,例如集群可用性、容量和性能等方面的问题。同时,SAE采用一站式、全托管的管理界面,为应用和任务提供开箱即用的生命周期管理、可观测等功能,帮您快速排查故障。此外,部署时采用多vSwitch部署,可以满足跨可用区的容灾。

解决方案

小迈科技的方案逻辑图如下所示。dg_case_studies_xmiles

SAE能够免运维底层基础设施,例如IaaS、K8s、微服务组件等,并且深度集成MSE,提供了完整的服务治理能力,支持白屏化配置微服务的健康检查、优雅上下线、配置管理、灰度发布、一键回滚等功能。小迈的游戏团队主要采用Spring Cloud和Dubbo技术栈,针对存量的游戏服务,可以采用JAR包部署的方式,将应用平滑迁移到SAE,通过命名空间与业务类型划分应用。同时,创建应用时选择多可用区,就能达到跨可用区的容灾。业务运行过程中,采用SAE丰富的弹性策略,能够从容应对游戏行业具有的突发流量和典型周期性流量,提升运维效率并降低成本。SAE内置的基础监控和ARMS业务监控,通过配置告警规则,有效帮助运维人员快速检测和修复业务告警。

使用效果

小迈科技的游戏团队只需重点关注业务逻辑,将资源层面托管至SAE平台后,简化了运维复杂度。另外,为应对业务的快速迭代,小迈科技采用Jenkins,封装了SAE的API接口,实现了CI/CD能力,加速了服务的上线速度。对比原来的弹性效率和部署效率,整体研发效能得到大幅度提升,弹性速度从分钟级缩短到了秒级,新项目上线速度从天级缩短到了分钟级。