随着网络世界的迅猛发展,“游戏”进入了前所未有的蓬勃发展期。根据Newzoo数据显示,2019年全球游戏市场规模约为1521亿美元,2015-2019年复合增长率达到13.4%,预计2020年全球游戏市场规模将进一步增加到1960亿美元。
与此同时,游戏行业竞争日益激烈,游戏的种类与内容也越来越丰富多样化,要想在激烈的竞争中持续扩容并非易事。仅仅在“数据”层面上就面临着不少难题,例如,重复性工作与资源的浪费,不同游戏开发团队对数据与系统的重复开发,使得开发出一款新游戏时间周期过长;数据孤岛造成业务沟通壁垒,业务部门想要获取一份全局的信息基本要延迟至几天,最终导致玩家快速变化的需求无法及时响应;数据分析难以形成有效闭环,无法利用数据作出有价值的分析结果与全面的反馈……
遇到“数据”方面的难题,尤其是面对“重复性工作”“资源浪费”“数据孤岛”等问题,其实不难想到用“数据中台”来解决上述困境。毕竟马云当年就是受到了芬兰游戏公司Supercell的启示,才将“中台”引入国内。
“数据中台”的魅力之大,不仅游戏公司,很多传统企业、中小公司也对其跃跃欲试。但往往因一开始就对它没有全面的了解,亦或是没有得到清晰的规划,导致实际投入中遇到不少难题,最终草草收场。
其实不少人有这样的疑问:
为什么要建设数据中台?
数据中台如何建设?
数据中台能够为企业带来哪些价值?
从0开始落地,有什么可参考的方法论?有没有一线的真实案例?
为解决这些棘手的问题,带领大家攻克数据中台建设中的种种难点,智领云联合创始人&CTO,前EA(艺电)大数据平台高级工程经理宋文欣博士,特别以著名游戏公司EA(艺电)为例,详细的讲述了EA构建数据中台的实战过程,从而一次性讲透数据中台在游戏行业的应用。
EA经久不衰的秘诀
众所周知,EA是一家著名的游戏公司,闻名遐迩的《FIFA》、《战地》、《麦登橄榄球》系列等千、百万级销量的游戏大作均出自EA之手。其游戏家族分为主机/PC平台游戏和移动游戏两部分,主要的游戏大类是体育类游戏,例如为EA贡献营收最多的《FIFA》系列,美国最热门的体育游戏《麦登橄榄球》,久负盛名的战斗射击类游戏《战地》系列,以及拥有20年历史仍经久不衰的《模拟人生》系列;在移动端的游戏就更多了,比较知名的《植物大战僵尸》《宝石迷阵》系列都是玩家爱不释手的游戏。
凭借数不胜数的游戏大作,口耳相传的好口碑,灵气十足的作品以及超强的游戏体验,让不少玩家提到最强游戏公司的时候,第一个就会想到它,EA至今也仍然是最赚钱,手握IP最多,历史最悠久的游戏公司之一。那么,在如此多种类的游戏中EA是如何做到照顾到每位玩家的体验,又能够不断创新呢?接下来就让我们一探究竟。
图:游戏家族
宋文欣博士首先以一名典型的EA游戏玩家在EA系统中的历程,阐述了EA是如何利用数据与玩家进行交互的。
图:游戏玩家经历
在游戏推广阶段,EA会通过Facebook广告或智能推荐,推送电子邮件给之前玩过EA游戏的玩家,以获取对该游戏感兴趣的游戏玩家;当玩家进入游戏以后,数据还有几种重要的体现,一是游戏中能为公司带来很大利润的广告,叫做In-game Banner,被要求做到既能达到广告效果又不干扰游戏体验;另外,Personalized features 个性化配置,能够根据玩家习惯、经历与水平动态调整难度与历程,从而让玩家能够获得和自己相匹配的游戏难度和剧情设置;最后则是Customer Experience客服体验,通过历史用户行为分析,进行更多为用户着想的设计以确保玩家获得最好的游戏体验。
通过EA游戏玩家在游戏前、游戏中、离开游戏后的整个过程,我们可以大致看到游戏玩家与EA数据部门的交互活动。
了解完EA游戏玩家与数据部门的交互后,我们再来看看EA庞大的游戏数据,近百种游戏品类分布在各种平台之上,仅EA的几款热门游戏的数据量就十分惊人:
《FIFA》,在2019年,各平台玩家达到4500万名,玩家们每90分钟完成5万场比赛,3百多万脚射门,接近两百万个扑救,99万个进球;
射击类游戏《战地 battlefied 1》,2017年有超过2100万的游戏玩家,每天大约产生1TB的数据;
《模拟人生》系列,在全球有超过两千万的游戏玩家,Sims系列游戏20年间在PC上一共卖出两亿份;
去年大火的《Apex英雄》,2019年2月发布8小时后,玩家数达到100万,72小时内,达到1000万,同时在线玩家峰值突破200万,最终全球玩家数约达7千万。
面对如此庞大的数据量,EA早期的数据分析状态是什么样的?从图中可以看出,EA早期的数据分析状态是一个典型的数据孤岛模式,不同的游戏部门、不同平台的数据分析都有一套自己的数据流水线。因为几乎无法将这些跨游戏平台的数据、跨不同游戏的数据以及跨部门的数据,整合在一起来分析,使得EA的业务部门要获取一个全局的信息,其延时基本达到一到三天,造成的问题除了不能及时的反映该游戏的经营状况,对客户提出的问题也不能及时的响应,游戏玩家体验差,加之游戏故障频发,导致用户逐渐减少。此时,当务之急是如何摆脱早期这种滞后的数字化状态。
图:EA早期数据分析的状态
为应对以上困境,EA数字平台初步形成,集中的数据平台使得所有不同来源的数据,汇总在以Hadoop为基础的数据平台之上,并通过统一的Data Warehouse、统一的算法支撑不同分析、推荐、算法报表等,数据延迟从原来的几天缩短至几小时,响应时间大大缩短,玩家体验自然随之上升。
图:EA数字平台初步形成
EA“数据中台”建设的步骤
接下来,宋文欣博士重点讲述了EA“数据中台”建设的详细步骤。
图:EA“数据中台”建设
宋文欣博士强调,数据中台的建设并不是在一开始就要建一个大而全的系统,它是一个逐步迭代的过程。第一步是快速迭代,其动作非常简单,无需做任何数据分析工作,逐渐将数据从各游戏平台汇聚到大数据平台,并提供基础的数据浏览、查看和下载功能;
第二步是工具的开发,尽管数据能够下载,但由于人工计算并不是很方便,所以第一阶段开发了基于Hive平台的自助数据分析工具,让业务部门能够通过一些简单的操作,去做自助式的数据分析;第二阶段是制作出ETL作业发布工具,可以简单运营ETL作业,客户也可以通过自助的分析工具提交作业;
当该平台慢慢形成规模后,平台上可以开发一些针对不同游戏部门专有的系统,比如专门针对FIFA(提供了EA 50%营收的游戏部门)的标签系统与反欺诈模型,当该系统解决完FIFA的痛点,其价值得以体现后,可以将系统、前端界面等开放给其他游戏部门复用,这就是数据中台建设的第三步——能力复用;
第四个阶段是形成闭环,根据用户历史行为为游戏动态推荐游戏难度,动态组成游戏战队。因为数据最终还是要回到游戏中,除了提供一些预测和支持的分析以便更好的获客,游戏还需要用数据做出更全面的反馈。基于此,EA的大数据部门通过人工智能、机器学习的算法,让数据形成有价值的分析结果,最终回馈到业务当中去。以上,便是EA数据中台建设的四个阶段。
值得强调的是,EA在数据中台建设的过程中,始终秉持着四大原则。
首先,拥抱开源,不重复造轮子,几乎所有的科技公司都会使用这样的方式和规则,组件有开源的系统尽量使用开源,在开源的基础上可以进行一些改造,而不会重复去做,这也是硅谷的科技公司共同遵循的一个原则;
第二,使用基于公有云的混合架构,私有云主要服务于EA的游戏服务器,因为这些服务的实时性要求很高,EA希望能自己掌控这些资源,而公有云主要服务于离线的数据分析,因为这部分服务没有那么紧急,并不会对业务造成巨大的影响,所以EA使用的是基于公有云的混合云架构;
第三,汇集所有数据到统一平台,由于EA的很多游戏工作室是收购过来且分布在全球,所以每个游戏部门都说自己有特殊的情况,需要保留己有的一套数据平台,可想而知,想要把所有的游戏数据全部汇聚到统一的平台,操作的难度很大。尽管如此,汇集所有数据到统一平台仍然是必须要坚持的关键原则;
第四,重点投资人工智能、机器学习“皇冠”组件,包括对于人才、技术的投资,将游戏数据反馈到游戏当中,从而提升游戏玩家的体验感。
秉持着上述四大原则,EA“数据中台”终于建设完成,那么结果如何呢?对此,宋文欣博士表示通过EA“数据中台”的建设,成功解决了EA游戏以下五大难题。
游戏设计及开发:游戏更新及补丁、新功能新货品、新游戏的发布
游戏在线服务:游戏运营状况、玩家难度推荐、反欺诈
游戏市场:玩家获取、跨平台推荐、游戏广告
游戏客服:玩家热点投诉、个性化解答
高层决策:月报季报、营收预测、战略决策
EA的数字化驱动架构
在讲解EA数字化驱动架构之前,宋文欣博士强调了建立数据中台统一的数据标准和规范的重要性。据介绍,EA在建设数据平台之前首先建立了统一的数据标准(术语),之所以要建立统一的数据标准,是因为我们知道游戏工作室是产生数据的部门,业务部门是分析数据的部门,两个部门之间涉及几十个部门近千人,统一的语言描述同一件事情十分重要。对此,大数据的产品部门,花费了一年的时间建设数据标准,用一本很厚的字典来讲解相关术语(即对于指标统一的解释)。
图:统一的数据标准(术语)
同步进行的是数据规范,即对数据来源的规范。比如在Telemetry Event中的通用属性,即所有平台所有游戏都需要上报的数据,包括玩家的ID、平台型号、游戏名称、事件编号、事件发生时间、SDK版本等。特殊属性则是每个游戏所具有的特殊属性,比如射击类游戏中使用的武器编号、FIFA足球游戏中玩家所选球员号码等;另外,SDK的版本迭代,指标体系Taxonomy与Telemetry版本同步升级,在实施流程中,各游戏工作室在制定游戏开发和发布计划的时候,必须与EA大数据部门确定Telemetry SDK的版本集成计划相符。
图:统一的数据规范
有了统一的数据规范之后,我们就可以放心地建设EA数字化驱动架构了。EA数字化驱动的架构如下图所示,是一个称之为Wholesale Engineering的架构。这个数字化驱动架构,是针对EA所有的游戏工作室、部门来制定的一个设计准则。但在实际的建设过程中,并不是一开始就去做这样一个通用的系统。虽然总体原则是要保证该系统最后是服务所有的游戏工作室和部门,但是具体到每个组件和子系统的时候,都采用的是由特殊到一般的建设过程。
这个架构,首先要提的是命名的规则,基本采用的是以江河湖海这样比较容易记忆的单词来描述各个子系统,因为在EA这样一个全球性的公司中,需要有一些比较规范的词汇来描述组件,我们用River来描述数据的采集,Lightning表示快速的实时采集和处理,主要采集手机、游戏客户端以及PC端的实时游戏数据。Tide组件表示批处理,主要是处理游戏服务器的数据。
首先有一个基于Hadoop的分布式存储,称作为Ocean的不断扩展的系统,在分布式存储上面,构建了一个叫做Shark的组件,是整个ETL作业的组件,有几千个作业在同时运行,不断进行各种统计分析工作。在作业调度方面,使用Oozie开源软件来进行作业调度,并对Oozie上面做了数据血缘分析的改造,也就是无论是一个作业或者数据表都可以在很短的时间,从成千上万个作业中分析出这些表的上下游等信息。为什么要得到这样的信息?因为在整个运维的工作中会出现大量的工作要去做,有些作业要重新运行,因为游戏服务器有时候会出现一些故障,那么数据输送的不及时,有时候就需要补发一些数据,那么一旦数据发生补送以后,就要重新运行一些作业,因此要很快的去定位到底有哪些作业需要进行这样的操作。第二就是作业依赖的关系不理想,通常一个作业完成以后要能够通过消息机制,通知下一个作业马上进行,但Oozie在这方面做得并不完美便,需要定义复杂的数据依赖。因此,在这个机制上面也做了一些改进,对于ETL作业,基本上都是用Java来写MapReduce作业,还有Hive作业,后来还加入了一些Spark作业,这三种类型的作业比较多。
在数据处理的下面一层就是各种数据仓库、数据存储的子系统。从左往右,Surf是数据科学家使用的人工智能机器学习模型库;Black Pearl 实时数据仓库,利用Couchbase,基本上类似于像Redis那样的基于内存的存储架构,它主要是存储像标签系统的结果以及一些缓存的数据;Pond作为数据探索工具,会不断从生产系统中拉取最新的生产数据,其探索能力之强大,不仅可以探索最近24小时、几天内的一些热数据,还能够去加载一些冷数据。在Pond的整个建设过程当中,我们还做了包括优先级的管理、邮件通知,以及统计分析和计费的功能。实际上,Pond也是一个用来考察各个业务部门对大数据平台使用频率、频次以及价值的衡量的工具,因此,管理层经常需要这样的数据。同时,这也是对业务部门的一种压力,有了这个统计,就能够对每个部门的价值进行数据的分析和衡量;最后是传统的数据仓Pearl,在数据仓库背后运行着各种BI工具,像Superset这样的可视化工具,都运行在这个传统的数据仓库之后。
接下来是数据服务层,就是把数据能力开放出来,以服务的方式提供给各个游戏工作室、业务部门来使用。包括BI工具、异常检测、游戏分析、实时浏览、订阅服务以及访问接口。其中,异常检测有两种,一种是数据的异常检测,另一种是运维的异常检测,比如游戏服务器的网络状况,这是游戏发布以及游戏运行期间非常重要的一个指标。EA之前经常会出现区域性的网络故障,玩家对此抱怨颇多,而异常检测可以极大地改善这种情况,减轻运维部门的压力,使他们能够及时获知有网络问题的区域,并及时进行修复;游戏分析则是比较常规的动作,比如像DAU、游戏类购买情况等,很多部门做成实时大屏放在业务部门来查看自己业务相关的数据,而且还可以自己定义、探索相关数据,能力较强的数据分析员,也可以用编程式的方式来访问这些数据,并接入自己的系统。虽然是把数据分析的数据化驱动架构统一到一个平台,但我们还是给了各个游戏、业务部门一定的自由度,就是他们可以通过接口服务,把数据拉取到他们的系统中,做一些定制化的工作。
最下面一层是数据应用层,典型的应用包括360度玩家分析、标签系统、推荐系统、游戏实验。首先是360度玩家分析,在EA的平台上,每个玩家都可以跨平台的玩各种游戏。在构建数据驱动架构之前,很难去掌握每个玩家全面的动态,有了数字化驱动架构以后,就可以清晰分析出玩家的全貌动态,比如说一个玩家在不同时间不同地点,与谁玩了什么游戏,可以形成比较全面的玩家分析,更精准的去根据玩家的兴趣推荐新的游戏,甚至为玩家的朋友们推荐他们感兴趣的游戏。
标签系统,它能够让游戏推广部门快速的从几百万、上千万玩家中去挑选出合适的玩家,并向他们发送推广邮件,比如说发送折扣信息,引导他们去购买更多类似游戏等。在没有标签系统之前,市场推广人员需要自己去运行查询,还要把电子邮件全部下载下来放到系统中做分发,一天可能只能做一次这样的推送。有了标签系统以后,就可以在几秒钟之内从上千万的玩家中,轻松筛选出符合某种条件的玩家,然后在电子邮件的模板点击发送按钮,就能轻松的将一次推广工作完成,而且一天中可以做很多次。这个标签系统,后来推广到EA的所有游戏,大大提升了游戏推广部门的效率。
推荐系统是在EA的闭环里面做的比较出色的一环。推荐系统可以针对游戏进行动态的难度调整,以及动态的去匹配玩家的对手,推荐系统是基于人工智能、机器学习以及大数据技术结合来开发的一个应用。整个推荐系统的流程则是,游戏客户端向服务器发送一些数据,然后游戏客户端与游戏服务器都会向推荐系统发送推荐请求。推荐系统如何去处理反馈这些请求呢?首先会通过收集所有的历史游戏数据,历史数据会进入到数据仓库中,那么这个推荐系统会拿到历史的数据,以及24小时之内最新鲜的游戏数据,对这个推荐请求做出来判断。在推荐系统后台会有两块,一块是模型及服务,这些模型及服务是一些代码在里面做好的模型,它会根据推荐系统给出来的参数,然后提醒这个模型上面给出来一个推荐的结果反馈回来,推荐系统把之前的推荐反馈给游戏服务器或者客户端。 还有一种服务是A/B测试,这时它会发送到服务这块A/B测试服务中,这里会根据设定的参数,以及它的设定进行反馈,大致这样一个流程。通过游戏推荐系统,最终EA游戏广告点击率提升了80%,玩家游戏参与度提升了10%,其效果显而易见。
最后一个典型的应用是游戏实验,EA游戏算法专利有动态难度调整和优化的玩家匹配模型,EA将这两个专利真正用到了游戏当中并产生了价值。首先,游戏的客户端发送推荐请求,针对该推荐请求收集玩家的历史数据,考察最近24小时内玩家的行为,然后再进行推荐,其原则是预测玩家留存,通过动态算法,分析玩家行为,为玩家推荐游戏的难度或匹配合适的对手。以上,就是EA整个数字化驱动架构的一个全貌。
从EA的数据中台建设中,我们其实能够看到对于“数据中台”的建设,其实就是从一个很小的一个系统开始反复迭代,抓住业务当中的痛点并进行重点解决,在解决的过程中帮助企业树立一套数据标准和规范,更清晰的建设数据中台。重要的是,在数据中台建设过程中,一定要想办法让数据中台产生价值,让客户觉得数据中台真正能将业务带来质的提升,从而对其进行持续的投入与扩大,并不断的将数据中台应用到业务的各个层面,这是EA建设数据中台的过程,当然也是我们在建设数据中台中应该遵循的。