1.3 典型的云计算解决方案架构
众所周知,云计算中的三种典型架构分别是基础设施服务(Infrastructure Service)、平台服务(Platform Service)和应用服务(Application Service)。
1.SaaS(Software as a Service,软件即服务)
SaaS是一种通过互联网络提供软件的模式,用户无须购买软件,而是向提供商租用基于Web的软件,以管理企业经营活动。可以将它理解为一种软件分布模式,在这种模式下,应用软件安装在厂商或者服务供应商那里,用户可以通过某个网络(通常是互联网)来使用这些软件。这种模式通常也被称为“随需应变”(on demand)软件,是最成熟的云计算模式,因为这种模式具有高度的灵活性、已经证明可靠的支持服务、强大的可扩展性,因此能够降低客户的维护成本和投入,而且由于这种模式采用灵活租赁的方式收费,客户的运营成本也得以降低。
2.PaaS(Platform as a Service,平台即服务)
PaaS提供了基础架构,软件开发者可以在这个基础架构之上建设新的应用或者扩展已有的应用,同时却不必购买开发、质量控制或生产服务器。Salesforce.com的Force.com、Google的App Engine和微软的Azure(微软云计算平台)都采用了PaaS模式。这些平台允许公司创建个性化应用,也允许独立软件厂商或者其他第三方机构针对垂直细分行业创造新的解决方案。
3.IaaS(Infrastructure as a Service,基础设施即服务)
IaaS通过互联网提供了数据中心、基础架构硬件和软件资源。IaaS可以提供服务器、操作系统、磁盘存储、数据库或信息资源。IaaS的最高端代表产品是亚马逊的AWS,不过IBM、VMware和惠普以及其他一些传统IT厂商也提供此类服务。IaaS通常会按照“弹性云”的模式引入其他的使用和计价模式,也就是在任何一个特定的时间,都只使用你需要的服务,并且只为之付费。
4.SaaS、PaaS和IaaS的联系与区别
作为基于互联网的云计算服务,SaaS、PaaS、IaaS面对不同类型的用户。
它们并不是简单的继承关系(SaaS基于PaaS,而PaaS基于IaaS),因为首先SaaS可以是基于PaaS或者直接部署于IaaS之上,其次PaaS可以构建于IaaS之上,也可以直接构建在物理资源之上。
如图1-4所示,通常的应用系统架构自底而上,包括了网络、存储、服务器、虚拟化、操作系统、中间件、运行环境、数据和应用等9大层次。云计算服务面向基础架构、应用平台和业务服务分别提供了其中相应的架构服务组合,为企业用户的应用系统提供支持。
图1-4 云计算服务架构
IaaS、PaaS和SaaS三者之间的界限正趋于模糊,严格区分三者的异同是次要的。因为这三种模式都要涉及业务负载、人员开支管理、服务器及网络的软硬件维护等问题。从更高层面来看,SaaS、PaaS和IaaS都是为了解决用户的问题,都是为业务提供服务。例如它们都试图为用户降低IT基础设施成本、充分发挥IT资源规模经济效益、提供强大的扩展能力。
PaaS服务面向的用户是应用系统开发和设计者,它不能为最终的业务用户所使用,然而PaaS服务提供了简化业务系统构建的组件和接口,可作为上层系统构建的基础。PaaS可以直接建立于IaaS之上,也可以构建在物理资源之上。作为一种特殊的业务应用形式,SaaS也可以构建在PaaS之上,而且这是将来的一种趋势。
SaaS服务模式与传统许可模式软件有很大的不同,它是未来管理软件的发展趋势。与传统服务方式相比,SaaS具有很多独特的特征:SaaS不仅减少了甚至取消了传统的软件授权费用,而且厂商将应用软件部署在统一的服务器上,免除了最终用户的服务器硬件、网络安全设备和软件升级维护的支出,除了个人计算机和互联网连接之外,客户不需要其他IT投资就可以通过互联网获得所需软件和服务。此外,大量的新技术,如Web Service,提供了更简单、更灵活、更实用的SaaS。
另外,SaaS供应商通常是按照客户所租用的软件模块来进行收费的,因此用户可以按需订购软件应用服务,且SaaS供应商会负责系统的部署、升级和维护。而传统管理软件通常是买家需要一次支付一笔可观的费用才能正式启动。
1.3.1 IaaS架构
消费者可以通过Internet从完善的计算机基础设施获得服务,这类服务称为IaaS(基础设施即服务)。一般意义上IaaS提供的资源包括计算资源、网络资源和存储资源。
作为当前使用最为广泛的IaaS开源实现,OpenStack的架构具有一定的代表性,图1-5是OpenStack的概念架构。在此模型中,共有四类用户,分别是开发者、DevOps工程师、应用负责人和云运维人员,并为每类用户划分了他们所需要的功能。该架构采用分层方法,带有两个正交区域:
图1-5 OpenStack的概念架构
展示层:负责与用户交互,接收用户输入并返回请求结果。门户网络为非开发者提供图形界面,为开发者提供API端点。
逻辑层:为云提供逻辑和控制功能。该层包括部署(复杂任务的工作流)、调度(作业到资源的映射)、策略(配额等)、镜像注册、日志(事件和计量)。
资源层:提供计算、网络和存储资源的虚拟化管理能力和自动化交付能力。
业务结合层:提供计费和身份认证服务。
管理层:提供IaaS平台基本配置能力以及IaaS平台被管资源的监控。
1.3.2 PaaS架构
近几年,伴随着国家“互联网+”战略,各个行业已经实施或正在实施自己的数字化转型战略,平台服务已经成为实践云计算的重点之一,它将应用运行所需的IT资源和基础设施以服务的方式提供给用户,包括中间件服务、数据服务、连通性服务、整合服务和消息服务等多种服务形式。为了实现平台服务,业界提出了“平台即服务”(PaaS)的交付模式。PaaS模式基于互联网提供对应用完整生命周期(包括设计、开发、测试和部署等阶段)的支持,减少了用户在购置和管理应用生命周期内所必需的软硬件以及部署应用和IT基础设施的成本,同时简化了以上工作的复杂度。为了确保高效交付具备较强灵活性的平台服务,在PaaS模式中,平台服务通常基于自动化技术以虚拟化的形式交付,在运行时,自动化、自优化等技术也将被广泛应用,以确保实时动态地满足应用生命周期内的各种功能和非功能需求。
具体来说,搭建传统IT基础平台是一个漫长的过程,通常由申请、审计、硬件购买与运输、硬件安装与配置、软件安装与配置等步骤组成。在这个过程中繁复的手工配置工作费时费力,而且容易发生人为配置错误。同时,平台环境的升级维护也面临人为配置错误频繁产生问题,造成不必要的影响和损失。基于这些原因,对于搭建完成的应用运行平台,即使在一定时期内不再需要,也不会被及时释放和回收,以供新项目使用。这是造成空闲硬件资源的原因之一。此外,传统基础平台提供的应用运行能力是静态的。然而,在不同时间,应用负载往往是不一样的。为了确保高负载时应用的正常运行,应用运行平台必须能够提供最高运行能力,这就造成了非高峰时的众多空闲硬件资源。
云计算的产生(尤其是平台服务的理念)从产生空闲硬件资源的根本原因入手,建立了快速搭建和部署应用运行环境与动态调整应用运行时环境资源这两个目标。一方面,依据虚拟化与自动化技术实现应用运行环境的即时部署以及快速回收,降低了环境搭建时间,避免了手工配置错误,可快速重复搭建环境、及时回收资源,减少了低利用率硬件资源的空置。另一方面,根据应用运行时的需求对应用环境进行动态调整,实现了应用平台的弹性扩展和自优化,减少了非高峰时硬件资源的空置。
在实际应用中,PaaS模式的重要应用场景之一是向用户交付一个支撑应用运行的应用运行平台(Applications Running Platform, ARP)。基于PaaS模式构建ARP,需要满足以下典型需求:
提供定义应用需求的接口:用户可以方便地定义满足应用功能需求所需的组件,同时可以定义应用的非功能性需求,如可用性、服务水平等。
提供基于应用需求快速构建应用运行环境的能力:能将应用需求映射为物理的IT资源和基础设施的具体配置和拓扑结构,并进行快速部署。
提供运行时实时动态满足应用需求的能力:将应用需求映射为运行策略,在运行时,根据系统运行的实际状况,如负载状况,动态地对物理的IT资源和基础设施进行调整,如调整负载分配或增减计算资源,使ARP具备足够的弹性和灵活性,以实时动态地满足应用需求。
针对上述需求,基于PaaS模式构建ARP的解决方案至少需要包括如下组件:
需求与运行策略库:向用户提供定义应用需求的界面,保存应用需求,并将应用需求转化为部署及运行策略,提供给平台交付组件和运行时控制组件。
软件镜像库:提供ARP所需的基础软件。
ARP硬件资源池:基于Hypervisor,以虚拟化的方式提供ARP所需的硬件资源。
平台交付组件:根据部署或调整策略及ARP硬件资源池来创建或调整ARP。
运行时控制组件:根据运行策略和实际运行状况动态调整ARP资源池,提供资源动态调度能力。
1.PaaS平台和IaaS层的关系
在没有PaaS平台之前,我们通过IaaS层实现了业务应用和物理资源的解耦,有了虚拟化的资源池,但是资源池中的资源如何使用?资源池建设不是重点,资源池能够动态调度、提升资源利用率才是重点。为了实现该点就必须动态调度和分配资源,为了动态调度就需要应用托管,继而需要提供支持托管的开发框架和环境,并提供自动部署功能。有了这些,PaaS平台才能够更灵活地调度IaaS资源池中的资源。从两者集成和配合上来说,支持应用托管和资源动态调度是PaaS平台的核心。
在谈论IaaS时我们一般介绍通过IaaS形成了计算资源池和存储资源池,而在谈论PaaS时也需要提供资源池,这个资源池封装数据库和中间件等服务,即提供中间件资源池和数据库资源池。中间件资源池本身就是“中间件+应用部署包”后的可调度计算单元,而数据库资源池是“数据库平台+数据”后的可伸缩的存储单元。中间件和数据库对业务系统隔离,形成中间件即服务和数据库即服务。
2.PaaS平台和SaaS层的关系
首先企业内的PaaS平台是一个各业务系统公用的平台,因此PaaS平台本身需要支持多组织和多租户。其次PaaS平台和SaaS没有必然的关系,而是由业务需求决定。基于PaaS平台开发的应用在公有云环境下可能偏SaaS应用,在私有云环境下则不一定是SaaS应用。没有PaaS平台也可以实现SaaS层和IaaS层的直接集成。
3.PaaS平台和SOA集成平台
很多时候我们将SOA集成平台本身作为企业内PaaS平台的一部分。SOA集成平台提供了能力和服务的集成、BPEL流程编排、BPM和规则引擎等基本功能。SOA集成平台不在某个业务系统内部,而是集中化的且只有一套,以供各个业务系统使用并实现集中化管理。
在通过SOA解决基础问题后,过渡到PaaS平台时一定要考虑PaaS平台本身可以通过组合和编排来产生新的服务和能力,这个能力可以在PaaS平台产生并集中化管理,而不是传统的在业务系统产生,SOA只负责集成。
(1)PaaS平台和基础能力
PaaS层平台需要提供基础层平台能力,这些能力是原有的各个业务系统中能力的下沉。即我们常说的统一的组织权限、主数据、统一的流程建模,执行和监控平台全部划入SOA集成平台。通过提供这些基础能力实现真正意义的业务系统,即完全只剩余业务模块和业务组件,使得向业务组件化和组件能力化的构想更进一步。
(2)PaaS平台和开发模式
推行PaaS平台一定要考虑到PaaS平台建设本身就是开发框架和模式的大变革。只有基于标准的开发框架和模式才能够实现自动部署和应用托管。对于这里的开发模式,我们更加强调的是SOA的内化,为了考虑后续NoSQL数据库的使用,我们会弱化关系型数据库的思维,进一步加强领域建模的思路。笔者认为“组件化架构+领域建模”是PaaS平台下的核心开发思维模式。
图1-6为Gartner发布的PaaS平台参考架构,简单理解如下:PaaS整体架构分为两个重要的部分,一个是技术基础设施,另一个是PaaS基础服务提供。其中技术基础设施一般对用户不可见,而PaaS基础服务则是开放的,可供多租户用户(业务系统)使用。
图1-6 PaaS平台参考架构
(3)PaaS技术基础设施
PaaS技术基础设施可以理解为PaaS底层的技术架构,其实现PaaS平台的核心技术并与IaaS层实现集成。在整个PaaS技术架构中又分为性能基础能力、云基础能力和管理平台能力三个重要部分。
性能基础能力包括内存计算(内存数据库,分布式缓存)、网格计算、弹性伸缩和调度技术、SLA服务水平管理、高可用性、安全管理、数据集成、并行计算和处理等。
云基础能力包括共享资源池、多租户、自服务、计费管理、弹性、元数据管理、资源申请和使用。在这里可以看作云计算本身基本技术特征的实现。
对于PaaS管理平台,可以看到这里的核心还是云基础技术能力和云资源池中资源的全生命周期管理、资源本身的监控和动态调整等,以及其他类似的基本管理功能,包括系统管理、权限管理、用户管理、版本管理等。
(4)PaaS平台服务层
PaaS平台服务层直接面对最终的业务系统。真正体现平台级服务的概念即平台由传统的终端朝整个云端的迁移过程。通常平台包括了开发平台、测试平台、运行平台,且这些平台又可以进行细分。平台体现的另外一个重要特征就是“离线+在线”。开发时可以离线或在线,但是在运行态时一定是在PaaS平台的执行托管环境里面。
如图1-7所示,Gartner发布的PaaS服务层对平台进行了进一步的细分,底层是集成的应用开发和全生命周期管理、集成的平台服务管理(体现自服务),包括能力和服务的申请、开通、使用组装和部署的完整生命周期管理。
图1-7 PaaS平台服务层
应用平台:核心是应该有一套集成的应用开发平台,提供了集成的应用开发框架和环境、集成的PaaS底层技术能力,提供标准的技术附件、服务等。类似于传统开发平台和框架。
集成平台:这里的核心是SOA,而SOA又包括两个重要的部分,一个是ESB提供服务的集成和服务全生命周期管理能力,另一个就是BPM和BPEL提供业务流程管理能力、服务的编排和流程的整合能力。
云数据库平台:数据库对用户黑盒,数据库的资源来自于云平台中的资源池,对于企业私有云的数据库,重点还是数据库本身需要支持分布式和集群技术,数据库能力的提供需要通过云数据平台以服务的方式提供。
用户体验平台:在这里笔者个人理解应该偏向于提供了一整套偏UI和交互层的用户体验框架,这套框架本身就会与底层的所有平台和技术能力进行集成。
如图1-8所示,整个PaaS平台的演进路线就是需要将原有的应用基础设施服务能力整合为PaaS平台层中的应用平台服务(aPaaS)和集成平台服务(iPaaS),最终再将两个部分整合为一个完整的PaaS平台应用。aPaaS解决的是单个应用如何基于PaaS平台基础设施的问题,而iPaaS解决的是多个应用间如何集成和交互的问题。
图1-8 PaaS平台的演进路线
iPaaS的核心仍然是如何体现PaaS平台的云能力,包括资源池、弹性扩展、集成等。而其中最重要的就是ESB集成能力、数据库和中间件资源池的建设、自动部署和应用托管。
1.3.3 SaaS架构
随着信息经济时代的到来,软件及其相关的信息服务产业已成为引导未来经济的核心力量,企业信息化水平则成为衡量软件产业的重要指标。现在企业管理软件已经历了由Mainframe结构、Client/Server结构、B/S多层分布式结构到SOA的演变,变得越来越分散、越来越开放和强调互操作性。软件交付方式也从传统的IT外包转为应用服务提供商(Application Service Provider, ASP)模式,独立软件开发商逐步发展为应用服务联盟。SaaS(Software as a Service)是一种通过Internet提供软件的模式,用户无须购买软件,改为向服务提供商租用基于Web的软件来管理企业经营活动,而服务提供商将全权管理和维护软件。自2003年Salesforce首次推出SaaS概念以来,SaaS取得了很大的发展,已成为当前的研究热点。
在国外,包括Salesforce、Rightnow、Taleo以及Google、Microsoft、SAP等从事SaaS业务的公司,已形成包括支撑平台与网络环境提供商、软件运营服务平台提供商、SaaS软件提供商、SaaS软件集成商、咨询/实施/维护提供商、软件运营商和用户在内的SaaS生态系统,并呈现从中小应用往大型应用过渡的趋势。
在国内,也涌现了包括用友、金蝶、金算盘、800CRM和阿里软件等SaaS服务提供商,SaaS生态系统中的各种角色都已出现,但是角色的分工尚不明晰,总体处于市场发展初期。往后,应用趋势将朝着行业化、个性化、集成化和多功能渗透发展。
SaaS架构应该满足以下三个特点中的一个或多个:
可扩展性:指能够最大限度提高并行性,以便更高效地利用应用资源。
可配置性:指每个客户能够用元数据配置应用的外观和行为,同时保证配置的使用简易和零费用。
多用户高效性:指能够最大化不同用户间的资源共享,但要区分不同用户的数据。
根据是否满足以上三个特点,可以建立SaaS的四级成熟度模型,每一级都比前一级增加了上述三种成熟特性中的一种:
成熟度Ⅰ:如应用程序提供商(ASP)提供的模式,每一个用户运行一个不同的实例。
成熟度Ⅱ:所有用户提供相同的实例。但是在这种模式下,实例具有可配置性,用户可以根据自己的需要配置运行的实例。
成熟度Ⅲ:这种模式具有可配置性及多用户高效性,所有用户运行在同一个实例下。
成熟度Ⅳ:在这种模式下,供应商在负载平衡的服务器群上为不同顾客提供服务。
一个典型的SaaS系统可以分为表现层、接口层和应用实现层,表现层侧重于管理流和业务流的分离,在接口层必须提供统一的用户远程调用接口,而应用实现层则提供计算能力共享、存储能力共享、个性化配置能力和大容量支持能力。
多租户是SaaS的典型特性,租户可以表现为多种形式,比如一个用户、一个项目组、一家公司、一个部门等。一般由如图1-9所示的5种模式实现多租户。
图1-9 SaaS多租户模式总览