4月5日,2015企业移动化论坛,猎豹移动运维开发负责人梁晓聪以“如何快速构建海外海外移动化应用基础环境”为题发表了主题演讲:
如何快速构建海外移动化的应用基础和环境?梁晓聪给出的答案是:把服务架构在公有云上,让专业的人去做专业的事情。他强调:“比如说老板说要在海外拓展一个产品给客户去用,问你方案的时候你不要害怕,你就说几分钟内这个事情就可以做完了,你只要记住这个事情就可以了。”
猎豹移动运维开发负责人 梁晓聪
以下为演讲实录:
梁晓聪:大家下午好!我叫梁晓聪,是来自猎豹移动,现在主要是负责海外移动端的工作。我开讲之前还是来一个小的调研吧!在座的是面向技术岗位的,譬如开发者、工程师的有吗?可以举个手。好,人数还不少。我就比较放心了。
我平时主要出席的就是那种面向技术的那些公开演讲,很少来这种高大上的地方,所以在我演讲的过程中如果有哪些是感兴趣的,或者是有疑问的,可以马上打断我,我是可以随时解答的,这是第一个。下面有一些内容不太方便公开讲,其实我们私底下是可以讲的,有这方面的疑问私底下是可以直接找我的。因为习惯了面向技术方面的,措施方面是不太严谨的,所以大家体谅一下。
刚才介绍了我是负责海外移动化的开发工作的,其实我在这个公司已经有4年了,其实我刚开始的时候,我们公司还是做这个PC端的产品,然后大概在12、13年开始就做这种移动化的产品,所以我是跟随着它从PC端转变到移动化的过程的。里面讲的一些经验大家估计会有一些收获的。
第一个就是说我们先介绍一下这个公司在海外移动化的一些业务。移动这一块的话其实我们做的时间并不长,我们的角色主要就是说我们是做移动产品的一个开发者,还有就是那个使用一些共有云的使用者这样的角色,所以第二块的话,我主要讲的是在我们使用公有云的时候一些运营体系上的一些变化。
我们怎么样快速让自己的产品马上上线?一个比较重要的就是让所有的公司都要自动化起来,其中我会介绍一个,也是一个比较重要的一个工具吧!
我们公司其实现在主要主营的是一些手机,比较重要的是猎豹的清理大师,我们的用户量70%都是来自海外的,现在的话,大概全球用户量是在8亿左右,活跃量是3.4亿。
在这个用户量底下其实我们整个公司只有4个运作人员,对,到目前只有4个,一开始只有2个,对。后面也会讲到怎么样在一个有限的人力下面去维护大用户量的一个移动应用产品。
回到我的主题上,如何快速的构建这个海外移动化的应用基础和环境呢?下面提到的第一点,这个比较重要,把服务架构在公有云上,让专业的人去做专业的事情。
让所有东西自动化起来。
我们的服务其实是基于一个海外的一个比较大的一个公有云厂商,具体就是A打头的,对,当我们用到这么大的公有云厂商的时候,它为我们的产品带来什么优势?我们的产品可以很便捷的环球化的做部署,举一个例子来说,我们在美国有我们的数据中心,但是我们刚建立数据中心的时候其实我只用了10分钟,在美国只用了10分钟,我甚至都还没有去美国,我们现在的集团布点现在在各个洲都已经有了,在日本、澳大利亚还有巴西这些地方都会有。
有公有云这一个东西,我都还没出过国的人,我都可以在世界各地部署我们的数据中心,这个是一个比较大的优势吧(我们的)。
他让我们的产品可以去弹性的做到一个扩展。就是从横向、纵向都是可以的,譬如说,刚开始我们的用户量没有这么高,压力也没有这么大,我们可以在同一个数据中心里面,我基本上没有太感知这个业务量上涨的情况下,他自动可以把我的资源给扩容上去,从我们的开发架构上面是需要有所考虑的,其实这个是一个很简易的方式就可以让我们抵抗这样的一个快速的增长,都可以有一个很稳定的服务提供给用户的,就是有一个很弹性的扩展。再具体点来说,可以根据我们的用户量把我们服务的资源,弹性的扩充上去,从几台扩充到几十台、几百台,这样子,这个是一个弹性的扩展。
在我们的公有云之后也有一个成本上的优化,再举一个例子,譬如说,我们现在要部署一个服务给我们的用户,服务在我们的后台上最基本的资源就是服务器,是我们的网络资源,大概就是这样的一些资源,但是,如果现在老板说我要在海外推出一个这样的产品给我们的用户,我们不可能说在海外先租用一个机房,买一些服务器,招聘一些开发人员去做这个事情,是啊?这样前期的投资成本太大了,是吧?所以就是要按需来收费,前期的用户量不大的时候,其实我的成本是很低的,我们用的公有云用户量大概在百万的情况下,在当时那个情况下,我们每月的投入的成本也就在10美金以下,对。大概是这样的一个成本比例。后来再随着用户上涨的情况下,其实那个成本趋势是处于那种很抖的趋势在上涨。这三方面是我们的公有云端带来的优势。
很多厂商都会有一些简单的用户身份管理的服务,这里不可以具体说,一些身份验证等等,第二个就是说,其实在我们这个手机APP里面也是一个很重要的东西,就是跨设备需要同步我们的用户数据,比如说,我在我的IOS的设备上我在听一首歌,我换到安卓设备上我需要从断点开始听那一首歌,这个是需要有一个跨设备之间的数据同步的,这个东西如果要自己做的话也是可以,但是需要有一定的人力成本,在公有云上是有提供这样的一些服务的。
我们其实刚才在CA还有华为的云管理方面也有提到用户行为的东西,其实这块也是在一定量级的情况下也是可以使用的,让你的活跃量或者是用户点击某一个按纽的转换可以更快捷。
推送服务。APP需要向手机推送一些消息,比如说新闻、更新等等,推送服务就不需要自己去做一些开发,都是现成的,比如说有一些特殊的需求,在安卓上推送一个消息,里面是带有图片的,这种可能是有一些厂商是不提供的,这个具体的可能就需要自己去开发,一般切断下是不需要的。
我们第五块就是CDN。CDN就是说,我们在海外的用户分布是很广的,其实各个地方的网络情况真的你是不可预见的,我们平时会遇到的就是巴西的用户,他们特别奇怪,那个网络环境,比如说印度的。它会在世界各个结点会有自己的资源。用户访问的时候先会访问到他的资源,然后才会到我们的服务里面,然后就可以提高我们访问的效率,也可以提升用户的体验。这只是列举了其中一部分,其实还有更多的一些,这只是其中一部分。
有了公有云之后,我们就用4个人去维护一个几亿用户量的一个产品的时候,我们是需要把我们的所有这些人力可以做的东西都变成自动化的,我们大概有这样两条线路吧。
我们怎样自动化的去管理我们整个资源的生命周期,从我们的服务器出来,然后到我们服务器下面,整个空间都是有一段生命空间的,怎么去自动化的管理它?
怎么去快速的持续的交付我们的产品给用户去使用,这是需要着重的去做自动化的两条线。把这两条线路做通的话,其实就不需要太多的人力再去维护我们的产品的环境了。
我们怎样去自动化的管理我们资源的生命周期?大概会有这三块。细节我就不一一的说了,可以大概说一下这三个板块大概是什么意思吧!
从我们的服务部署到他的上下游的关联,就是说一个服务怎样变成一个用户可以使用的一个后台服务,大概会经历这4个环节。后面每一点都会大概说一下在传统。
下面的板块其实也是很重要的,就是去监控我们整个的这样一个服务,就是为了保障我们用户的满意度一直都是处于比较高的点上,我们也花了很多经历去做这种监控的事情,还有就是我们的一个模型,我们这些所谓的服务都是要很多的数据来源。我们都会提供一系列的技术数据,让我们的产品可以顺利的、完整的、有效的提供服务给用户。
第一点就是我们的模型,模型就是说,其实我们一开始就是从自建IDC变成了云端,一句话就是说,上了云端之后这些事情就变得很简单,而且很多都不是你的事情了,就是不用管太多东西,对,我就不细说每一点是什么意思了,反正记住这一句话就OK了,比如说这一块的监控,还有刚才说的服务提供这一块全部都是这样子的。就是说都是可以自动上了云端之后就变得很简单、很简便。
在这里会提到在云端的时候我们会用到这个标红的这一例,我们现在在海外移动化产品里面进场会使用到的一个部署管理的工具,它基本就可以把这一块的事情用一个工具很快的就可以都管理起来、做起来。后面这些工具我可能会详细说一下,也大概调研一下这个工具大家有听说过的吗?有听过说吗?好象还有啊!有两个。
在这一张重点说一下,技术人员可能会挺有收获的,管理的你可以推荐他们去使用,其中这个配制管理、应用管理,管理我们整个公有云,到一些任务下放都会集成在一起,在欧美是一个很火的一个工具,是开元的,不用钱。
支持的大概的公有云会有这一些,其实都是一些海外比较大的厂,它会支持一些我们自建的私有云,里面有一个docker,在我们技术圈是不怎么提的,这个是不怎么够格的,这个我也稍微提一下,这个也是支持关于docker的技术管理。
我们为什么选这个工具?其实也是官方说明的一些介绍,怎么说呢?简单的话,譬如说这一块工具的使用在我们公司的话,我不需要怎么做拓展宣传,就是很简单的,高效的话,我们把整个工具、整个发展起来,大概只用了3个星期左右吧!我就把整个工具都给推广起来,放在我们整个业务的长线里面去了,然后就完成了刚才上面说到的这几点的东西,他都可以做到,所以它是一个比较完整的一个工具,它也是一个很安全的工具。
Python,这个是我们经常会用到的语言,我们比较熟悉。
这个有点暴露了,我们海外服务就是基于AWS做的,就是公有云厂商,因为和它会有一个紧密相连的一个属性,天然的属性,所以我们会选用这个工具。
这一项工作的技术在我们技术圈、在开元社区里面也是一个很活跃的这样一个工具。从上面的一些数据,收藏、开元的数目来看可以说都是一个很可观的数字。
我们用这个工具(Aesible)来做一些什么事情呢?这个是在我们整个产品里面比较简要的一个服务架构了,下面会有具体的提供服务的一些服务器,数据库,在前面会有我们的运营。这样说起来,好象我这样说都说了几分钟了,说了1、2分钟了,然后你尝试一下,如果在使用AWS把这整个服务架构起来,大概会用1到2个小时,就可以把这整个服务给弄起来。我用AWS的话,我大概是在1分钟以内就可以把整个服务环境给弄起来,这个就是我们拿这个东西来做的第一个事情。
这也是一个比较技术的一个话题,就是我们的生产环境怎么样和我的测试环境,让它们保持一致?我们现在一些移动端的产品有一个很大的问题就是说我们要快速迭代,但是很少会关注迭代出来的效果,然后经常会出现一些事故就是造成用户的满意度突然就掉下来了。我们每次的迭代都会先有两个环境,有一个生产环境、有一个测试环境,去保证我们的服务是可以完整、有效的去交付给我们的用户。
不一致的话会造成什么问题?增加运营人员的工作量,生产一个新的版本就会出现很多新的问题,加班熬夜什么的也在所难免。因为种种这样的东西,我们其实没办法敏捷起来,我们现在经常会谈什么敏捷开发,是吧?我们没办法敏捷起来,因为我们总有各种的顾虑,总怕出问题,所以就是没有办法敏捷起来。
我们做的就是可以让我们的这个生产环境还有我们的测试环境变得一致,大概怎么做?我们的生产环境在右边,测试环境在左边,我们整个部署这个环境都是用相同的工具、相同的人去做的,只是不一样的就是在我们的测试环境里面,里面的资源的成本会比较低一点,但其实在里面一些技术层上面的,里面是一模一样的,测试环境成本会低一点,成本会低一点,生产环境的成本高一点之外,其他都没有什么区别了。我们整个现在的发布流程就是先跑通了这个测试的环境,然后我们的QA、各种的保证产品,测试部门都先跑通,然后再上我们的生产环境,由于我们的测试环境和生产环境基本上是一致的,所以可以大大的减少由于我们工程师的一些错误带来的一些用户满意度的一些问题。
在以前我们整个发布的流程来说,就是提供服务的一些资源,资源里面的代码是用一些手段传上去的,自从用了公有云之后,我们的变成就是说,直接不去触碰资源里面的一些代码了,而是把整个资源给换掉,公有云可以很快速的交付一个资源给你,就没有一个文件更新的过程,也是为了提高我们的敏捷吧!就是我们可以快速的去做一个发布。
这一块篮-紫涉及到了一个持续的发布的理念,下面会持续的说不同的发布是具体怎么做的,普通发布就是比较常规的,对用户造成影响的一些发布,然后依据那个重要程度我们就会慢慢往下面去移,然后发布的时候就是一个很严谨的一个过程了,这些发布的工作都是用这些工具来做的。
我们先说一下普通的部署流程吧!普通的部署就是说,其实我就刚才提到了,就是把一个旧的资源给挪出来,然后往里面添一个新的资源,大概有5个资源我们就重复这个动作,然后5个就完全被替换出来了。我们叫蓝-紫的部署,就是说这块是一个蓝色的环境,这块是一个紫色的环境,蓝色的环境是更新前的一个环境,紫色的是我们将要更新的一个环境,在篮-紫发布的做法其实就是说先根据这个蓝色的环境创造一个基本一模一样的紫色环境,只是里面的资源全部都是用新版本的服务,然后在前面的均衡器里面来把这个直接换成紫色的环境,然后这个过程就完成了。
为什么会用到这样一个部署?在我们普通的部署流程里面,其实中间会有一段时间,出现新旧版本混合的一个时间段,虽然很短,但是也会出现,里面总共只有5个资源,4个是旧的,1个是新的,就会出现这样的情况,一些稍微重大的我会用这种做法,换过去之后一切都是新的环境了,里面切换的时间会很短。
蓝-绿的部署,这个和前面的蓝-紫部署是差不多的。这种会变得更加的严谨,因为在新发布的环境和旧环境是可以同时存在的,然后新环境可以让从业人员各种测试,就是你怎么玩都可以,就是说他们会测试的更加严谨起来,发布后的那个完整性也是最高的(在产品里面)。这里面也会涉及到一些细节问题,也有一些人工操作的问题。
我的分享大概就到这里了,讲了这么多的话我总结一下吧!
1、大家要记住的第一句话就是,比如说老板说要在海外拓展一个产品给客户去用,问你方案的时候你不要害怕,你就说几分钟内这个事情就可以做完了,你只要记住这个事情就可以了。
2、下面一些细节也可以,可以私下交流,大概是这样的。
原文发布时间为:2015-7-14
本文作者:孙博