云计算成为当前的热点,成为高科技和先进性的一个标签,所以所有的厂商或客户都想方设法把这个标签贴在自己身上,于是做了服务器虚拟化的号称自己上了云计算,做了一个数据中心也号称自己上了云计算,甚至只要应用是B/S界面的、用浏览器访问的都标榜自己上了云计算,美其名曰把应用放在云端。一时间人人皆云,厂商介绍得云遮雾绕,客户理解的云里雾里。
那到底什么是云计算呢?研究IBM、Gartner、IDC等的定义帮助不明显,作为用户,我们只要抓牢其本源(有什么价值?要获得这些价值我要做到什么?有哪些环节可以权衡?),就可以掌握什么是云计算,实现云计算要做到什么?云计算最早其实是人们希望像消费水、电一样消费IT资源,那我们平常是怎么用水和电的呢?
想用就马上能用上,无需等待。龙头一开,水就来了;开关一开,灯就亮了。而传统的IT资源如果要消费,必要经历立项、采购、安装、配置、测试调试,最后才能上线对外提供服务。再考虑到安装会涉及到网络、服务器、存储、操作系统、数据库、中间件、应用等,配置会涉及到上述所有模块,还有安全等,整个过程都不是一蹴而就的。
想用多少就用多少,能多也能少,同样也无需等待。想用多点水,龙头开大点;想用少点水,龙头开小点。消费一滴水还是放满一个泳池,都可以。传统IT如果负荷大了,SLA差了,想要扩容就不是这么简单了。首先要搞清楚真正的瓶颈root cause在哪里,网络、服务器(内存RAM、计算能力CPU、I/O能力)、存储(容量、IOPS)、数据库、中间件、应用设计,到底哪个环节出了问题;其次如何扩容,是Scale-Up还是Scale-Out,在不同环节分别有哪些技术可以选择,扩容对前端用户有无影响,能否不中断使用,扩容多快能够完成,能否自动完成,能否被自动感知并加入原有系统;扩容可以,那要缩减能力,是否可以呢,缩减后多余的处理能力是否还会产生Opex呢?
按需付费,按使用量付费。消费一滴水,就只要为一滴水付钱,没有最低门槛的限制;水厂或供水环节多余的能力完全可以提供给其他客户,问其他客户收钱;前期的建设费用、后期的运营费用全部都折算到每立方米的单价,盈亏由运营商负责,而运营商在提供客户满意服务的基础上,当然要尽可能节省成本。传统的IT系统哪怕你只使用了20%的计算机资源,你依然要买整台服务器,该服务器一开,你就要为其用的所有电力和制冷能力付钱,你无法采购1/5台服务器,也无法只使用1/5电力。
现在反过来看一下上述我们用水和电的模式如果同样要求于IT资源的消费,那我们的IT系统需要有什么样的能力,亦即我们要实现云计算,需要做到什么。当然对于任何特定的客户,不是所有阶段都要实现的,每个阶段也不是都要做到极致。翻译成云计算的术语,就是私有云客户可以根据需求和性价比自己裁剪,而公有云提供商为了有竞争力,让客户满意,通常是所有阶段都要实现,每个阶段做到尽可能好。为了更清晰地描述云计算的各个阶段,这里借用IBM对云计算各阶段的定义(虽然不完全同意IBM定义的顺序,但起点和终点是一致的,而且各阶段也不完全是串行的,必须完成前一阶段才能进入后一阶段,而是根据需要,几个阶段可以并行地做,只是根据需要和投入大小,每个阶段的进入深度不一样罢了)。IBM定义的云计算各阶段是:虚拟化管理->服务交付自动化->业务服务目录、自服务->端到端实时监控和优化->基于计量消费和动态容量优化。
按需付费,按使用量付费。如果我们只需要0.5CPU的计算能力,当然我们不可能采购到0.5个CPU,我们利用虚拟化技术来切分出0.5CPU的计算能力,所以做云计算的第一步就是虚拟化,通过服务器虚拟化、存储虚拟化、网络虚拟化将各种资源虚拟化后,可以以更小的颗粒度按需提供给用户。
想用就马上能用上。如果采用手工的流程,哪怕所有可能的服务器配置(如RedHat+WebLogic+Oracle)都预先做好了VM,直接加载就好,但还是要配置一些性能参数啊、集群配置啊、网络配置啊、安全参数啊、监控配置啊,即使所有这些预先都准备好了Guide Book,傻瓜化地输入命令也是要一段时间的,如果要配置几十台机器呢?所以云计算要实现服务交付自动化,即从底层硬件到最高层的应用,都能自动安装和配置。这里就会涉及到各种技术,各种脚本语言、流程系统、CMDB等,再考虑到应用一定不是一层不变的,有Bug要修正,有New Feature要开发,这又会涉及到版本管理、自动编译和装配、测试甚至自动测试,自动按模板部署。为了不影响前端客户的使用,部署新应用时不能让前端客户感知到,又会涉及各种技术,如高可靠性技术、轮流升级技术、仅组件更新升级技术等。
想用就马上能用上。前端用户如果有什么需要,他是否需要和云计算的提供商专门的接口人员联系沟通需求,然后等待后者提供服务呢?当然不是,客户希望无论是服务的浏览、开通、扩容、缩小、终止都能够自助完成。所以云计算的提供商都需要提供服务的目录,有一个Portal让客户自助操作。
想用多少就用多少,客户的应用突然访问量大增,要保证一致的SLA,需要有能力立刻发现瓶颈在哪里或哪些趋势一定会产生未来的瓶颈,所以云计算需要端到端实时监控和优化。这涉及到集中的监控台监控网络、服务器、存储、数据库、中间件、应用等所有环节;按照业务视角组织涉及到的所有响应环节的层次依赖关系,查找Root Cause;集中的Event事件汇总、智能溯源;自动按照预案模板优化等。
按需付费,按使用量付费。所以云计算必须提供基于计量的消费,从网络流量、计算能力、I/O大小、存储容量和性能、应用模块到用户数等,这些都是运营商的成本,收入是否能打平或利润如何,如何优化成本,如何定价更有竞争力。想用多少就用多少,容量可能会大增,也可能业务不好需要缩减、甚至终止。云计算提供商为了自身利益最大化和降低成本,必然要做动态容量优化,将资源利用率提高,削峰填谷,合理调配组合不同客户需求。