【深度】中台始作俑者Supercell的架构演进

本文涉及的产品
云原生数据仓库AnalyticDB MySQL版,基础版 8ACU 100GB 1个月
简介: 关注公众号“达摩院首座”,了解开发者最真实生活

成立于2010年,仅凭政府借贷的30万欧元起家,从芬兰30平走出来的游戏公司Supercell在短短4年时间里凭借《海岛奇兵》《部落冲突》《卡通农场》这三款游戏获得了17亿美元的收入,第五年受马云及阿里高管团队的登门取经,第六年被恐为人后的腾讯以86亿美元收购其84.3%的股权。

腾讯下了一步好棋,在过去的十年(2010-2019)里,Supercell的《部落冲突》和《皇室战争》在全球手游总收入排行榜上分别位列第一和第十(农药第七)。当然错失先机的阿里也并非一无所获,从Supercell高效的组织模式与技术架构,阿里改组了事业群编制,并提出出了“大中台,小前台”的架构,一直热门至今。

回头来看Supercell这家公司,从其各款游戏的画风来看,基本是由一套统一的3D模型加工而成。(下图从左至右:部落冲突、皇室战争、海岛奇兵)

1.jpg
当然这完全可以理解,毕竟画风就是游戏公司的招牌,换画风相当于放弃既有用户群体。另一方面也最大程度减小了美工团队的规模和工作量,我们可以看到目前250人的Supercell中每个游戏(共5款游戏)平均只有20人的团队运维,其中还包括3名服务器开发人员。

详细来说,Supercell将组织按产品线分割,而非传统的职能分割,管理以自底向上的方式,其创始人埃卡·潘纳宁在接受采访时就表示希望成为全球最“弱”的CEO,所有决定由游戏团队来做,毕竟研发者才是最接近玩家的,他们比任何人都更清楚玩家的需求。扁平化的管理也使得开发流程更加高效,敏捷的不仅是开发团队,还包括整个组织。

2.png

Supercell没有单独的运维团队,每个游戏团队有自己独立的AWS账号(Supercell的IT轻资产化,所有应用程序都搭建在AWS EC2上),每个团队各自应付数以亿计的活跃用户、高达400万次的峰值并发带来的应用压力,以及AWS EC2上成百到数千的实例和跨地域不同数量的数据库带来的运维压力。

解决了组织架构,为满足企业在不同时期所面临的外部并发,技术架构也必须是弹性扩展的,为此Supercell在成立第二年(2011年)就完成了应用的微服务化与数据库层的切片。甚至来说Supercell的微服务更轻量级,所有的游戏都复用一套网关代理、主页模块、匹配模块和战斗模块。整个组织使用一套高可用的组件库,一种开发语言,一个团队即One Repo,One Language,One Team。上过阿里中台课程的同学听着是不是很熟悉?

3.png

微服务化可以方便地对任何一个功能模块进行横向扩展,作为一款游戏来说,玩家的状态信息是实时变化的,因此战斗模块中的所有组件都需要更新用户状态,全局的Zookeeper服务可以保证各组件间的用户状态保持一致。用户的所有状态更新会通过事件的形式存放在持久数据湖中,关于事件驱动可查看小编之前的文章。以下是玩家等级提升的事件样例。

4.png

数据切片是将海量的用户数据分地域存储,每个地域的数据保持多个副本。类似于对数据的行进行拆分,但是不同地区数据的Schema是一致的。在数据量不断增大时,只需增加切片数量来应对。

5.jpg

2012年,Supercell采用了统一的事件收集器,用户产生的所有游戏内数据通过REST API传递到AWS上的事件接收器,再以CSV的形式存放到Amazon S3存储中。

6.png
随后的一年,一些团队发现S3中的数据质量堪忧,为提升数据的精度,在2013年,Supercell的技术架构上加入了服务端事件收集器作为数据质量校验的补充事件源,使用UDP通讯协议的目的是减少交互,最小化对游戏主服务器的影响。

7.png

事件管道的好处是架构简单并且比传统数据库更能体现细节,毕竟传统数据库只展示数据的最终状态,事件可以帮助查看达到这一状态的完整过程。其弊端就是无法提供实时访问,稍不注意就会磁盘写满导致数据溢出,并且Amazon S3是消费数据的唯一渠道。

2013年下半年,Supercell终于考虑添加流式管道(Streaming Pipeline)作为数据缓冲层,由于之前和AWS的良好合作,这次的流管产品多数团队也是投票给了Kinesis,相对于Kafka,它的运维更加简单,体验更好(天生与AWS管理界面集成),后续可以对接各种事件消费者,不论是实时查询面板,第三方集成,实时分析,还是通过事件集成入库S3。

8.png

这套架构的优势在于即便在系统故障时数据仍是安全的;访问数据更实时以及多通路的数据消费/订阅,这有点像之前小编介绍的Uber数据架构,只是streaming的产品换了。

9.jpg

熟悉Kafka的人都知道,在同一个消息分区(Partition)中,事件的时序是有保障的,但是为了运维方便加之对游戏软件对时序并不敏感,Supercell采取了随机分区的方式在不同数据切片上的负载均衡。
2013年同期在数仓设计上,Supercell使用Azkaban批量工作流任务调度器将CSV数据加载到AWS的Vertica数仓中,数据科学家通过开发接口对历史数据进行分析,形成一些数据服务,对内或对外输出。
10.png

这个架构在今后几年里遇到了新的瓶颈。首先Vertica集群的负载达到的峰值,第二在ETL的时候查询会变得缓慢,第三数仓的扩容花费巨大,第四存储与计算耦合紧密,第五再大的宽表数据库都会有列的极限。注意到这些问题之后,Supercell致力于:

  • 限制Vertica的数据存储量;
  • 将存储与计算资源切割;
  • 将ETL流程与查询流程切割;
  • 维护单一来源的置信数据;
  • 利用云的便利性优化资源使用。

到2018年,公司决定将Amazon S3作为单一置信来源,以Parquet列表的形式存放数据,将Amazon EMR用作ETL转存目标,原来的Vertica只用来存放计算结果(例如账号、统计数据和KPI)而不是原始数据。
11.jpg

这样一来,Azkaban还是控制ETL流程,只是这次加载到Amazon EMR托管集群平台,然后以多张Parquet列表的形式存放到Amazon S3中,因为公司已经对数据行数做了切片,使用列表存储更能提升存储效率。

分布式的S3作为唯一置信源,消费使用与列表更加契合的Athena作为查询工具,数据科学家可以到源数仓EMR中查看实时数据并做分析,包装成实时数据产品,也可以通过界面工具到置信源S3或结果数仓Vertica中查看OLAP大数据并进行建模分析,生成数据产品。
12.png

在2018年完成改造之后,由于EMR的延展性,可以瞬间扩展出大量的数据集就很好地解决了列宽的问题,并且有效地将存储与计算分离(EMR复制计算,S3负责存储)。在ETL时可以通过计划任务扩建一个集群跑ETL,跑完之后释放资源。而且EMR的环境对于数据科学团队来说更加友好。

现在Supercell已被腾讯收购,相信Pony不只是为了代理它的海岛奇兵,腾讯云一定也在酝酿一个“中台计划”。

相关实践学习
AnalyticDB MySQL海量数据秒级分析体验
快速上手AnalyticDB MySQL,玩转SQL开发等功能!本教程介绍如何在AnalyticDB MySQL中,一键加载内置数据集,并基于自动生成的查询脚本,运行复杂查询语句,秒级生成查询结果。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
存储 敏捷开发 缓存
中台架构介绍和应用价值
中台架构介绍和应用价值
547 0
|
6月前
|
缓存 负载均衡 架构师
阿里资深架构师钟华曰:中台战略思想与架构实战;含内部实施手册
最近在读一本书,叫做《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》,在写此文时本书还没有看完,因为担心如果把书全部看完后再来写这篇文章,很多精彩的内容可能已经忘记了,所以中途先写一篇来分享给大家。
|
SQL 架构师 算法
一口气说透中台--给你架构师的视角
一口气说透中台--给你架构师的视角
|
人工智能 运维 Kubernetes
带你读《云原生架构白皮书2022新版》——云原生技术中台 CNStack 产品家族
带你读《云原生架构白皮书2022新版》——云原生技术中台 CNStack 产品家族
453 10
|
缓存 负载均衡 架构师
阿里资深架构师钟华曰:中台战略思想与架构实战;含内部实施手册
最近在读一本书,叫做《企业IT架构转型之道:阿里巴巴中台战略思想与架构实战》,在写此文时本书还没有看完,因为担心如果把书全部看完后再来写这篇文章,很多精彩的内容可能已经忘记了,所以中途先写一篇来分享给大家。
|
存储 数据采集 监控
我为什么要搭建的数字中台而不仅是单一中台架构
数字中台在运营过程中需要关注监控和维护、数据更新和迭代、服务管理和支持、数据治理和隐私保护、市场推广和宣传以及业务拓展和合作等多个方面,以确保数字中台的稳定性、安全性和发展性。
|
机器学习/深度学习 存储 运维
我对目前中台架构使用的的思考理解
我需要的是解决我的问题,而中台架构并不代表说它是一个死的架构,这个可以根据过程不断的调整和优化的,这个概念和架构的提出,会更加明确搭建和建设的思路和方向,但是怎么实现,需要架构师根据团队来进行优化处理。 在这个过程中的感觉好比别人送给你一个屠龙刀,会使用的人可以扫四方,但是不会使用的,可能会惹火上身,伤到自己,甚至会发现,还不会以前菜刀方便,关键是怎么使用。
|
SQL 人工智能 运维
我在AIGC和数字中台方面的架构升级设计
整个研究的目标点是为了针对于数字中台层级的超级自动化,这个是在继Ops架构体系之后的一个突破点,前两年在Ops架构突发和成熟,比如 DevOps/GitOps/DataOps/AIOps等体系(这里不涉及AIOps架构),在某个方面已经具备一定的自动能力,进而发展出数字中台的基础设施能力。
|
数据可视化 IDE 开发工具
中台架构建模难?BizWorks来助力
BizWorks建模平台是BizWorks基于领域驱动设计方法论的模型设计平台,提供了对业务域、领域模型、数据模型等可视化建模能力,实现了建模过程的可视化、在线化; 同时模型作为业务资产的重要载体,具备体系化联动和持续迭代演进的能力。
366 0
《全渠道电商中台的搭建——基于云架构的电商解决方案》电子版地址
全渠道电商中台的搭建——基于云架构的电商解决方案
107 0
《全渠道电商中台的搭建——基于云架构的电商解决方案》电子版地址