写点什么

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

2010 年 6 月 29 日

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 等,游戏公司也是如此。

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

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

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

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

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

2010 年 6 月 29 日 11:472588

评论

发布
暂无评论
发现更多内容

偏头疼告诉我的,我想告诉每一个人

zkback

最香远程开发解决方案!手把手教你配置VS Code远程开发工具,工作效率提升N倍

程序员柠檬

Linux 后台开发 vscode 后端

git | IDEA 中如何压缩提交(压缩commit后再push 图文演示)

YoungZY

开发者工具 IDEA 开发工具

互联网省份数据大揭秘,看看哪些地方是互联网的戈壁滩?

非著名程序员

程序员 互联网 IT

认识数据产品经理(四 与互联网产品经理的区别)

马踏飞机747

大数据 互联网 产品经理 职业规划

时序数据库

pydata

自定义列表样式

寇云

CSS css3

前端工程化之创建项目

春生

前端 前端工程 前端架构 全栈工程师

一款开源且具有交互视图界面的实时 Web 日志分析工具!

JackTian

开源 GoAccess 实时 Web 日志分析工具 交互式查看器

避免争执

孙苏勇

职场 随笔杂谈

解决版权难题,“豪横”字体自己做

zhoo299

设计 CG

为什么要学习 Markdown?究竟有什么用?

JackTian

markdown markdown语法 markdown编辑器

Python deepcopy一个优化

么么哒

Python

地铁上看书的老外引发的思考

小天同学

写作 读书 个人感想 日常思考

做好领路人——写给技术新人的导师建议

南方

管理 新人

写给产品经理的信(5):谈谈项目管理(青铜-王者)

punkboy

产品 极客时间,项目管理 项目管理 产品经理 项目

只用CSS实现响应式Full-Width img 2种方法

寇云

CSS css3

如何通过样本数据推断其分布

张利东

Python

纯CSS“返回顶部”特效

寇云

CSS css3

HTML中实现合并单元格

JDoe

html

Rust 遇上 C/C++(二):函数传参

Coding Fatty

c c++ rust 编程语言

《中国互联网简史》系列笔记之P2P

dongh11

读书笔记

机器学习项目是如何开发和部署的?

陆道峰

人工智能 学习

不懂送女朋友什么牌子的口红?没关系!Python 数据分析告诉你。

JackTian

Python 程序员 数据分析 python 爬虫 口红

Eureka 实例注册状态保持 STARTING 的问题排查

张晓辉

spring Spring Cloud netflix

团队与领导力健康检查 | 体检表

Bob Jiang

团队建设

重学 Java 设计模式:实战原型模式

小傅哥

Java 设计模式 小傅哥 复杂代码优化 重构

python实现·十大排序算法之基数排序(Radix Sort)

南风以南

Python 排序算法 基数排序

为什么第三方联调应该先行?

大伟

控制 Pod 内容器的启动顺序

张晓辉

Kubernetes

MySQL死锁系列-常见加锁场景分析

程序员历小冰

MySQL

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