从开发者的角度比较IAAS与PAAS
在我之前的文章中,讨论了云计算背后的基本概念,包括其定义,特性和各种服务模型。在本文中,我将更加详细地讨论服务模型,特别是从开发者的角度来比较IAAS和PAAS。
注:本文仅讨论的重点是云服务模式,而不是具体的云服务供应平台。
基础设施即服务(IAAS)
IAAS指的是为客户提供按需的基础设施服务的云服务模式。基础设施可以指可租用资源,如计算能力,存储设施,负载均衡器等。
如图一左侧所示,IAAS提供商将负责管理物理资源,例如网络,服务器和集群计算机。此外,他们通常还将管理虚拟化技术,使得客户能够运行虚拟机(virtual machine,VM)。而当涉及到操作系统(OS)时,到底是由供应商还是客户来管理它,这个问题经常引起争议。在大多数情况下,IAAS提供商会负责客户的预装操作系统的虚拟机镜像,可是客户随后就需要对操作系统进行管理。服务商会为客户提供多种类型的操作系统,如Windows Server,Linux SUSE和Linux Red Hat。尽管预装了操作系统,但服务商不会再对操作系统进行维护或更新。
其他一些软件包括中间件(如IIS,Tomcat,Caching Services),运行时环境(JRE和.NET Framework)以及数据库(SQL Server,Oracle,MySQL)在虚拟机镜像中通常不会提供。这是因为IAAS提供商不知道,也不关心客户会用虚拟机做什么。由客户负责处理这些虚拟机。当上面提到的所有软件都已经安装好后,最后客户会在虚拟机上部署应用程序和导入数据。
循序渐进:在IAAS环境中配置应用程序
为了表述全面,我会说明在IAAS环境中搭建应用程序时所涉及的步骤。为此,我会借用Mark Russinovich在BUILD会议上展示的一张幻灯片。此图阐释了典型的IAAS供应模式的工作原理。
考虑到多层应用程序的开发已经完成这个常见的情况,作为开发人员,你还将需要将其部署到云中。应用程序需要托管在Web服务器和RDBMS数据库上。对于IAAS,以下是典型的步骤:
1. 准备数据库服务器
从VM镜像库中选择VM映像。然后,VM Image将被分配并启动。如果没有提供DBMS软件,则自行安装。
2. 准备Web /应用程序服务器
从VM镜像库中选择虚拟机镜像以进行分配和启动。如果未安装Web或者应用程序服务器或运行时环境,则自行安装。
3. 配置数据库及其对象
下一步是配置数据库,包括配置数据文件,日志文件,安全等。然后创建数据表并向其添加数据。
4. 部署你的应用程序
接下来,将你开发的应用程序部署到Web服务器上。
5. 配置负载均衡器
当需要在多个实例上托管你的应用程序时,你可能还要再进行配置,比如每个实例的IP地址和负载平衡器等。
6. 管理你的虚拟机和DBMS
最后一步是管理虚拟机。例如,当操作系统有更新或服务包时,IAAS提供商不会自动替你进行更新。相反,你可能需要自己做。
平台即服务(PAAS)
现在,让我们转到另一种云服务,“PAAS”,看看它有什么不同。在PAAS中,供应模型涉及一种按需的应用程序托管环境。PAAS供应商不仅像IAAS供应商那样管理组件,还会帮助客户管理额外的职责,如操作系统,中间件,运行时,甚至数据库,正如表1右侧所示。
换句话说,你可以认为PAAS就是租用一堆软件,硬件和基础设施。客户只需带上应用程序和数据,然后就可以开始了。
循序渐进:在PAAS环境中配置应用程序
对于PAAS,考虑到数据库服务器,虚拟机和Web服务器虚拟机很容易配置,你只需要执行两个步骤,正如Mark Russinovich的另一张幻灯片所示。
1. 配置数据库
你可能需要指出你的虚拟数据库服务器在哪里(哪个区域)进行了配置,但是不必自己亲自安装一堆DBMS软件。你只要配置数据库,创建表格和添加数据。
2. 部署您的应用程序
这是适用于IAAS的类似步骤,你仍然需要在PAAS云环境中部署自己的应用程序。
那负载均衡器呢?以某些服务商为例,它将全部进行自动配置并准备好接受流量,其他一切都将进行自动管理。你不必再为IP地址或负载平衡器操劳。
那虚拟机的维护呢?DBMS和Web服务器虚拟机将由供应商维护。比如:
- 如果托管应用程序的虚拟机存在任何硬件问题,供应商应该能够检测到故障并立即纠正,以确保你的应用程序能够保持正常运行。
- 如果操作系统上有新的更新或补丁,供应商会确保您的应用程序所在的虚拟机始终处于最新状态。当然,你也可以选择保持某个版本或自动更新。
总结
总的来说,我们探讨了IAAS和PAAS解决方案的不同服务模式和配置步骤。与IAAS供应商相比,PAAS供应商实际上承担了更多的责任。但另一方面,IAAS可以在更低层次上提供更多的灵活性(例如:公共IP地址,负载均衡器等)。
人无完人,事无完事。作为开发人员或架构师,你应该深入了解客户的需求,来确定合适的云服务模式以获得最佳的效果。
- RabbitMQ入门-消息派发那些事儿
- RabbitMQ入门-高效的Work模式
- 谈谈分布式事务之四: 两种事务处理协议OleTx与WS-AT
- RabbitMQ入门-从HelloWorld开始
- RabbitMQ入门-从HelloWorld开始
- RabbitMQ入门-初识RabbitMQ
- 谈谈分布式事务之三: System.Transactions事务详解[下篇]
- 当InternalsVisibleToAttribute特性遭遇"强签名"
- MyBatis-从查询昨天的数据说起
- WCF并发(Concurrency)的本质:同一个服务实例上下文(InstanceContext)同时处理多个服务调用请求
- Spring集成RabbitMQ-必须知道的几个概念
- Spring读书笔记——bean创建(上)
- 15:21爆出的小程序功能升级,你还要对小程序观望吗?
- 如何解决分布式系统中的跨时区问题[原理篇]
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- C++核心准则E.31:正确排列catch子句
- VBA解析复合文档07——Parse参数IReadWrite
- 再谈分布式服务架构
- VBA解析复合文档08——应用-解析Thumbs.db
- pyecharts 嵌入 PyQt5
- CS学习笔记 | 15、枚举的命令和方法
- WFD_RTSP交互包分析
- Linux阅码场 - Linux内核月报(2020年07月)
- WifiDisplay(Miracast)技术原理及实现
- Java常用设计模式--观察者模式(Observer Pattern)
- Java常用设计模式--适配器模式(Adapter Pattern)
- Java常用设计模式--装饰器模式(Decorator Pattern)
- Java常用设计模式-单例模式(Singleton Pattern)
- Java常用设计模式--三种工厂模式之简单工厂模式(Simple Factory)
- Java常用设计模式--三种工厂模式之工厂模式(Factory Pattern)