一款游戏产品上线,仅仅从技术角度来讲,分为软件层次的游戏代码研发,及硬件层次的代码部署上线。劈开代码研发方面不讲,游戏的部署上线,成为我们一个很头疼的问题。为什么头疼?从一些报告显示,大部分的游戏生命周期仅有3个月。按照正规的上线流程,从买服务器,装环境,进IDC机房这么下来,刚把游戏上线,可是游戏却不给力。这样折腾下来,浪费了多少我们的青春?浪费了多少我们的血汗钱?
一般游戏的部署有以下几种方式:
1、托管IDC机房部署。
2、代理商部署。
3、租用vps环境部署。
4、租用云主机环境部署。
对于第一种 , IDC机房部署,我觉得是最劳民伤财的。 如果是自己购买服务器(也可以是租用),公司的一些采购审批流程、服务器运输过来、装系统环境测试、IDC服务器上架等等,这是一个很繁琐的过程。特别在后期的运维管理的时候,当服务器异常,想要重启一下服务器,这种简单的要求都变成一种奢侈。
对于第二种, 把代码交给代理商部署,我觉得是最没安全性的。 你不用关心自己买什么样的服务器,怎么样配置环境等,你只需要把游戏代码给代理商,后期的部署上线、运维管理都不用你操心。看似还蛮省心的,但数据库之类的,都是别人帮你运维管理。你的代码、数据都给别人了,何谈安全性呢?
对于第三种 , 租用vps环境部署,我觉得是性能及可用性最差的。 vps,大家都很熟悉。就是在一台服务器上虚拟化很多系统,然后分给多个用户使用。虽然理论上,每个vps都可分配独立公网IP地址、独立操作系统、实现不同vps间磁盘空间、内存、CPU资源、进程和系统配置的隔离。比如常见的虚拟化技术有:vmware、xen、kvm等。但实际情况是,当某一个vps的资源情况使用过高,这会影响其他vps的性能。最终导致多个vps抢资源的现象,比如分配一个4核4G的vps空间,到最后,你可能连2核2G的资源都抢不到。
对于第四种 , 可能很多人觉得vps跟云主机之间没啥区别。其实有很大区别的,关于这块的对比, 在此不做过多的介绍,有空的话,再详细聊聊这块内容。最大的区别,现在可以简单理解于在于资源的隔离这块吧,就是云主机与云主机间的资源使用,不敢说百分百的隔离了,但至少在底层的隔离这块,做的还是比较好的。
所以云主机相比其他的几种部署方式,在运维这块有以下几个优点:
1、成本考虑
之所以考虑云服务,成本因素是大家最先要考虑的因素了。如果谁说,钱都不是问题了,那估计就没什么问题了,呵呵。相比传统的IDC,云服务可以有效节省在物理硬件的投入成本,以及在运维方面的人力成本。为什么能节省在运维方面的人力成本?比如,我们把应用部署到云上了,我们就不用关心后面云服务器的监控、安全及运维管理,这一切都由云来帮我们搞定。
而且对于很多游戏的上线,前期并不知道上线后,用户量会是多少。如果盲目的在这块投入成本,很可能造成亏损。很多公司的游戏上线,都是选择云服务来部署游戏上线,进行前期的“摸底”。后面如果用户量大,只需要简单的增加云主机。如果用户量少,我们减少部署的资源。这样可以有效控制成本,灵活性非常高。
2、网络稳定性
为了保障游戏的流畅性,强大的网络保障必不可少。相比传统的双线机房,云服务采用BGP网络,给我们的网络添加了有力的保障。成为我们网络坚实有力的后盾。
3、快速部署
快速部署,表现在几个方面。第一个,在硬件层次。我们不用买服务器,不用装系统,云主机拿来就用,快速部署。
第二个快速部署,在系统层次。一般在云服务层面,都有镜像及api功能。两者结合起来,就算创建一千台、一万台服务器,也是瞬间的事情。何为镜像功能?比如,我现在有个新区上线,我把环境都装在云主机中。我把现在这个系统环境打包成镜像(这个有点类似ISO镜像),然后我创建云主机的时候,可以用这个镜像创建出一台环境及数据一模一样的系统。通过我们开通一台云主机,我们一般都是在web控制台点击操作的。当然我们也可以通过api接口,用代码来创建云主机,真真意义上的快速部署。
4、灾备、数据备份
一般云主机采用同时写多份数据来保障数据的安全性。我们的云主机的系统环境可能存在某台物理机上,但是同时这个环境的数据,冗余在其他物理机器上。当这台云主机所在的物理机宕机时,会自动迁移到其他物理机上的冗余数据上,保障服务器的可靠性。
5、运维监控
传统的运维监控模式,在应用层的监控,比如采用监控宝来监控一个url,监控一个页面的服务是否可用。在服务器层次,通常安装一些监控软件,比如cacti、nagios、zabbix,然后自己搭建运维监控中心,监控服务器及应用的可用性。而云服务中,都自带这些监控功能,我们只需要傻瓜式的在web页面设置一下监控的属性,省去了复杂的搭建监控的环境,便捷高效。
6、防攻击
一般游戏的部署有以下几种方式:
1、托管IDC机房部署。
2、代理商部署。
3、租用vps环境部署。
4、租用云主机环境部署。
对于第一种 , IDC机房部署,我觉得是最劳民伤财的。 如果是自己购买服务器(也可以是租用),公司的一些采购审批流程、服务器运输过来、装系统环境测试、IDC服务器上架等等,这是一个很繁琐的过程。特别在后期的运维管理的时候,当服务器异常,想要重启一下服务器,这种简单的要求都变成一种奢侈。
对于第二种, 把代码交给代理商部署,我觉得是最没安全性的。 你不用关心自己买什么样的服务器,怎么样配置环境等,你只需要把游戏代码给代理商,后期的部署上线、运维管理都不用你操心。看似还蛮省心的,但数据库之类的,都是别人帮你运维管理。你的代码、数据都给别人了,何谈安全性呢?
对于第三种 , 租用vps环境部署,我觉得是性能及可用性最差的。 vps,大家都很熟悉。就是在一台服务器上虚拟化很多系统,然后分给多个用户使用。虽然理论上,每个vps都可分配独立公网IP地址、独立操作系统、实现不同vps间磁盘空间、内存、CPU资源、进程和系统配置的隔离。比如常见的虚拟化技术有:vmware、xen、kvm等。但实际情况是,当某一个vps的资源情况使用过高,这会影响其他vps的性能。最终导致多个vps抢资源的现象,比如分配一个4核4G的vps空间,到最后,你可能连2核2G的资源都抢不到。
对于第四种 , 可能很多人觉得vps跟云主机之间没啥区别。其实有很大区别的,关于这块的对比, 在此不做过多的介绍,有空的话,再详细聊聊这块内容。最大的区别,现在可以简单理解于在于资源的隔离这块吧,就是云主机与云主机间的资源使用,不敢说百分百的隔离了,但至少在底层的隔离这块,做的还是比较好的。
所以云主机相比其他的几种部署方式,在运维这块有以下几个优点:
1、成本考虑
之所以考虑云服务,成本因素是大家最先要考虑的因素了。如果谁说,钱都不是问题了,那估计就没什么问题了,呵呵。相比传统的IDC,云服务可以有效节省在物理硬件的投入成本,以及在运维方面的人力成本。为什么能节省在运维方面的人力成本?比如,我们把应用部署到云上了,我们就不用关心后面云服务器的监控、安全及运维管理,这一切都由云来帮我们搞定。
而且对于很多游戏的上线,前期并不知道上线后,用户量会是多少。如果盲目的在这块投入成本,很可能造成亏损。很多公司的游戏上线,都是选择云服务来部署游戏上线,进行前期的“摸底”。后面如果用户量大,只需要简单的增加云主机。如果用户量少,我们减少部署的资源。这样可以有效控制成本,灵活性非常高。
2、网络稳定性
为了保障游戏的流畅性,强大的网络保障必不可少。相比传统的双线机房,云服务采用BGP网络,给我们的网络添加了有力的保障。成为我们网络坚实有力的后盾。
3、快速部署
快速部署,表现在几个方面。第一个,在硬件层次。我们不用买服务器,不用装系统,云主机拿来就用,快速部署。
第二个快速部署,在系统层次。一般在云服务层面,都有镜像及api功能。两者结合起来,就算创建一千台、一万台服务器,也是瞬间的事情。何为镜像功能?比如,我现在有个新区上线,我把环境都装在云主机中。我把现在这个系统环境打包成镜像(这个有点类似ISO镜像),然后我创建云主机的时候,可以用这个镜像创建出一台环境及数据一模一样的系统。通过我们开通一台云主机,我们一般都是在web控制台点击操作的。当然我们也可以通过api接口,用代码来创建云主机,真真意义上的快速部署。
4、灾备、数据备份
一般云主机采用同时写多份数据来保障数据的安全性。我们的云主机的系统环境可能存在某台物理机上,但是同时这个环境的数据,冗余在其他物理机器上。当这台云主机所在的物理机宕机时,会自动迁移到其他物理机上的冗余数据上,保障服务器的可靠性。
5、运维监控
传统的运维监控模式,在应用层的监控,比如采用监控宝来监控一个url,监控一个页面的服务是否可用。在服务器层次,通常安装一些监控软件,比如cacti、nagios、zabbix,然后自己搭建运维监控中心,监控服务器及应用的可用性。而云服务中,都自带这些监控功能,我们只需要傻瓜式的在web页面设置一下监控的属性,省去了复杂的搭建监控的环境,便捷高效。
6、防攻击
在防攻击方面,也是给你惊喜不断。底层采用硬件防火墙来防攻击,在web控制台中,我们还可以自己设置攻击的一些阀值和参数。
随便聊聊,有不足的地方,欢迎拍砖!
也欢迎大家来信进行更多交流——作者:乔锐杰 qrj@jiagouyun.com