闲话云计算(二) 什么是云计算?

提到云计算的定义,可谓没有一套统一的标准。有的人说AWS这样的就是云计算,有的人说VMware也是云计算,还有的人认为Docker和Kubernetes是云计算。有的人认为云计算一定是分布式的,有的人认为云计算就是IaaS、PaaS和SaaS,还有的人认为只有公有云才是真正的云计算。很长一段时间,云计算的边界都很模糊,云计算从业人士在做科普的时候,最喜欢拿供水和供电服务做类比,只是在云计算里供给的产品变成了IT服务。但是这种类比还是有隔靴搔痒的感觉,总觉的抓住了什么,但是好像又没有完全理清头绪。为了定义云计算,就要提取出它的显著特征,这些特征应该是明显区别于传统计算方式的。下面是笔者抛砖引玉整理出的四个显著特征。

第一个特征是软件定义,也即IT资源的管理和分配都通过软件实现,无需人工干预。传统的IT架构里,资源的申请通常需要资源的管理员手工配置提供。比如申请一个数据库物理机,首先需要基础环境做机器上架和网络布线,之后需要操作系统管理员安装操作系统并配置网络等,然后需要存储管理员分配存储,数据库管理员安装数据库,然后还需要安装监控软件,配置审计等等。这些环节不仅耗时长,还是完全的黑盒子,对于最终使用者而言,需要经过漫长的等待才能得到最终的资源。在使用期间,如果需要调整配置甚至重新安装系统,又需要一个漫长的等待过程。这中间涉及的沟通、协调成本就更不用说了。对于资源的使用者而言,最希望的就是通过填写一个简单表单,点击确定,然后通过审批后就能立即获取到资源。如果需要修改资源配置,也仅仅是点击几下按钮就能搞定。这样的服务体验相比较传统的IT服务供给方式,无疑要好得太多。而要实现这个目标,就需要去掉所有需要人工干预的环节,让机器自动化的来做各种资源的分配和供给。机器并不是人,它需要依赖软件定义的规则来做事情,这就是软件定义的由来。这件事情并不简单,因为IT环境本身就是一个复杂的系统,从大的层面来说涉及计算、网络、存储、应用、运营。其中每一项涉及的复杂度也相当惊人,比如网络,怎么把数据中心的网络改造成软件定义就是一个让人头疼无比的事情。因为传统的IT环境的管理员是人,而在软件定义的IT环境里,管理员变成了机器。现有的技术只能让机器按照人定义好的规则做事,而一个IT环境里规则是异常多且复杂的,这就对机器所依赖的软件的能力提出了很高的要求。很多时候,传统的部分IT环境很重要,但是又无法改造成软件定义,就只能推倒重来了。依然以网络为例,为什么基于X86服务器的虚拟网元设备在公有云成为主流,就是因为传统的一些硬件网络设备没有完善的软件接口,无法用软件定义,当然硬件网络设备本身的可扩展性瓶颈和性价比也是重要的原因。

第二个特征是服务产品化,就是把IT服务包装成标准化的产品,向外部客户提供。服务产品化的一个例子是运营商推出的移动套餐,分为多个规格,每个规格有对应的明确的通话时长和流量限制,同时也对应不同的购买价格。这些套餐就是标准化的服务产品,客户可以像在超市买东西一样,根据自己的需要购买不同的产品。回到云计算,在传统的IT环境里,各个IT资源的管理员充当着服务提供者的角色,通常也会对所管理的资源定义不同的规格和使用成本,但这些规格很多仅仅存在于纸面或者口头约定,并没有通过一个自助服务界面对外清晰明白的展示出来供使用者挑选。有的时候即使是展示出来,也因为需要使用者填写过多细节而让人望而却步。一个好的产品不应该向客户暴露过多和客户使用无关的细节,同时应该要做到界面友好,易于使用。这些对于普通的商品实现起来没有太大难度,但是对于IT服务来说就具有很大的挑战性。IT服务本身涉及很多专业知识和术语,不同场景、不同客户(或应用)对资源配置的需求可能有很大差异,怎么在标准化和差异化之间找到平衡,对IT服务的产品化开发提出了很大挑战。此外,服务的产品化也包含了服务的可计量化。IT服务里包含的服务种类繁多,很多传统IT服务之前根本没有计量的概念和手段,即使有也是非常的粗糙。比如传统数据中心里的网络资源很多都是在数据中心内共享的,很难做到精细化计量。而服务的产品化就会要求每一个可以使用的IT资源都应该可以被尽可能精确地计量。

第三个特征是服务自助化,就是让服务的使用者可以通过服务界面自助的申请和管理IT资源。服务自助化的一个例子是银行的ATM机,可以允许客户通过ATM机自助式的完成存款、取款、转帐等等服务。IT服务的自助化,依赖于前面提到的软件定义和服务产品化,只有首先做到这两个,才可以进一步实现服务的自助化。服务的自助化会极大的提升IT服务的体验。传统的IT环境下,申请资源或者做一个较复杂的变更,需要申请者耗费极大的精力去沟通和推动流程。自助化的服务体验使得使用者摆脱了这些繁琐的任务,可以把精力更多的投入自己的业务领域。

第四个特征是多租户,也即允许多个用户使用同一个界面申请和管理资源,同时确保不同用户之间的资源完全隔离。在云计算里通常通过namespace(命名空间)来实现资源隔离,一个用户的namespace内的资源,只能被这个用户访问和使用,其他非授权用户禁止访问。在资源隔离的基础上,多租户还需要实现资源配额管理和用户鉴权管理。配额管理就是给某个namespace设置一个资源使用的上限,比如规定CPU、内存和存储的使用量的上限。用户鉴权管理就是可以管理某个用户对于某个namespace的权限,比如A、B两个用户,我们希望A用户对于某一个namespace有管理员权限,B用户对于同一个namespace仅有只读权限,这就需要实现鉴权管理。

从上述四个特征来看,就可以很好的区分一项技术或体系是不是云计算。比如大家熟知的VMware虚拟化套件,并没有多租户的能力,因此并不能认为是一个云计算的产品。但是VMware在软件定义、服务产品化、服务自助化方面已经做的很好,所以对于没有多租户需求的场景能够适配的很好。

很多人可能会说,为什么这些特征里没有弹性伸缩呢?毕竟“按需使用、弹性伸缩”是云计算广告最常用短语,而且弹性伸缩经常出现在一些著名的云计算使用案例里。这里没有把弹性伸缩列入显著特征的原因是:它并不是云计算所必须的特征,只要实现了软件定义、服务产品化、服务自助化和多租户,弹性伸缩就是自然而然的结果了。弹性伸缩本质上就是资源监控服务再加上一套伸缩策略的实现。目前在主流的公有云里,弹性伸缩已经做成了一个专门的服务产品。

还有的人可能会问,分布式算不算云计算的特征呢,毕竟云计算用到了大量的分布式技术。答案仍然是它目前并不是云计算所必须的特征。云计算使用分布式技术最早是从公有云而来,比如大家熟悉的分布式存储、分布式消息中间件等。背后的原因是公有云的单个资源池规模会很大,并且大量使用廉价的X86服务器,这对资源池的扩容能力和容灾能力提出了很高的要求,只有分布式技术可以满足需求。与公有云不同,私有云的使用企业通常没有那么大规模的资源池,并且对IT资源的可用性、可维护性和性能有更高的要求,现有的分布式技术并不能完全满足需求。比如现有的分布式存储技术在容灾、使用场景、性能方面距离传统的SAN存储还是有一定差距。所以现阶段很多私有云的建设会同时包含分布式技术和集中式技术。

猜你喜欢

转载自blog.csdn.net/zhangli_perdue/article/details/85599803