Zynga CTO谈如何设计高可扩展性社交游戏

Zynga目前是世界上最大的社交游戏公司,也是历史上增长速度最快的互联网公司之一。据悉这家成立仅3年的公司,其活跃游戏用户已经超过2.3亿,公司员工数量仅去年一年就增长了3倍,达到近千人。在今年5月份,Zynga还收购了国内的一家社交游戏制作公司XPD,希望能在中国建立一个全球一流的产品开发基地。日前,在Zynga的首席技术官Cadir Lee访华期间,InfoQ中文站编辑就如何设计高扩展性社交游戏等话题和其进行了交流。

InfoQ:作为一个快速增长,而且用户量巨大的社交游戏公司的CTO,你如何设计游戏的架构和构建自己的团队?

Cadir Lee(以下简称Cadir):其实我们的架构很简单,和大多数网站的架构类似,也是Web层、Memcached层和数据库层等,一个典型的LAMP架构。不过可能有一点不同的地方是,因为我们的数据量非常大,所以使用了很多个数据库,让每个数据库承担不同的责任,所以如何分割数据库对我们而言是非常重要的。开始的时候,我们也花了很长时间来确定是用一个数据还是用多个,是用一个Memcached,还是用多个等。使用到多个数据库的时候,可扩展性就变得很重要和有意思,其中我们也使用了NoSQL技术,并有一个专门的运营团队去管理这些数据库。

就数据层面来讲,我们有自己的数据中心,也应用到了亚马逊的EC2,而且购买了很多:)。有些游戏运行在自己的服务器上,有些是运行在EC2上,我们需要做的就是让他们保持一致就好,比如在EC2上我们使用软件处理装载平衡(Load Balancing),在我们自己的数据中心里使用硬件来处理。另外,因为我们的数据架构要支撑很多应用,所以需要分区,这对我们来说是有难度的一个地方。要知道我们的游戏和传统的游戏有很大的不同,我们的绝大部分游戏都需要存储在服务器上,需要关注通讯、浏览器,还需要关注客户端的用户体验等。

至于如何构建自己的团队,考虑到游戏公司的特点,那就是要求快速开发,所以我们采用了敏捷开发方法,使用Scrum来优化我们的团队,让工作更加流畅。比如我们有自己的产品路线图(Roadmap),有复杂的日程表,将每个迭代周期都尽量缩短,如果周期能为一周,我们绝不会将其延长到一个月。这样做的好处就是,将整个研发过程分割成一个一个小的部分,从而减少风险。

InfoQ:与传统的软件开发相比,设计高可扩展性的社交游戏有什么特别之处吗?

Cadir区别还是比较大的,我认为下面几点是需要注意的:

  • 第一就是社交游戏要容易上手,而且从性能、装载时间和下载的便捷性都要特别考虑,确保游戏的速度够快,如果只是装载一个游戏就要十几分钟,几分钟,用户的反应可想而知;
  • 第二还要注意如何吸引用户下次还来,即游戏的持续性,社交是需要时间积累的,即使是在网络上。如果用户体验了一次新鲜,下次就不来了,显然这个游戏不是成功的;
  • 第三是Social(社交),就是要通过跟踪每个人的使用轨迹,让每个人都知道自己做了什么,自己的朋友又在做什么,加强了交互性;
  • 最后就是要注意Robot(机器人),作为游戏制作方,你要让玩游戏的人感受到公平,大家一起玩,欺骗是要不得的。这是在游戏中最好要杜绝的现象。

InfoQ:据说现在很受欢迎的Cafe World游戏你们用了25个开发人员,花5个月的时间就完成了从创意到上线的过程,如何做到的?

Cadir我们有一些通用的技术和平台,随着游戏开发的越来越多,团队成员的成熟度也越来越高,开发的速度也越来越快。作为一个CTO,其工作职责之一就是建立平台,让尽量多的知识得到共享,另外我们也有很多通用的工具。其实很多成功的公司都是这样做的,比如微软、Google等,游戏公司也是如此。

InfoQZynga有没有计划在移动设备上开发游戏,从你的角度看,在移动设备上开发游戏的主要特点是什么?

Cadir我们已经为iPhone开发了5款游戏,前一段时间苹果的Steve Jobs还在Apple World上宣布了我们为iPhone开发的游戏。另外我们在Android、iPad和其他智能手机上都有计划开发相应的游戏。开发移动应用需要特别注意的就是,你需要考虑的更多,因为用户不同,使用习惯不同,你需要在一个很小的设备上开发很好的应用,包括性能、动画、动作都是需要特别考虑的。还有,网络条件、通信情况等,虽然许多国家的网络越来越好,但是还是有许多国家的网络很一般,这也是需要特别考虑的。最后需要注意的就是,移动设备在什么地方都可以玩,在飞机上,在地铁里,有那么几分钟的空闲时间都可以拿出来玩玩。

InfoQ:据说你在为新收购的国内的这家公司找CTO,我们InfoQ的读者大都是有经验的架构师和高级开发人员,也许有适合你们的:)

Cadir哈,是的。游戏是一个快速成长的行业,如果你喜欢挑战,喜欢游戏,Zynga肯定是一个不错的地方。而且和其他很多游戏公司不同,我们制作的是可扩展的游戏,不是在一台服务器上运行,而是成百上千,我们的游戏也不是几百几千人,而是上千万上亿人,想想这是多么吸引人吧。其实,我们需要的不仅仅是CTO,我们需要很多人,年龄大的,小的,有经验的,没有经验的,只要能力强,对游戏有热情,都可以到Zynga来试试,我们提供快速发展的工作机会和很好的福利。请把简历发到[email protected],Zynga欢迎你!

采访的最后,编辑问Cadir在其Zynga发展的过程中,有什么特别的感触需要和读者分享的,“Keep Simple(保持简单)”,Cadir脱口而出。不过随后他又边微微摇头边说,这是最重要的,但也是最困难的,对于我们来说,那些听上去很简单的事情真正要做的时候是需要注意很多地方的,对待每一行代码你都要考虑如何让其最简单,如何不使整个系统的速度降低等。I think so!

你可能感兴趣的:(Zynga CTO谈如何设计高可扩展性社交游戏)