钛媒体旗下的钛坦白微信课第26期,请来了8位对“企业上云”有深刻理解的钛客进行分享。本文根据七牛云高级副总裁兼首席架构师李道兵的演讲整理。
李道兵是前维基百科中文管理员,前Debian Developer。曾加入金山实验室,主要研究分布式文件系统glusterfs。在盛大创新院,李道兵先后参与盛大网盘和盛大云项目,担任盛大云技术委员会联席主席、资深研究员,主要负责存储相关的研发和质量保障工作。现在七牛云任高级副总裁兼首席架构师。
以下是李道兵的分享,由钛媒体整理:
大家好,我先做一下自我介绍。我是七牛云的高级副总裁兼首席架构师,之前是在盛大云工作,再之前就是在金山工作过,现在在七牛这边主要负责存储和企业服务相关的一些业务。
我分享的题目是《上云能为企业解决哪些问题?》。我们都知道,引入一个新概念,通常是为了解决一个问题。比如说分布式是为了解决单机性能瓶颈的问题,SOA是为了解决单一服务过大的问题,还有其他的林林种种的新概念也是为了解决一些问题提出的,那么云究竟能帮你解决哪些问题?这些问题在你的企业是否存在?这个才是你上云决策的第一步。
上云的理由1:降低采购周期,提高资源利用率
我们首先来思考一个比较常见的场景,比如说你的一个业务团队已经做了一个新业务,他需要上线,考虑到容量和性能的原因不能跟其他组共享机器,就带来了第一个问题就是采购周期的问题,而通常来讲这个采购周期快一点也需要一个月,包括大概两三个星期的供应商发货或者安装上架这些流程,这个是带来的第一个问题。
第二个问题是利用率的问题,就是说如果你的业务上线了,业务上线的时候考虑到让用户的体验更好,你通常机器会多一点,随着你的业务扩张,你需要继续地购买机器,增加机器,当你的业务量下降的时候,其实这些机器就很难回收,因为他的上面已经部署了各种各样的服务,而相应的收缩也没有太好的办法,即使收缩了之后,这些机器也很难转让给其他组,因为各个组需要的配置是不一样的,这就带来第二个问题也就是机器的利用率其实很低。
在第一个层面来讲,云至少能解决你前面这两个问题,比如说当你完成上云了之后,尽管你的第一次初始投入的成本比较高,同时你还会为供应商付出一些费用,但是你得到的好处是什么呢?第一个你的利用率可以大幅度提高,之前一些公司统计下来,以CPU和内存为基准的话利用率可能在10%左右,甚至更低,上云用虚拟机之后这个利用率可以达到30%左右,这个层面直接把你的成本降低了2/3。另外的好处就是采购周期大幅降低,之前的采购周期可能是一个月左右,而利用了云这方面的话,你可以很轻松地把这个周期降低到几分钟。
除此之外,还解决了你很多其他的一些问题,比如说常见的硬盘故障这些问题都天然的解决了,当然也带来新问题,比如说虚拟机本身的复杂性,你虚拟机常用的块存储软件Ceph的复杂性,这也是为什么上云来讲通常需要供应商来解决,而不是自己来做这个事情。
上云的理由2:降低研发、运维难度
但是从另外一个角度来看,只是这个层面的上云,没有解决你的企业里边最关键两组人员的效率问题:一个是开发者,对开发者来讲,上云和不上云其实是没有太大的差异;第二是运维,对于运维人员来讲,在物理机时代他可能只用管理一百台物理机,但是在上云的时代,他可能要管理三百台虚拟机,也就是说对运维来讲他的任务反而可能是加重了。
接下来我想讲讲第二个层面上云的理由。首先绝大部分企业特别是偏传统的企业都招不到足够好的研发人员和运维人员,比如说传统企业经常招到研发人员更多是偏向业务研发,而不是底层研发,运维人员能够做一些很基础的运维,但是比较高难度的问题其实是很难处理的,这就带来了很多偏底层的东西特别是存储、数据库这类的东西很多企业能用,但是没有能力把它管理好。比如说存储比较常见的存储可能是用一些mogilefs、fastdfs之类的软件,或者说离线存储系统用Hadoop,但是这些东西怎么把它效率提高,怎么把它整个调优的话,实际上很多人经验是不足的。
这就带来了云时代第二个层面的需求,也就是说一些比较偏PaaS的东西,比如说绝大部分公有云都提供一些RDS的东西,来替代一些传统的数据库,私有云现在这个东西还不够标准化,但是慢慢的也会有一些供应商能够提供这种服务了,像比如说存储,大家知道市面上云存储公司也都比较多,能帮你解决掉这个问题。
七牛云跟其他云的一个很本质的不同也就在于这一点,七牛云其实它更多不是做IaaS层,也就是基础服务虚拟机那一层,而更多是做PaaS层,七牛云也不是什么PaaS都做,像短信、消息这类的我们也不做的,七牛云更多做PaaS层以数据为核心的这一块的服务,比如说刚才提到存储、富媒体,分发、直播、大数据还有包括一些人工智能都是我们比较有经验的一些方向吧。
在这个层面其实有很多服务,像前面提到的一些存储服务,还有一些数据处理服务,数据库,还有一些各种的多媒体的一些处理,甚至说现在流行的一些直播的业务都有合适的一些PaaS供应商,这些供应商能帮你解决到这些问题,这时候上云最大的目的,就是购买技术和对应的一些服务来降低开发难度,提高开发效率,让你的产品能够更快的出来,能让你在互联网时代更敏捷一些。
特别是考虑到现在这个时代带来一些新的挑战,比如说IoT这越来越流行,IoT带来的挑战就比以前大很多,以前觉得很多的数据,数据库就放得下了,因为大不了几百万,几千万条数据,但是现在一个简单物联网的sensor,比如说一个sensor一秒钟一条数据,简简单单来讲一万个sensor一天就会产生六亿条数据,这对普通数据库来讲,一天的数据量其实都已经装不下了,更别说我要长期收集这些数据,这也是为什么越来越多基于PaaS层面的服务慢慢变成大家一个必需品。
引入这个层面的服务,最大的好处是什么呢?是能够把你的最好的研发人员从底层系统挪到你的业务层系统,让你最有价值的业务层能够比较快速的发展。
这里顺便插一个观点,我们非常认同把控制流和数据流分开。为什么呢?因为控制流(比如登录、交互以及动态生成的网页 )一般比较在意响应性,所以说非常推荐你租一些8线BGP机房去解决。 而数据流(比如图片、音视频、css、js等)比较占用带宽,这时候非常建议你使用一些便宜的机房或者直接使用公有云来解决这个问题,通过CDN降低你数据分发成本还能保证质量,这样的话就比较方便一点。
上云的理由3:改善服务治理
大家都知道,最近流行一些新概念,比如说微服务、无服务器的架构,等等,这类概念其实应该算是以前SOA机制的一个延伸,在这个延伸上面,其实SOA解决了我们之前单一服务过于复杂的问题,而提供了我们如何把服务拆开的一个机制,但是SOA治理就慢慢变成越来越头疼的一个问题,我们后面就做了很多一些服务注册来解决。但是随着docker等容器化技术的引入,我们慢慢看到新的一些曙光,这些东西能够解决掉我们以前不好解决的一些问题。
先讲一个简单例子,比如说A服务调用B服务,A服务和B服务都是分布式部署的,也就是说他部署了很多个节点,这就带来了一些问题。比如说B服务容量不够了,这时候我们肯定要扩容对不对?扩容的时候来讲,就带来第一个问题就是A服务如何感知,A服务如何知道这个B服务已经扩容了,它怎么知道这些新的节点在哪儿?这时候可能一些服务注册可以解决掉这个问题。
再讲另外一种情形,比如说我们知道,由于种种原因,不是每个服务节点都能保证100%的可用性。但是如果我们把每个服务节点的不可用都暴露层用户能够感知到错误的话,用户感知的错误率将大幅度提升,特别是经常你SOA架构里边,服务套服务,很多服务的时候,我们就需要在内部引入一些重试机制。重试机制就带来几个问题:B服务这个请求是不是能重试的,A怎么知道;第二,重试其实有好几种手法,第一种手法,我先把之前的请求切断再发一个新的请求到其他服务器,第二种手法,就是说我不切断当前的请求,只是说向一个新的服务器发起一个新的请求,看两者谁先返回我就要谁的数据,再把另外一个给取消掉,但是这就带来一个问题,A服务如何知道这些,如果每个调用B服务的客户端都需要去实现这一整套机制,会不会增大调用端的一些复杂度,而让大家不愿意去做这些重试优化。
其他还有一些问题,比如说灰度部署,我们经常需要对某个服务进行一些升级,甚至说升级的版本还不止一个,比如说我想引入一个特性版本,但是不想正式起用,我希望有少量的请求打过来,我想看一下效果,这种情况也是比较常见。之前我们有很多机制来做这个事情,但是对人力的消耗很大。
通过容器化和基于容器化的服务治理技术可以解决上面的问题,他会在服务中间加上一些中间层,这些中间层来解决掉服务间相互调用的问题,你的开发者只需做简单的调用,这个中间层会自己去解决依赖服务的扩容、重试等问题。依赖于容器化的相关能力,治理技术也能提供快速的扩容能力、灰度部署等能力。
这种机制再搭配上容器化技术可以达到一个比较偏理想的境界。这个偏理想的境界来讲,就是说以前我们是建一朵云,这个云本质是一大堆虚拟机。而通过容器化的治理机制,你只需要知道你在某个机房有一朵云,这里面虚拟机什么你完全不用了解,你只需知道你这朵云总共有多少内存和多少CPU,你的服务单个实例需要多少内存和多少CPU,同时这个服务需要多少个实例,服务之间的调用是什么,就可以了,你部署的时候不用指定机器IP这类的东西。也就是说我们最后想达到的境界,就是说我们只知道机房的概念不再知道机器的概念。
当然这个事情说起来比较轻松,可能实现起来就比较复杂了。因为特别是这里边还涉及到一些安全机制的问题,比如说现在最常用的容器化机智是docker,但是docker的安全性一直是比较堪忧的,所以这还是未来,现在还不太现实,只是大家对这种未来都是比较乐观的。
现在还有一些比较偷懒一些机制,即所谓的serverless机制,就是无服务器的机制。比如说amazon的 lambda还有我们七牛提供的UFOP其实也是这种机制的体现,这种机制的好处实际上是把你的代码挂在某些流程的钩子里边,然后通过你的代码只需处理一些简简单单的输入输出逻辑,你根本不需要管太多的一些调用相关的逻辑,而相当于是其他一个框架来负责调你,整个服务的一些伸缩这类的你也不用管,你只需把代码逻辑实现好就可以了。当然不仅仅是运维的负担,开发的负担也降低了,因为现在A服务调用B服务只要简单走一个调用就可以了,你不用去考虑很多重试机制,很多高可用机制,这些机制都在你这个中间层里边去解决掉了。
如果你的服务体系比较复杂,非常推荐你去了解一下最近容器化方面的一些技术进展,比如说像kubernetes、mesos等。 比如说刚才提供的一些所谓的服务注册这类东西,也整合了很多调用机制,偶尔还提供一些功能,比如说包括一些监控也整合在里边,当然七牛也提供这方面的服务,如果你在服务复杂到一定程度的时候,引入一些好的治理手法来讲的话,能够极大程度的降低你的运维的一些负担。
钛坦白群友Q&A:
佳音:您介绍了七牛云更多是在PaaS层,PaaS更多是在售卖技术,不知道我这样理解对不对?您能简单跟我们讲讲paas的发展趋势吗?中国的paas市场目前处于什么样的阶段?
李道兵:其实PaaS层也是卖服务,只不过IaaS层主要面向的对象不是开发者,而更多是说采购或者说是运维这个角色,而PaaS更多面向的客户,直接面对的就是开发者,因为他是帮开发者减轻很多工作量的。
其实PaaS也分很多种,像七牛集中在与数据相关的这一块,我们知道也有一些邮件的PaaS,短信的PaaS等等,各个PaaS的发展阶段,其实你得分开来看。整体来看,PaaS其实是在一个相对早期的阶段,存储还算不错的,算是比较成熟的,而其他很多可以用PaaS的其实还没有完全用起来,当然也跟网络现状其实,比如说网络质量其实有一定的关系。
另外来讲,中国整个的企业服务都在一个比较早期的阶段,甚至我们看到,SaaS的利用率都不是很高,也就是说我们慢慢会看到可能是SaaS和IaaS先发展,PaaS可能会延后一些,因为IaaS偏基础,SaaS直接针对企业的每一个员工,而PaaS是针对开发者,所以这个会慢热一点。
佳音:paas是在走向垂直化吗?目前有哪些领域还很难切入?
李道兵:PaaS肯定是要走向垂直化的,因为PaaS整个领域太大,这个才是走向垂直化非常重要的一个原因。很多领域难切入其实并不是在于没有这种PaaS服务,而是怎么把PaaS服务和现有的服务整合起来的问题,因为更多的原因是网络延迟不可控方面的吧。
佳音:未来PaaS的增长重点是什么啊?
李道兵:我觉得接下来像存储、像富媒体、人工智能、大数据这几块,PaaS增长都会比较快一点。因为大家也看到,最近几年数据越来越多,数据的价值越来越大。
为什么数据相关的PaaS增长快呢?还有一个原因是,数据的PaaS可以自己形成一个闭环,而不是非常依赖于IaaS层的东西,所以说他可以比较独立的去进行一些发展。
(本文首发钛媒体,根据七牛云高级副总裁兼首席架构师李道兵在钛坦白上的分享整理)
………………………………………………
钛坦白第26期八个小时的分享已经全部结束,干货会陆续发布在钛媒体上://www.erschrecken.com/tag/1508094
报名入群听课:在微信公号“钛媒体”(taimeiti),发送“钛坦白”
与钛坦白合作,推荐钛客:请与钛坦白负责人佳音联系,邮箱jiayinge@tmtpost.com
根据《网络安全法》实名制要求,请绑定手机号后发表评论
可以看出李总对云的理解很透,讲得很清楚。