1 概述
从小型企业到全球企业,云都是一个非常热门的话题,它是一个非常广泛的概念,涵盖了很多在线领域。 无论是应用程序还是基础架构部署,当您开始考虑将业务转移到云时,了解各种云服务的差异和优势比以往任何时候都更加重要。
通常有三种云服务模型:SaaS(软件即服务),PaaS(平台即服务)和IaaS(基础架构即服务)。 每个都有自己的好处和差异。 下图总结了三种模型的主要差别:
用吃披萨做比喻,Iaas, Paas,Saas的区别如下:
传统IT的本地部署相当于是从食材、烹饪器具到用餐设备都得自己来亲手准备,然后我们才能吃到披萨;IaaS就相当于我们从超市购买食材,回家自己做;PaaS就相当于我们点了外卖,再家里吃;而SaaS,就是我们直接去餐厅吃。
2 IaaS:基础架构即服务
云基础架构服务称为基础架构即服务(IaaS),由高度可扩展和自动化的计算资源组成。 IaaS是完全自助服务,用于访问和监控计算、网络,存储和其他服务等内容,它允许企业按需求和需要购买资源,而不必购买全部硬件。
当前市场上可供选择的开源IaaS软件有OpenNebula、CloudStack、OpenStack和Eucalyptus。 但云计算中的虚拟化指的是IaaS层虚拟化解决方案,而不是虚拟机技术。
- VMware vSphere就是一种虚拟化技术,它是基于VMware虚拟化技术的虚拟化管理软件,目前在行业内来说算是最成熟,生产环境应用度最广的IaaS层虚拟化技术的解决方案。目前对整个集群的虚拟机监控管理也是最好的。但vSphere本身收费,而且监控软件还需要单独收费。
- Openstack是基于linux的IaaS层解决方案(支持多种虚拟化技术,比如KVM),是目前用户最多,影响最大的开源解决方案,得到了HP,IBM等知名厂商的大力支持,国内的虚拟化解决方案也大部分是基于openstack开发定制。主要运行在CentOS和ubuntuServer操作系统上。
- CloudStack是使用 java开发的基于linux的IaaS层解决方案(支持多种虚拟化技术,比如KVM),目前发展潜力非常不错,也得到了很多知名厂商的认可,不过相对起步比较晚,在国内的推广度也不如openstack。
2.1 IaaS交付
IaaS通过虚拟化技术为组织提供云计算基础架构,包括服务器、网络,操作系统和存储等。这些云服务器通常通过仪表盘或API提供给客户端,IaaS客户端可以完全控制整个基础架构。 IaaS提供与传统数据中心相同的技术和功能,而无需对其进行物理上的维护或管理。 IaaS客户端仍然可以直接访问其服务器和存储,但它们都通过云中的“虚拟数据中心”。
IaaS客户端负责管理应用程序、运行时、操作系统,中间件和数据等方面。但是,IaaS的提供商管理服务器、硬盘驱动器、网络,虚拟化和存储。一些提供商甚至在虚拟化层之外提供更多服务,例如数据库或消息队列。
2.2 IaaS的优势
选择IaaS有很多好处,例如:
- 是最灵活的云计算模型
- 轻松实现存储、网络,服务器和处理能力的自动部署
- 可以根据消耗量购买硬件
- 使客户能够完全控制其基础架构
- 可以根据需要购买资源
- 高度可扩展
2.3 IaaS的特点
在考虑IaaS时要考虑的一些特征是:
- 资源可作为服务提供
- 费用因消费而异
- 服务高度可扩展
- 通常在单个硬件上包括多个用户
- 为组织提供对基础架构的完全控制
- 动态灵活
2.4 何时使用IaaS
如果您是初创公司或小公司,IaaS是一个很好的选择,因此您不必花费时间或金钱来创建硬件和软件。 有些大型组织希望完全控制其应用程序和基础架构,同时又想仅购买实际消耗或需要的硬,IaaS对他们也是有益的。对于快速发展的公司而言,IaaS可能是一个不错的选择,因为您不必在需求变化和发展时承诺使用特定的硬件或软件。如果您不确定新应用程序需要什么,这也会有所帮助,因为根据需要可以根据需要进行扩展或缩小。
2.5 IaaS的例子
阿里云、AWS、华为云、金山云、腾讯云、UCloud、微软云、移动云等。
3 PaaS:平台即服务
云平台服务或平台即服务(PaaS)为某些软件提供云组件,这些组件主要用于应用程序。 PaaS为开发人员提供了一个框架,使他们可以基于它创建自定义应用程序。所有服务器,存储和网络都可以由企业或第三方提供商进行管理,而开发人员可以负责应用程序的管理。
PaaS服务一般分为框架类服务和中间件服务。
- 1) 框架类服务:Tomcat、Websphere、Node.js、Rubyon Rails、Ruby on Rack
- 2) 中间件服务:数据库(Mysql、mongoDB、Redis)、消息队列(RabbitMQ)、缓存(Memcache)。
PaaS与SaaS的区别是,SaaS直接面向最终的企业用户,而PaaS面向软件开发商,将开发语言、开发平台、开发环境自动化部署至云设施。
现在流行的大多数的PaaS平台,底层的虚拟化技术主要分为虚拟机和容器两种。前者的代表是AWS,后者的代表则是GAE, CloudFoundry和Heroku。
容器相对于虚拟机,是一种更轻量级的虚拟化技术,严格意义上来说,是一种资源隔离技术,如Linux LXC。
容器主要的技术原理,是利用Linux的Cgroups和NameSpace,对进程进行资源限制和资源隔离,需要共享同一套操作系统软件栈。所以容器比虚拟机有更好的性能,但是在安全隔离性上,要差一些。
这里面涉及到几个软件:OpenStack、Docker、Kubernetes(K8s)、Mesos。
- 1) OpenStack:公认的云计算IaaS平台,其管理的核心目标对象是机器(虚拟机或物理机),当然也可以管理存储和网络,但那些也大都是围绕着机器所提供的配套资源。近年来容器技术火了之后,OpenStack也开始通过各种方式增加对容器的支持,但目前OpenStack还不被视为管理容器的主流平台。
- 2) Docker:这里假定指的是Docker engine(也叫做Docker daemon,或最新的名字:Moby),它是一种容器运行时(container runtime)的实现,而且是最主流的实现,几乎就是容器业界的事实标准。Docker是用来创建和管理容器的,它和容器的关系就好比Hypervisor(比如:KVM)和虚拟机之间的关系。当然,Docker公司对Docker engine本身的定位和期望不仅仅在于在单机上管理容器,所以近年来一直在向Docker engine中加入各种各样的高级功能,比如:组建多节点的Docker集群、容器编排、服务发现,等等。
- 3) Kubernetes(K8s):搭建容器集群和进行容器编排的主流开源项目,适合搭建PaaS平台。容器是Kubernetes管理的核心目标对象,它和容器的关系就好比OpenStack和虚拟机之间的关系,而它和Docker的关系就好比OpenStack和Hypervisor之间的关系。一般来说,Kubernetes是和Docker配合使用的,Kubernetes调用每个节点上的Docker去创建和管理容器,所以,你可以认为Kubernetes是大脑,而Docker是四肢。
- 4) Mesos:Mesos是一个通用资源管理平台,它所管理的核心目标对象既不是虚拟机/物理机,也不是容器,而是各种各样的计算资源(CPU、memory、disk、port、GPU等等)。Mesos会收集各个节点上的计算资源然后提供给运行在它之上的应用框架(比如:Spark、Marathon、甚至是Kubernetes)来使用,应用框架可以将收到的计算资源以自己喜欢的任何方式创建成计算任务来完成特定工作(比如:创建一个大数据任务计算个π什么的)。由于容器技术近年来的火热,Mesos也对容器进行非常深层次的支持,它内部完整地实现了一个容器运行时(类似于Docker),所以,上层的应用框架可以方便地把自己的计算任务以容器的方式在Mesos管理的计算集群中运行起来。使用Mesos的门槛相对较高(需要应用框架编写代码调用Mesos的API和其集成),但一旦用起来之后灵活性和可扩展性更高,因为Mesos并不限制应用框架如何使用计算资源(可以以容器的方式使用,也可以是其它方式,比如:传统的进程),主动权完全在应用框架自己手中。作为对比,Kubernetes只能管理容器,所有任务都必须以容器的方式来运行。为了解决门槛较高的问题,Mesosphere(Mesos这个开源项目背后的商业公司)推出了DC/OS,其核心就是Mesos加一个内置的应用框架Marathon(可以用做容器编排),能够达到开箱即用的效果,安装好之后立刻就可以创建和管理容器和非容器类的任务了。
简单的说就是:
- 1) Docker 主要针对 Paas 平台,是以应用为中心。
- 2) OpenStack 主要针对 Iaas 平台,以资源为中心,可以为上层的 PaaS 平台提供存储、网络、计算等资源。
- 3) OpenStack 主要还是用来管理 VM(虚拟机),OpenStack 很庞大,底层资源管理能力很强。OpenStack 社区和 Docker 的结合越来越紧密。
- 4) Kubernetes 是面向应用的 PaaS 层,Kubernetes 的强项在于容器(Docker)编排,可以很好解决应用上云的问题。Kubernetes 可以运行在 OpenStack 上。
- 5) Mesos 偏向资源管理,但 Mesos 框架设计不错,基于它很容易构建 PaaS。Mesos 强项在于数据中心资源统一管理,可以为多个框架分配资源,但不负责调度,可视为分布式操作系统内核,也可以部署在 OpenStack 上,也支持物理资源。
如果只用容器,Kubernetes 是不二之选;如果是运行的不仅仅是容器化的应用,Mesos 配合 Marathon 调度框架甚至 Kubernetes 都不错。
3.1 PaaS的交付
PaaS提供了一个软件创建平台。该平台通过Web提供,使开发人员可以自由地专注于创建软件,同时不必担心操作系统、软件更新,存储或基础架构。
PaaS允许企业使用特殊的软件组件设计和创建内置于PaaS中的应用程序。由于具有某些云特性,这些应用程序或中间件具有可扩展性和高可用性。
3.2 PaaS优势
无论您的公司规模如何,使用PaaS都有很多优势:
- 使应用程序的开发和部署变得简单且经济高效
- 可扩展
- 高度可用
- 使开发人员能够创建自定义应用程序,而无需维护软件
- 大大减少了编码量
- 自动化业务策略
- 允许轻松迁移到混合模型
3.3 PaaS的特点
PaaS具有许多将其定义为云服务的特征,包括:
- 它基于虚拟化技术,这意味着随着业务的变化,资源可以轻松扩展或缩小
- 提供各种服务以协助开发,测试和部署应用程序
- 许多用户可以访问相同的开发应用程序
- Web服务和数据库是集成的
3.4 何时使用PaaS
在许多情况下,使用PaaS是有益的甚至是必要的。 如果有多个开发人员在同一个开发项目上工作,或者必须包含其他供应商,PaaS可以为整个过程提供极大的速度和灵活性。 如果您希望能够创建自己的自定义应用程序,PaaS也是有益的。 云服务还可以大大降低成本,并且可以简化您在快速开发或部署应用程序时出现的一些挑战。
4 SaaS:软件即服务
软件即服务(也称为云应用程序服务)代表了云市场中企业最常用的选项。 SaaS利用互联网向其用户提供应用程序,这些应用程序由第三方供应商管理。 大多数SaaS应用程序直接通过Web浏览器运行,不需要在客户端进行任何下载或安装。
SaaS软件就适用对象而言,可以划分为针对个人的与针对企业的。
- 面向个人的SaaS产品主要有:在线文档编辑、表格制作、账务管理、文件管理、日程计划、照片管理、联系人管理等等云类型的服务。
- 面向企业的SaaS产品主要包括:CRM(客户关系管理)、ERP(企业资源计划管理)、线上视频或者与群组通话会议、HRM(人力资源管理)、OA(办公系统)、外勤管理、财务管理、审批管理等。
4.1 SaaS交付
由于其网络传输模式,SaaS无需在每台计算机上下载和安装应用程序,而在每台计算机上下载和安装应用程序正是IT员工的噩梦。 通过SaaS,供应商可以管理所有潜在的技术问题,例如数据、中间件,服务器和存储,因此企业可以简化其维护和支持。
4.2 SaaS的优势
SaaS通过大大减少安装,管理和升级软件等繁琐任务所花费的时间和金钱,为员工和公司提供了许多好处。 这让技术人员可以花更多时间来处理组织内更紧迫的事情和问题。
4.3 SaaS的特点
有方面可以帮助您确定何时使用SaaS:
- 在统一的地方管理
- 托管在远程服务器上
- 可通过互联网访问
- 用户不负责硬件或软件更新
4.4 何时使用SaaS
SaaS在许多场景情中是最有利的,包括:
- 如果您是一家初创公司或小公司,需要快速启动电子商务,没有时间处理服务器问题或软件
- 适用于需要协作的短期项目
- 如果您需要不常用的应用程序,例如税务软件
- 适用于需要通过Web和移动访问的应用程序
注:整理自网络
版权声明:本文为博主原创文章,未经博主允许不得转载。