作者:Simon
一、背景
在中国整个互联网的发展历程中,游戏行业一直是充当急先锋和很多公司奶牛的角色。即使到今天,游戏仍然是很多巨头们的核心收入来源。中国庞大的人口红利和东方人对于游戏的热爱程度都让游戏成为互联网公司的兵家必争之地。最近几年移动互联网浪潮中,手游的高歌猛进再次验证了这一点。所不同的是,各个巨头们在这次手游浪潮中更多得退到平台和运营角色,而大量优秀、独立的游戏内容创作商走到前台。
历来游戏行业都是高度竞争、快速淘汰的行业,而且一款成功游戏的生命周期越来越短。以前在PC端的游戏产品常常能有几年寿命(甚至是黄金期),而今天一款成功游戏的生命周期常常也只有几个月,而很多游戏甚至一上线就基本结束了其生命。如此同时,一款游戏的用户爆发速度也比原来快很多。当下,国内的网络接入已经基本成熟,再加上社会化营销,好的游戏可能只需要几天时间就能够风靡整个网络。面对这些新情况,游戏行业对承载其运行的基础设施提出了更高的要求,具体来说可以分成如下几个方面:
- 让基础设施更具有弹性,可以实现快速的开服、合服和关服。如前所述,游戏生命周期短,爆发速度快,传统那种自购集群或者租用IDC的方式已经跟不上游戏发展的步伐。在市场已经出现过一款火爆游戏要玩家排队几个小时才能够登陆服务器的场景出现。
- 让基础设施(计算、存储、网络等)能按需付费,可以降低游戏运营的成本。由于大量的游戏开发团队都是轻资产运作模式,不会做大量前期投入建立自己的基础设施。所以基本采用租用基础设施的模式。在竞争这么激烈,变化如此迅速的市场,即使再有经验的游戏开发团队也很难预测一款游戏的生命周期、火爆程度。所以自然希望在基础设施(这是游戏运营中很大的一部分成本)上能够按需付费,降低成本风险。
- 让基础设施质量更可控,从而降低游戏运营的风险。基础设置的质量不仅仅是传统意义上的硬件质量,而是包括网络接入、机房环境保障、服务器配套设备、容灾容错在一块的整体质量。如果要自建整个基础设置,到达质量可控的程度,成本非常高。而传统IDC很多时候交付的基础设置质量并不可控。
- 让基础设施更容易管理,可以降低游戏运维的难度和成本。现在一款成功的游戏基本上已经都是互联网规模,一款游戏同时运行的服务器数量比起传统网络游戏能上一个甚至几个数量级。在这么大规模的情况下,很多传统运维的方式因为复杂度、效率或者成本都已经行不通。游戏运维人员需要有高效、简单的方式管理整个基础设施。
由于上面这些挑战,从互联网行业发展而来的云计算(尤其是以AWS为代表的公有基础设施云,即IaaS。注:本文下面提到的云平台都为IaaS平台。)得到了游戏行业的快速呼应。例如,在国外以Zynga为代表的新一代游戏公司是利用公有云发展起来的。国内,也已经有越来越多的游戏公司使用公有云作为自己的基础设施平台。
二、云计算与游戏
从互联网行业发展起来的云计算在很多方面和现代的互联网游戏有很多类似地方。所以其基础设施云也非常适合游戏行业。宏观上来说,公有云在下面几个方面很好的满足了游戏行业的刚性需求:
- 提供了弹性基础设置。无论是按需付费,还是包年包月的虚机。其弹性和传统得自己购买或者租用IDC都有非常大得改进,尤其是在快速开服、合服上。云计算平台都能够提供分钟级别的资源扩容能力,让你不需要担心游戏快速爆发期的资源问题。
- 提供了有清晰服务质量定义的基础设施。现在,所有的云计算平台都必须明确其服务质量(既SLA),并在服务质量未达标的情况下有相应的补偿机制。 计费模式更加灵活,并在逐步过渡到完全按需付费的方式。这有效得支撑了轻资产模式运作的大量独立游戏创意、开发团队。
- 提供标准API和相关工具、服务帮助用户快速管理、运维基础设施。利用API可以让用户通过编程的方式管理整个集群。云平台提供的监控、数据库服务让用户能够从重复性、基础性的运维工作脱离出来,把这些工作交给更有经验的公有云提供商,而更关心对于自己应用的运维上。
- 通过统一的多数据中心让用户接入速度更快,且方便地支持容灾容错。在国内,由于几大运营商的问题,导致网络接入非常复杂。而游戏又是对交互响应要求非常高的应用,为给全国各地的玩家提供一致体验,多数据中心是不可以避免的事情。在传统租用IDC的阶段,协调不同数据中心是一件非常费时、费力的事情。
- 由于这些明显的优点,云服务和游戏是天生一对,云计算平台成为大量游戏公司积极尝试的技术路径。在国内,几乎所有的基础设施公有云提供商也都非常重视游戏行业,推出了各自的游戏云解决方案。阿里云作为全国领先的IaaS服务商,也推出了自己的游戏云整体解决方案(http://game.aliyun.com/ ),通过整合阿里云各个方面资源,为游戏行业的用户打造高效、可靠和用得起的基础设施。
三、云上的游戏开发、运维
对于一款游戏,在其整个生命周期上的设计、开发、上线、运维及运营涉及到非常多的环节,有游戏定位、内容创作、逻辑开发、渠道运营及推广等等。在这里,我们主要讨论作为全新的基础设施平台,云计算平台给游戏带来了什么,并以阿里云为例说明云上游戏开发及运维工作。 首先,让我们看下一个游戏运营周期中和基础设施相关的流程都有哪些,如下图所示:
- 当一个游戏需要确定上线,第一件事情就是需要快速获取资源来运行游戏。资源包括服务器、存储和网络等多个方面。如前所述,云平台大大降低了资源获取的门槛,而且获取的都是有相关SLA保证的资源。通过云平台提供的API,用户可以在分钟级别内获取自己想要的常见资源。如果计划把游戏在云上运行,开发人员在容量规划阶段最好能够按照云上资源单位来进行规划。由于游戏行业的特征,按需付费的方式使用云平台资源是一个常见的选择。当然,包年包月的付费方式可以大大节省用户成本。开发人员可以按照游戏的具体运营计划搭配使用两种付费方式的资源。目前,阿里云上得绝大部分服务都已经提供API帮助用户获取资源,且主要服务(如ECS)也都支持按需付费和包年包月这两种计费模式。
- 在获取完所有资源后就需要对于这些资源进行初始化,其中最为主要的就是对于虚机初始化,如安装基础性软件,进行相关配置。这些初始化工作常常是和具体游戏相关性不一定太大且可复用。在云上,自定义镜像是一个不错的方式帮助用户固化常见的虚机初始化化工作。当然,用户也也可以通过自定义脚本自己完成这个过程。除掉虚机初始化之外,例如网络、存储环境的初始化也可以通过IaaS服务提供商得API快速、编程化完成。目前,阿里云提供的SLB、RDS、OSS等服务都可以通过API来操作,可以非常方便的完成这些资源环境的初始化工作。 环境准备妥当后就得部署具体的游戏代码。这个过程每个游戏具体都不太一样,但是为了高效、无误得完成这个过程,自动化一切部署流程已经是必须的选择,尤其是对于游戏而言。你很难想象让玩家等你几天来修复一个Bug,或者让玩家在几周里面都重复玩同样的内容。所以,游戏行业对于服务的持续交付和更新有最迫切的需求。尽管国外很多云平台生态圈内已经有这样的服务和工具提供给开发、运维人员,但国内目前还比较欠缺这一点。
- 在游戏上线后,运维人员的压力就随之而来,其中最常见的运维工作就是需要对一组机器进行批量运维,如执行一组脚本、给系统打一个Patch。当然,定时运维工作常常也是必须的,如定时清理、备份数据等。脚本通常是用于解决这些运维问题的法宝,但如何组织、管理脚本,如何把脚本批量运用到指定机器,如何在动态变化的基础设施上保证运维操作的精确性、可追溯性仍然是一个挑战,尤其是在运维互联网规模的游戏时。在云平台上,由于所有的基础设施都是可编程的(即用API访问),这让把基础设施和运维行为一体化管理变得容易。所以,基于云上的游戏运维需要是和云平台高度集成的一体化运维平台。
- 和任何在线服务一样,游戏服务中的监控、报警也是不可缺少。没有监控、报警的服务会让开发、运维人员寝室不安。在传统IT环境中,游戏开发、运维人员经常需要自己从头搭建整个监控、报警系统。尽管现在已经有如Nagios等强大的开源监控报警平台,但是构建、运维一个自己的监控、报警系统任然很麻烦,何况还要对接很多如短信报警这样的供应商。云时代,这些事情应该有IaaS供应商代劳。任何一家IaaS供应商都应该提供基础的、可扩展的监控、报警服务,用户只需要告知供应商需要监控哪些指标,定义报警规则即可。阿里云同样也提供云监控服务,支持站点监控、虚机监控、自定义监控指标和报警功能。
- 快速扩容、合并服务是游戏行业的一个强烈刚需。由于前面所述的游戏行业特征,其服务规模会在短期有很大的震荡,而且在时间段上的波峰波谷效应也很明显。因此,IaaS环境下的自动伸缩功能(Auto-Scaling)非常适合游戏行业,可以在保证玩家体验的前提下尽可能降低整个基础设施成本。阿里云已经开始公测的ESS服务就是针对ECS的自动伸缩服务,支持定时和按需添加和减少ECS虚机数目。
- 数据备份是一个经常被忽略的需求。在运营一款游戏过程中会产生大量有价值的数据(如玩家日志等),通过挖掘这些数据可以很好指导团队不断改进游戏,即使一款游戏已经下线,其运营过程中的数据也应该保留下来以备不时之需。另外,由于一些法律上的需求,备份数据也不可避免。如果使用在线存储服务备份这些冷数据,则成本太高,而使用传统的磁带方式又非常低效。现在,很多IaaS供应商都提供自己的备份服务,如阿里云的OAS等,可以考虑使用来备份游戏运营沉淀下来的数据。
- 当决定要关闭一款游戏时,运行在云上的游戏非常容易,简单几个按钮就完成所有工作,而且费用立即结束。当需要重新上线新游戏,完全可以按照新游戏架构重新选择更合适的基础设施架构。这种快速、轻量释放资源的方式非常适合更新周期快的游戏行业。
- 利用数据来驱动游戏开发,发现玩家需求已经是游戏开发团队必须要具备的能力之一。开发人员可以根据实时游戏数据来和玩家及时互动,也可以利用离线大数据分析发现游戏设计中的一些规律。同样,IaaS提供商一般也会提供基于云上的数据类产品,帮助用户在云平台上实现数据的闭环流动。一旦这个闭环形成后,用户服务产生的数据可以迅速进入分析流程、并利用分析结果直接产生行动。在阿里云上,其数据类服务是一个特点,既有离线数据分析服务ODPS,也有ADS这样准实时分析工具,还有日志服务SLS与之配套。
通过上面的分析,我们可以看出IaaS平台给游戏行业提供了一个非常好的平台,可以帮助到轻资产的游戏团队快速开发、上线游戏,并在整个游戏运营周期的不同阶段提供不同的支撑服务,让小团队能够获得大公司一样高效、高质量的基础设施平台。当然,向云迁移游戏服务并不信手拈来,仍然有一些要点需要把握好才能够发挥出云的优势:
- 首先,和很多其他行业向云迁移一样。游戏的真正技术架构要向云上架构转型,而不是生硬得把云平台提供的资源和服务映射到传统架构上。要想充分发挥云的按需付费、自动伸缩功能,就必须做到服务的状态无关。要想充分利用好IaaS提供商的基础设施服务,就需要让自己的游戏架构去适配IaaS供应商提供的很多服务(如数据库服务、监控服务等)
- 其次,要充分利用好云平台的弹性,这点对于游戏更为如此。如果仍然像使用传统IDC资源一样使用云上资源,你的服务就失去了云平台弹性带来的巨大好处。例如,无法真得做到按照游戏实际使用量来付费,也无法很快应对游戏爆发期的快速流量上升等。
- 再次,要充分复用云平台上的基础服务,解决重复开发轮子的问题。一般来说,IaaS供应商都会很多基础服务(如数据库、负责均衡、缓存等服务)。如果你的游戏架构中能够用到这些服务请尽量使用云平台上基础服务,这可以大大解放你的生产力,避免重新开发,即使你可以使用开源技术快速搭建相关服务,也还会面临后期运维的很大压力。
- 最后,云上运维要充分利用云平台的特点,即基础设施可编程化。运维人员可以统一管理基础设施和其上的运维工作,形成一体化的运维平台。具体来说,运维平台即可以自动管理、感知基础设施的变化,又可以在管理基础设施的同时主动、精确执行运维操作,保证服务的可持续性、高效性 。 对于游戏团队来说,使用IaaS作为自己游戏的基础设施平台迈出了向云上迁移的第一步。在这之后,游戏团队要使用好IaaS平台仍然有很多工作可以做。作为国内领先的IaaS供应商,阿里云在提供云平台上基础设施服务同时也在不断发展自己的生态,帮助用户更好使用阿里云。其中,Fit2Cloud就是阿里云生态中的一员,它为游戏团队在阿里云上提供一体化的运维平台。
四、Fit2Cloud:阿里云上的一体化游戏运维平台
Fit2Cloud是完全基于阿里云API的新型云上服务运维平台,针对游戏团队提供如快速开服,实时监控告警、批量运维、自动伸缩、代码部署等一系列服务。具体如下图:
在Fit2Cloud中,用户的基础设施以应用(Application)视角管理(不同于阿里云控制台以资源类型及地域视角管理),让用户的所有运维操作可以轻松定位到指定应用服务。Fit2Cloud支持为一个应用管理多种云资源(如实时申请的按量付费虚机、主动导入的包年包月虚机、自动伸缩产生的云资源变化等),也支持对于资源之间关系的管理(如添加虚机到SLB、注册RDS白名单等)。另外,为运维阿里云资源集成了多项服务(如执行脚本,环境初始化等)及相关的辅助功能(如费用管理、资源权限管理等等)。同时,为打通用户从代码到服务的通道,实现如下持续交付的游戏生产流程,Fit2Cloud提供了“代码部署”模块。
Fit2Cloud的代码部署模块提供如下功能:
- 兼容AWS的CodeDeploy的Artifacts格式,让开发人员明确描述相应模块的部署方式。模块由开发人员开发,只有开发人员最为了解整个模块的部署、运行方式,所以提供标准格式让开发人员自己描述其开发模块的部署方式非常高效,并且可以让开发、测试和运维人员沟通部署流程更为方便。同时,由于这个标准格式会直接使用于整个持续交付过程,也能有效避免部署文档过时的问题。
- 支持从阿里云的OSS管理用户所有的Artifacts。用户可以通过自己的持续构建服务器向这些代码仓库推送最新构建输出的Artifacts。
- 支持多种模式的部署方式。目前,Fit2Cloud支持逐台ECS机器部署、一次部署应用中一半机器或者一次部署应用中所有机器这三种模式,让用户可以做到生产环境服务不中断,而其他环境下又能够快速部署的目标。
- 支持所有部署操作的可追踪、可管理,能够集中管理所有部署的结果、输出信息。方便开发、运维及质量团队跟踪。
为保证游戏用户的数据和基础设施安全,Fit2Cloud支持企业版部署模式。在这个模式下,整个Fit2Cloud部署在用户自己的阿里云虚机上,所有数据也存到这台虚机内(Fit2Cloud不会上传用户业务数据)。同时,整个服务由用户自己管理,拥有所有权限。Fit2Cloud会负责在后台帮助用户升级Fit2Cloud软件自身,保证用户时刻使用最新、最安全的Fit2Cloud服务。
作者简介:Simon是FIT2CLOUD资深架构师。FIT2CLOUD致力于帮助企业更好地使用云来加速业务创新,实现从传统IT到Cloud IT的转型。FIT2CLOUD不仅提供一站式的应用交付及运维管理工具,同时还提供方法论来帮助企业打通从代码到服务的通道,实现云应用的持续交付和自动化运维。FIT2Cloud阿里云企业版已经上架阿里云镜像市场( 链接是: FIT2CLOUD应用交付及运维管理平台Centos 6.5 64位 )。