深圳市风林火山电脑技术有限公司 (以下简称“风林火山”)于1996年 8月成立,是国家高新技术企业,深圳软件园首批入驻的企业。2008年风林火山开始在国内发布游戏,专注于在线棋牌类游戏,集研发、运营为一体,产品在国内在线棋牌类游戏中位居前列,如黄金岛斗地主。游戏主要市场面向国内用户,以江西、湖南为主,用户族群喜欢固定游戏模式,留存率高、粘性系数高、在线时间长。
风林火山坚持技术创新,创造了一个公平、文明、有序的游戏环境,远离不良价值观及过度消费,形成了高效率、高合作和高创造的企业文化,为用户带来更多样、更优质的专业客户服务。

3天完成Amazon EKS集群构建,5小时实现Kubernetes到Amazon EKS迁移,风林火山已全服迁移至亚马逊云科技。利用亚马逊云科技云,风林火山的产品发布、升级频率,从原来每月1次,提升到每周至少1次,极大提高了业务交付速度。”

许华杰

深圳市风林火山 游戏运维工程师

选择亚马逊云科技,风林火山“蓄谋已久”

早期,风林火山业务与游戏产品托管在IDC中,而整个服务器生命周期管理则全靠企业自己手动管理。据风林火山运维工程师许华杰回忆,那时发布一个游戏产品或进行一次升级时,相关人员要手动部署、配置设备,仅准备时间就需要3天,然后再3天进入预发布阶段,最后通过Shell脚本将产品推送到目标服务器上,然后停服再启动。整个新版本的发布将花费大概1个月时间,这在IDC托管时代还算快的。
除了迭代周期慢、发布周期长的不足之外,托管IDC还面临着运维难的问题。IDC服务提供商只为托管而托管,一旦设备或数据中心出现故障,由于没有专门的负责人,导致问题无法及时解决,用户只能被动等待,这严重影响最终用户的体验,尤其是像风林火山这样的游戏企业,可能会导致大量用户流失。
此外,安全问题无法保障。在传统IDC机房中,提升安全的策略只能是通过不断续费确保流量充足,保证平台稳定;购买安全套餐,防止DDoS攻击。但是,IDC中所有用户共享交换机,一旦某个用户受到攻击,相邻用户也会受到影响。
随着风林火山进入快速发展阶段,IDC托管的灵活扩展性差、计算资源受限和效率低等缺陷开始暴露。而且老旧的IDC托管模式缺乏对客户赋能和安全威胁的及时响应,过于传统的IT架构无法给业务足够的创新空间。与此同时,风林火山的技术团队,先天具备拥抱新技术的基因,当看到亚马逊云科技拥有超强的技术能力,已成为众多海外游戏公司的优选时,决定将其业务迁移至亚马逊云科技云。在决定之前,风林火山和亚马逊云科技尽管没有正式确定合作关系,但却默默注视已久。所以说,业务全面迁移至亚马逊云科技云,是风林火山“蓄谋已久”的一件事。

为什么选择亚马逊云科技

风林火山业务全部迁移至亚马逊云科技云,上亿用户稳定运行

2014年,容器技术开始盛行,作为技术驱动的风林火山借助容器技术改造其IDC基础架构,为此部署了开源Docker容器。但是,一段时间之后,依然出现资源不足、扩展不灵活的问题。风林火山意识到IT基础架构的改造需要从底层,从游戏核心的Datomic数据库开始,彼时臃肿的数据库已经成为风林火山前进的绊脚石。

在了解到Amazon DynamoDB对Datomic可以实现很好的后端存储支持时,风林火山在2015年迅速将数据库迁移至亚马逊云科技上。经过一段时间运行,Amazon DynamoDB运行稳定且快速,与其它业务对接便利。“当时我第一次接触这样的产品,感觉好神奇。在控制台上注册一个账号、创建一个服务、得到一个接口地址,配置在我们深圳的IDC游戏服务器上,就有数据了,还能实时监控。”许华杰感叹到。

从此,风林火山开启了使用亚马逊云科技的大门。在Amazon DynamoDB基础之上,又部署了Amazon Elastic Compute Cloud (Amazon EC2) 实例,来支持游戏周边服务,实现了计算资源的灵活扩展,降低了运维成本。同时,通过全面上云,解决了玩家登录问题。之前登录入口单一,需要通过DNS代理转发,效率低、成本高。亚马逊云科技取代了这些代理的采购成本,解决了中转流程的时延问题,玩家可以直接顺畅连接到亚马逊云科技,实现了网络延时上从丢包到稳定的高效体验。
这让风林火山领导层做出决策:全服业务迁移至亚马逊云科技,并于2017年底完成全部业务从IDC向亚马逊云科技云的迁移。许华杰说,“业务全部迁移到亚马逊云科技云之后,一方面省去了原来IDC托管中80万元左右的硬件成本;另一方面,亚马逊云科技的SLA达到了99.99%的高可靠性,而IDC托管只能实现99.9%的保障。”目前,风林火山运营的15余款游戏产品已全部运行在亚马逊云科技云上,注册用户达1.1亿左右,日活40-50万,月活200万。亚马逊云科技云带来的业务稳定、安全运行,正是风林火山一直追求的目标。

风林火山基于亚马逊云科技的系统架构示意图

从自建Kubernetes到Amazon EKS,风林火山实现DevOps和CI/CD业务模式

风林火山全服向亚马逊云科技云迁移与公司IT架构调整计划同步进行。在风林火山的IT系统改造计划中,需要不断进行容器化改造,逐步实现DevOps和CI/CD的集成、交付、持续部署的组合实践,寻找符合公司业务节奏的弹性伸缩、敏捷和可靠的IT环境。


风林火山容器化改造后基于亚马逊云科技的系统架构示意图

这时,容器编排工具Kubernetes走进了风林火山的视野,开始在亚马逊云科技云上部署Kubernetes。但是,由于并没有现成的Kubernetes自动部署工具,一切都是风林火山基于开源成果,通过二进制代码手动编写完成。尽管,第一个Kubernetes的成功给业务带来了更快的速度,实现各种数据包的自动上传、下载、部署,相当于人为实现了DevOps的互通,但随着部署节点的增加,运维负担渐渐超出负荷,人工部署的Kubernetes无法实现资源的自动扩展、缩减,导致CI/CD的持续开发集成出现断点。此时,实现更加自动化开发和管理流程,成为风林火山的重点。

2020年2月,当亚马逊云科技宣布Amazon Elastic Kubernetes Service (Amazon EKS)在由西云数据运营的中国(宁夏)区域上线时,风林火山第一时间开启Amazon EKS服务。基于之前对Amazon EKS强大功能的了解,风林火山直接省略测试步骤,仅用3天时间就构建起所需的生产集群,后续再简单地开放接口,就实现了与其它业务的集成,速度相比之前的自建Kubernetes提升了不只一个档。对资源的需求只需设定好阀值,无论是扩展,还是缩减都可以自动化完成。此外,得益于Amazon EKS对Kubernetes的出色兼容能力,风林火山只需要修改相关API接口,在5小时内实现了上千容器从Kubernetes到Amazon EKS的迁移,迁移过程和运维管理简单、快速,无需重构代码。通过部署Amazon EKS,风林火山真正实现了微服务架构的改造,实现了CI/CD的业务目标。
采用亚马逊云科技云,风林火山对游戏版本的发布、升级频率,从IDC托管时的每月1次,提升到每周至少1次,大大提高了业务交付速度。许华杰还提到,亚马逊云科技的责任共担模式可以减轻他们的运营负担,让云服务使用者更专注于核心业务。
 

从“救火”到“放火”,风林火山希望借助亚马逊云科技实现业务智能化

“之前使用IDC时,感觉我们一直在瞎忙,使用亚马逊云科技云后才真正体会到自己在创新,在做有价值的事情。亚马逊云科技让我们可以将更多精力投入到软件工程中去,实现更快地交付,将事故率降低了70%以上。以前我们是不断‘救火’,现在我们时而还可以自己‘放火’,来不断提升平台的健壮性。” 许华杰说道。

下一步,风林火山希望可以达到业务的智能化,实现智能化基础设施改进。风林火山希望利用亚马逊云科技云,可以先实现定向智能决策,减少人工干预,解放IT人员的双手,让IT架构不再“死气沉沉”,变得更具灵活性与创新性。

更多信息

了解高度可用、可扩展且安全的 Kubernetes 服务,请访问 Amazon EKS 详细信息页面。