云计算科普——私有云和共有云
云的概念除了出现频率很高的SaaS,PaaS和IaaS之外,还有两个概念也经常冒出来,就是私有云和共有云(private cloud, public cloud)。
这两个概念是从另一个侧面描述云的用途。
所谓私有云,就是企业内部使用的,不对外部开放的云系统。
私有云是企业自身为了利用云的各种优势而开发的云系统。一个大的企业,集群肯定是必不可少的。而一个新的系统or功能想上线,就不得不面临申请资源,安装软件,配置环境等一系列的问题。如果可以让资源分配这一块流程化自动化,无疑可以大大提高工作效率,而且可以减少人为操作造成的错误。比如说,一个功能如果需要10台8CoreCPU,100G内存的机器,安装Linux XX版,Oracle XXg,并且五台在A数据中心,五台在B数据中心。如果要认为操作,会非常麻烦,而且不一定就有现成的机器,如果需要购置机器,那就更费事了。同时,企业为了应用系统的安全,隔离,维护和升级的考虑,一般不会在一台物理机器上运行两个不一样的系统,这时候一台配置很高的机器可能大多数时间并没有被跑在上面的应用充分利用。这也是一种很大的资源浪费。
如果使用云系统来管理集群,把资源的分配,配置和管理都流程化标准化,上面提到的问题都会迎刃而解了。企业的私有云可以是PaaS,也可以是IaaS,这个需要根据企业自身业务需求确定。如果一个公司的业务就是跑war包,每个系统都是独立的war包跑在应用服务器上,那做成PaaS很合适。每个系统上线的时候,只要配置好自己需要的资源(CPU,数据库,存储,带宽,数据中心位置等等)就可以扔给云了。企业的私有云是为企业量身打造,肯定会更加方便适用于企业自身的业务。
私有云因为是为了企业自身服务的,所以在权限管理,安全等方面的要求可以不做的很高,主要还是集中在解决繁琐的资源分配,应用系统部署,应用系统的稳定性可用性上。
相对于私有云,共有云的概念就是想外部开放申请和使用的云系统。相比之下就是需要增加用户管理,安全策略等模块。GAE,Amazon EC2这些都是共有云。
------------------分割线---------------------
Why Cloud
习惯了传统模式之后,可能一下无法理解为什么要兴师动众的上云系统。随着IT业的发展,公司的基础设施规模开始飞速扩大,更好的管理和利用这些资源慢慢变成了一个问题。就个人来说,我对装系统配环境是无比痛恨的。服务器压力大,一会儿硬盘坏了,一会儿路由器出毛病了,机器一多了,故障率再低也几乎每天都有几个机器出问题。如何让这些问题不去影响到上层业务,是一个必须解决的问题。
IT界有句俗话说,所有问题都可以通过增加一层来解决。
增加一层,让上层应用不再直面自己不应该处理的问题,让增加的这一层专门处理普遍的,通用的问题。比如,增加Spring这一层,就可以把Runtime Dependency交给Spring管理;增加Hibernate这一层,就可以把ORMapping交给Hibernate处理,应用不再直面数据库。同时,也增加了隔离性。当Spring中的一个bean改变的时候,别的bean可能并不需要改变代码,只要改改配置文件就行了。同样,从MySQL迁移到Oracle的时候,隔离性也可以帮助我们尽量少的修改代码,而通过修改配置来适应新的环境。笔者曾经悲催的管理过一个SharePoint站点。为了应对站点down掉,站点迁移等一系列的问题,最佳实践就是增加虚拟机这一层,把它装到一个虚拟机上,配置好一切之后,备份初始虚拟环境,然后让虚拟机跑去吧。每天备份SP数据,就算虚拟机挂了,直接用备份的初始环境恢复数据就行了,最多损失一天的数据。
对于企业遇到的基础设施的问题,这里需要增加的一层就是云。云可以通过虚拟化来管理硬件资源,进而可以提供更多的服务。资源分配,资源利用,环境配置,资源管理,环境监控,错误恢复,应用迁移等等都可以在上层应用没有注意到的情况下来进行(比自己玩虚拟机高级多了)。正所谓,不要重复自己,如果一件事情做了一遍又一遍,就应该想办法让它自动化。云平台就是自动化管理硬件资源的解决方案。
如果需要配置一个LAMP环境,手动安装可能能需要下载image,安装,配置,漫长等待后还要测试。不出任何问题可能也要折腾个一天半天的,身心疲乏不说,可能到时候都不一定能成。如果IaaS服务商提供了现成的配置好的image,租用云主机可能只需要将它挂载到云主机上就行了,整个过程可能都不到一个小时,而且保证能用。对比之下,云平台优势就能看得出来了。