目录
Paas的定义
基础设施即服务(Laas)
平台式即服务(Paas)
软件即服务(Saas)
paas的分类:
APaas的一般特性
1:大规模分布系统
2:弹性伸缩框架
3:运维自动化
4:应用部署简单化
5:支持多种服务
主流Paas平台
Docker/Caas
容器云平台
Cloud Foundry平台
Paas平台和Saas应用市场的关系
Paas的未来发展
说起云计算平台,大家可能都知道有laas,paas和saas。laas和saas的概念大部分人都能很清晰的认知。说到laas大多会讲:存储、计算机和网络这三大基础资源,说到Saas大家会想到各种类型的应用,但是说到Paas就没有一个非常明确的共识。做大数据平台的厂商会说自己的大数据平台就是Paas,做容器的厂商会说自己的容器平台是Paas,甚至传统的Laas厂商也会说自己的平台是Paas。那么Paas究竟是什么呢?
云计算相关的概念
我们来说Paas的定义时就要先理解什么是云计算。云计算是指基于互联网等网络,通过虚拟化方式共享IT资源的新型计算机模式。其核心思想是通过网络统一管理和调度计算、存储、网络、软件等资源,实现资源整合与配置优化,以服务方式满足不同用户随时获取并扩展,按需使用并付费,最大成本地降低各类需求等。
传统应用 | Iaas | PaaS | Saas |
应用 | 应用 | 应用 | 应用 |
数据 | 数据 | 数据(以上是用户关注的点) | 数据 |
运行环境 | 运行环境 | 运行环境 | 运行环境 |
中间件 | 中间件 | 中间件 | 中间件 |
操作系统 | 操作系统(以上是用户关注的点) | 操作系统 | 操作系统 |
存储 | 存储 | 存储 | 存储 |
服务器 | 服务器 | 服务器 | 服务器 |
网络(用户都很关注每个东西) | 网络 | 网络 | 网络(用户都很关注——每一个东西) |
目前云计算提出的服务模式主要包含三大类:基础设施即服务(laas)、平台式即服务(paas)、软件即服务(Saas)。
云计算服务商提供虚拟的硬件资源,如虚拟机、存储、网络、安全等资源,用户无需购买服务器、网络设备和存储设备,只需通过网络租赁既可搭建自己的应用系统。Laas定位于底层,向用户提供可以快速部署,按需分配,按需付费的高安全与高可靠的计算能力以及存储能力租用服务,并可为应用提供开放的云基础设施服务接口,用户可以根据业务需求灵活定制租用相应的基础设施资源。在这种服务模式下,用户无需考虑,对琐碎的基础设施进行管理与维护,用户可直接在基础上面方便的加载应用。Laas服务对应的用户是系统管理员。
Paas提供商提供应用服务引擎,将软件研发测试和运维的平台作为一种服务提供,如应用程序接口(API)服务或应用运行时服务,用户基于这些服务构建业务应用。从用户角度来说,这意味着他们无需自行搭建开发、测试和运维平台,也不会在不同平台兼容性方面遇到困扰。Paas服务对应的用户是应用的开发者和运维人员。
用户通过标准的Web浏览器来使用网络上的软件。从用户角度来说,这意味着前期无需在服务器或软件许可证授权上进行投资;从供应商的角度来看,与常规的软件服务模式相比,维护一个应用软件的成本要相对低廉,Saas的供应商通常是按照客户所租用的软件模块来进行收费的,因此用户可以根据需求订购软件应用服务,而且Saas的供应商会负责系统的部署、升级和维护。Saas提供者对应的用户是应用软件使用的终端用户。
通过上面的介绍,大致可以清晰Laas,Paas和Saas的关系以及面向的用户。在继续介绍Paas的技术细节前,我们需要了解一下Paas平台自身的分类。garther把他们分为两类,一类是应用部署和运行平台APaas,另一类是集成平台IPaas。
1:APaas是一种面向IT企业和机构的云计算应用开发与部署平台。APaas主要为其提供运行环境和数据存储,能够将本地部署的传统应用直接部署到APaas上。
2:IPaas是用于集成和协作的Paas平台,不仅可以支持与现有云服务间的连接性,而且可以以安全的方式提供企业应用的访问能力。IPaas主要用于集成和构建复合应用。
大数据厂商的Paas实际上是属于IPaas,而容器厂商和Laas厂商的Paas大致为APaas。
(1)完全模块化的分布式系统,保证云平台可靠性
(2)每个模块单独存在和运行,通过消息总线进行通讯
(3)系统耦合度低,便于弹性动态扩展
(1)平台自身组件支持实时横向扩展
(2)根据应用的负载情况,动态加载应用实例
(3)应用实例支持实时水平扩展
(1)日常运维操作简化
(2)故障自动恢复
(1)一键式应用快速部署
(2)支持多种应用开发框架,包括Spring、NET.、Ruby on Rails、Node、JS等
(3)通过BuildPack扩展运行不同语言应用的能力
(1)支持多种数据服务,包括MySQL、mongodb、postreSQL等
(2)通过service broker组件扩展多种应用服务能力,包括数据库、中间件、缓存、云存储等
Docker/Caas提供直接管理操作基础设施的性能,带来基础设施层面的灵活性。用户通过直接操作容器可以更灵活的实现应用迁移、部署。但这个更加轻量的平台带来了用户学习成功和使用复杂的增加。
容器云平台的搭建只依托了Swarm/Mesos/K8s等容器编排调度系统就可以实现,还需要引入大量的第三方解决方案,例如日志、监控、网络等。这就意味着一定的试错成本,另外第三方系统的成熟度发展不一,组成一套统一的云平台后进入生产环境的应用需要经过一定周期的论证和验证。
Cloud Foundry隐藏了基础设施层面的复杂度,提供应用层的管理操作,简化基础设施和应用的构建管理,平台也使用容器技术,但仅仅是平台架构中的实现细节。通过CF可以更加敏捷的实现应用开发、部署、业务实现等。
Cloud Foundry的架构是一个相当完整的Paas架构,模块丰富,平台自身可以提供对于平台节点,应用的监控、管理、日志、自动化运维等完整的解决方案。每个模块都部署在一个或多个虚拟机上,这些虚拟机是自动创建的,由Paas管理他的生命周期。它的应用部署跟Docker镜像不太一样,它是把程序包直接部署。一个命令或是一个点击就可以部署。
在经过长时间的应用,Cloud Foundry已经由很多在生产环境的案例。Cloud Foundry率先采用RunC作为容器运行时,而且刚刚做了一个25万个容器集群的测试,验证了Paas + RunC的大规模集群的支持。
可以这样来说:容器技术是Paas平台的底层技术,是Paas平台不可缺少的部分。但是把容器平台说成Paas,未免会有点以偏概全了。
特性 | Cloud Foundry | Docker/Caas |
应用部署方式 | 直接部署程序Release包 | 需要制作Docker镜像 |
监控 | 完整解决方案 | 需要集成第三方工具 |
日志 | 完整解决方案 | 需要集成第三方工具 |
网络 | 完整解决方案 | 需要集成第三方工具 |
自动化运维 | 可以和Laas联动 | 不支持Laas联动 |
大家有没有发现一个现象?10年以前,Saas应用市场是非常少的。现在各大平台都会有自己的Saas市场应用。出现这种现象的原因无外乎技术的进步,搭建Saas应用市场的成本降低了。更准确的说:Saas应用市场是Paas平台的一种外延。在底层Paas技术的支撑下,Saas应用的开发、交付、运营的门槛大幅度的降低了。
基于Paas平台构建的Saas应用市场会逐步加快Saas应用生态的发展,Paas平台下进行原生应用开发。
有了Paas平台帮我们解决问题,那么我们的应用开发者要怎么做才能开发出云原生应用呢?
1:使用标准化流程自动配置,从而使新的开发者花费最少的学习成本加入这个项目。
2:和操作系统之间尽可能的划清界限,在各大系统中提供最大的可移植性。
3:适合部署在现代的云计算平台,从而在服务器和系统管理方面节省资源。
4:将开发环境和生成环境的差异降至最低,并使用持续交付实时敏捷开发。
5:可以在工具、架构和开发流程不发生明显变化的前提下实现扩展。
这套理论适用于任意语言和后端服务(数据库、消息队列、缓存等)开发的应用程序下面我们一起来看看具体包含哪些要素:
1:基准代码:一份基准代码,多份部署
2:依赖:显式声明依赖关系
3:配置:在环境中存储配置
4:后端服务:把后端服务当中附加资源
5:构建:发布、运行,严格分离构建和运用
6:进程:以一个或多个无状态进程运行应用
7:端口绑定:通过端口绑定提供服务
8:并发:通过进程模型进行扩展
9:易处理:快速启动和优雅终止可最大化健壮性
10:开发环境与线上环境等价:尽可能的保持开发、预发布、线上环境相同。
11:日志:把日志当作事件流
12:管理进程:后台管理任务当作一次性进程运行。
先抛一个结论:Paas是云的未来
Laas是一个资源转售的生意,Paas代表了云计算的未来,Paas解决的是平台架构的问题,同时也是真正做到按需付费。对于业务客户而言,底层技术不会给他们带来直接的业务价值,这也就决定了软件开发商更应该聚焦在业务层。高并发、高可靠、存储服务、应用自身维护等和业务不直接关联的平台服务都可以借助Paas技术来完成。现在的创业公司可以借助各类Paas技术快速的创建高并发、高可靠的应用,未来这种模式也会进一步普及。
1:更融合的调度,物理机、虚拟机和容器各有优势,一个复杂的应用场景会用到各计算平台的优势,融合调度未来必然会成为主流框架。
2:更融合的编排,说到调度,就离不开编排。当前阶段上云是大趋势,私有云加公有云的模式会长期持续。那么融合的编排框架也必然会成为解决成本问题的一个重要选择。
3:更细粒度的弹性,Laas解决了基础设施的弹性,但是还不够,技术的发展会进一步细化弹性的粒度,往更节约的方向发展。
4:更高的资源利用率当前的技术及架构下,计算资源很大一部分时间都是闲置的。以有限的资源来应对更高的数据处理要求,资源利用率会随着云技术的发展进一步提高。