正文
面对这样的运维体系架构,畅游都在哪些部分做了自动化呢?我们先来看看游戏运维有哪些特点和痛点。
每个游戏的构架和应用场景,乃至于所使用的数据库和开发语言完全不同。还有不同国籍开发的游戏,整个操作系统和数据库环境、版本都存在大量的不同点。这样一来,运维整个平台和环境都要面临很大挑战。
游戏运维的痛点有很多,如:
-
运维脚本及工具零散、数量多、难复用。
-
资源需求弹性大。
-
成本、效率与可用性的平衡。
-
大流量的高并发。
-
故障需要实时处理且尽快恢复。
-
多版本管理。
为克服这些痛点,近四五年,畅游运维做了很多事情,业务和工程师人数等方面都有变化。
从 2014 年到 2016 年,业务每年实现 20% 的增长,全职工程师在不断的减少,这是因为 2014 年到现在,我们做了大量的自动化工具,利用自动化平台和资源整合,每年资源成本减少 30%。
2016 年 CMDB 海豹系统上线,对所有在线资源进行整合,公共集群建设的完成,把单游戏和每一组游戏所需公共服务放在一起,使得资源成本减少 50%。
这里值得一提的有趣现象是 2014 年到 2015 年的人为故障数量基本持平,这是自动化带来的副作用,2016 年人为故障下降了 30%,此时自动化的作用开始发挥出来了。
2014 年到 2015 年的全局故障率(网络故障、硬件故障等所有的故障)减少了 20%,2016 年故障率下降了 35%。
我们为什么可以在业务增长的情况下,依然可以做到故障下降和成本节约?
分析原因如下:
-
40% 的人为故障是由于信息不准确或是人为操作失误导致的。
-
30% 的人为故障是由于跳流程操作和研发的沟通壁垒。
-
50% 以上的成本来自于空闲资源和故障资源,以及服务器性能资源未能充分使用。
针对这些原因,畅游运维做了很多事情,下面主要分享如何通过海豹系统做信息的统一化和标准化、PaaS 平台实现 Devops 自动化交付以及 Docker 容器技术和混合云架构等内容。
游戏运维自动化平台的技术及逻辑架构
对于游戏运维自动化平台应用来说,是既定的计划,可以当做任务来执行,所有开服、关服、更新、数据回档及档案恢复等所有操作都可以定义成任务或工作流,之后把所有的设计全部按照任务系统的架构来设计即可。
在平台设计过程中,系统主要使用 Python 来进行开发。因为从 2015 年开始,我们发现,如果全部用 Java 来开发的话,运维人员的参与度会非常低。