英文原文:Cloud computing service models, Part 2: Platform as a Service

  平台即服务 (PaaS) 常常是最容易让人迷惑的云计算类别,因为很难识别它,常常把它误认为是基础设施即服务 (IaaS) 或软件即服务 (SaaS)。在这个分三部分的文章系列的第二部分中,了解 PaaS 的特点以及如何在企业中应用它。

  PaaS 的独特特点是,它让开发人员可以在驻留的基础设施上构建并部署 web 应用程序。换句话说,PaaS 让您能够使用云基础设施似乎无穷的计算资源。

  当然,计算资源的数量看起来无穷只是幻想,限制取决于基础设施的规模。但是,正如在本系列的第一篇中了解到的,Google 基础设施大约包含超过一百万台基于 x86 的计算机。另外,因为用于 PaaS 的基础设施是弹性的(第1部分中讨论过这个概念),在需要时云可以扩展以提供更多的计算资源,所以无穷的资源并不完全是想像。

  PaaS 对于开发人员的意义

  开发人员常常误以为云计算只适用于网络管理员。但是,这个错误的观念忽视了云计算可能给开发和质量保证团队带来的许多好处。

  在软件开发过程中,一些东西常常会出问题。以我的经验,设置服务器环境以驻留开发团队要构建的 Web 应用程序可能会带来许多争吵。即使在最大的企业中,通常一位网络管理员要负责为几个开发团队服务。在不使用 PaaS 的情况下,设置开发或测试环境通常需要完成以下任务:

  • 获取并部署服务器。
  • 安装操作系统、运行时环境、源代码控制存储库和必需的所有其他中间件。
  • 配置操作系统、运行时环境、存储库和其他中间件。
  • 转移或复制现有的代码。
  • 测试并运行代码以确保一切正常。

  在很多情况下,管理员已经非常忙了,所以让他们抽出时间部署新环境会很困难。对于客户机和服务器端的 web 应用程序开发人员来说,另一个主要问题是在本地复制运行时环境以便执行测试。

  现在,想像一下您是使用 PaaS 的开发团队的成员。在这种情况下,您会有一个虚拟机 (VM),其中包含完整的服务器环境,可以把它放在 USB 闪存驱动器中带在身边。

  我希望您把注意力转到第1部分中给出的概念交叉矩阵上,使用它作为参考分析 PaaS。表1再次给出这个矩阵。

  表 1. 三类云计算的概念交叉矩阵 

  范型转变 特征 关键词汇 优点 缺点和风险 不应该使用的场合
IaaS 基础设施即资产 常常独立于平台;分担基础设施成本,因此会降低成本;服务水平协议 (SLA);按使用量付费;自我伸缩 网格计算,效用计算,计算实例,系统管理程序,暴雨 (cloudbursting),多租用者计算,资源池 避免在硬件和人力资源方面花费资产费用;降低 ROI 风险;降低进入门槛;简化和自动化伸缩过程 企业效率和生产力很大程度上取决于厂商的能力;可能会增加长期成本;集中化需要新的/不同的安全措施 当资产预算大于运营预算时
PaaS 许可证购买 消费云基础设施;能够满足敏捷的项目管理方法 解决方案堆 简化的版本部署 集中化需要新的/不同的安全措施
SaaS 软件即资产(企业和消费者) SLA;由 “瘦客户机” 应用程序提供 UI;云组件;通过 API 进行通信;无状态;松散耦合;模块化;语义性互操作能力 瘦客户机;客户机-服务器应用程序 避免在软件和开发资源方面花费资产费用;降低 ROI 风险;简化和迭代式的更新 数据的集中化需要新的/不同的安全措施

  PaaS 的主要成分

  了解 PaaS 的最好方法可能是把它分解为主要组件:平台和服务。现在,考虑提供的服务,这称为解决方案。也就是说,PaaS 的两个主要成分是计算平台和解决方案堆。

  为了说明这两个 “成分”,我们进一步研究一下它们的定义。按照最简单的形式,计算平台是指一个可以一致地启动软件的地方(只要代码满足平台的标准)。平台的常见示例包括 Windows™、Apple Mac OS X 和 Linux® 操作系统;用于移动计算的 Google Android、Windows Phone 和 Apple iOS;以及作为软件框架的 Adobe® AIR™ 和 Microsoft® .NET Framework。要记住的重点是,计算平台不是指软件本身,而是指构建并运行软件的平台。图1提供一张示意图以帮助理解这种关系。

  图 1. 云计算分类与 PaaS 元素之间关系的图形化解释 

  既然理解了计算平台的概念,现在就来看看什么是解决方案堆。解决方案堆由应用程序组成,这些应用程序有助于开发过程和应用程序部署。这些应用程序是指操作系统、运行时环境、源代码控制存储库和必需的所有其他中间件。

  选择提供商

  解决方案堆也反映不同 PaaS 公司的差异,在决定采用 PaaS 之前,需要深入考察各个提供商提供的解决方案堆。

  在与某家 PaaS 提供商签约之前,您应该问几个基本问题:

  • 它支持哪些框架和语言?理想情况下,PaaS 应该支持基于此平台选用的语言的任何框架。
  • 可以创建多少个应用程序?大多数 PaaS 提供商会根据您签订的计划或服务包限制可以构建的应用程序数量。要确保提供商提供的计划或服务包能够满足您的需要。
  • 允许哪些内容类型?支持 PaaS 的基础设施通常涉及多租用者计算的概念,也就是说许多 “租用者” 分享单一服务器上的 “空间”,这些空间由系统管理程序(hypervisor)管理的 VM 实例分隔。PaaS 提供商可能会对要驻留的应用程序和内容的类型加以限制。
  • 支持哪些数据库类型?如果您的数据要随应用程序转移,这个问题就是非常重要的。必须确保提供商提供的数据库与您想要用来导入数据的格式兼容。
  • 它是否支持 SSL (HTTPS)?这个问题对于确保安全性非常重要。如果您打算通过应用程序处理事务,但是发现不支持 SSL,您就遇到大麻烦了。

  PaaS 剖析

  既然已经了解了 PaaS 的基本知识,现在研究一下在比较 PaaS 提供商时应该考虑的特性:

  • 应用程序开发框架。健壮的应用程序开发框架应该基于广泛使用的技术。理想情况下,您应该避免厂商锁定。使用 Java™ 技术等开放源码框架通常比较好。
  • 容易使用。PaaS 应该附带容易使用的 WYSIWYG 工具,应该有预先构建的部件、现成的 UI 组件、拖放工具和对某些标准 IDE 的支持。这应该会促进快速的迭代式应用程序开发。
  • 业务流程建模 (BPM) 工具。需要使用强大的 BPM 框架对业务流程进行建模,围绕业务流程构建应用程序。
  • 可用性。应该能够在任何时候从任何地方访问并使用所选的平台。
  • 可伸缩性。平台应该足够智能化,能够利用底层基础设施的弹性计算能力处理应用程序将承受的负载。
  • 安全性。为了有效地防御安全威胁,平台应该解决跨站点脚本、SQL 注入、拒绝服务和通信流加密等问题,并让安全措施完全融入应用程序开发中。另外,平台必须支持单点登录功能,让您能够把它与现有的内部应用程序或其他云应用程序集成起来。
  • 包容性。平台应该能够包容、嵌入和集成在相同平台或其他平台上构建的其他应用程序。
  • 可移植性。平台应该不限制底层基础设施类型,允许公司把应用程序从一个 IaaS 转移到另一个。
  • 移植工具。为了轻松、快速地把数据从陈旧的内部应用程序迁移到基于新平台的应用程序中,平台的工具包中必须有批量导入转换工具。
  • API。为了执行各种任务,比如用户身份验证、存储和获取文件(例如 Web 应用程序文件和资产)甚至直接调用数据库,平台应该有文档齐全的 API。这让企业能够灵活地创建和定制软件应用程序以与平台交互,从而满足公司的特殊需要。

  避免厂商锁定

  厂商锁定 (Vendor lock-in) 意味着消费者依赖于某一厂商,除非花费巨大的转换成本,否则无法使用另一厂商的产品。当采用像云计算这样的正在流行起来的新技术时,会增加出现厂商锁定局面的机会。早期的使用者必须很清楚他们将处于什么境地,然后才能够签署长期的 IaaS 和 PaaS 协议。

  避免厂商锁定的方法之一是通过 API 和平台技术的标准化。Simple Cloud 等组织已经开始与参与这个开放源码项目的各种规模的厂商协作,力求让云中的 PHP 保持一致。为了创建 Simple Cloud,Zend Technologies、Microsoft、IBM 和 Rackspace 正在共同努力,其目标是跨不同的平台提供一个抽象层。

  Simple Cloud API 的目标是为文件存储、文档存储和简单队列服务创建通用的接口。这让开发人员能够编写出可跨主要云平台移植的应用程序。参与云计算标准化的厂商应该得到赞扬,应该鼓励他们继续努力。在选择为您的公司提供 PaaS 服务的厂商时,我强烈建议优先考虑支持标准化的提供商。标准化会让 IT 部门的工作更轻松,更重要的是,这会节省公司的资金。

  为了避免 PaaS 市场上出现厂商锁定,需要支持相同底层 API 的服务提供商。答案很简单:坚持采用专有技术的服务提供商必须同意支持 Simple Cloud 等标准化项目。

  结束语

  在这个分三部分的云计算文章系列的第二部分中,您了解了 PaaS 的特点。还了解了在选择 PaaS 提供商时应该问的问题以及应该关注的事项,比如厂商锁定。本系列的最后一篇文章将分析 SaaS,介绍它的特点。还将学习在选择 SaaS 提供商时为了保护企业需要注意的事项。请通过参考资料中的链接获取关于 PaaS 的更多信息。

  参考资料

  关于作者

  

  Dan Orlando 是企业开发社区公认的领导者。作为长期顾问,Dan 经常向行业领导者以及 IBM developerWorks、Adobe Developer Connection 和 Amazon Web Services 等出版物提供 Adobe 技术平台方面的专业经验。Dan 还在DanOrlando.com 上定期发表博客文章。

云计算服务模型,第 2 部分: 平台即服务(PaaS)的更多相关文章

  1. 云计算服务模型,第 3 部分: 软件即服务(PaaS)

    英文原文:Cloud computing service models, Part 3: Software as a Service 软件即服务 (SaaS) 为商用软件提供基于网络的访问.您有可能已 ...

  2. 基础设施即服务 PaaS, 平台即服务 IaaS

    基础设施即服务(Infrastructure as a Service,简称IaaS)是消费者使用处理.储存.网络以及各种基础运算资源,部署与执行操作系统或应用程序等各种软件. 客户端无须购买服务器. ...

  3. 【转帖】云平台发现服务构建:为什么不使用ZooKeeper

    http://www.chinacloud.cn/show.aspx?id=19979&cid=16 [日期:2015-04-29] 来源:dockerone   作者: [字体:大 中 小] ...

  4. Java生鲜电商平台-微服务架构概述

    Java生鲜电商平台-微服务架构概述 单体架构存在的问题 在传统的软件技术架构系统中,基本上将业务功能集中在单一应用内,或者是单一进程中.尽管现代化的软件架构理论以及设计原则已推广多年,但实际技术衍化 ...

  5. 微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案

    微软的云平台媒体服务为流媒体服务提供了多种选择,在使用流媒体服务为企业做流媒体方案时,首先需要确认要流媒体接收目标,如针对广大iOS, Android移动设备,由于它们都支持HLS 格式的流媒体,基于 ...

  6. 微软云平台媒体服务实践系列 2- 使用动态封装为iOS, Android , Windows 等多平台提供视频点播(VoD)方案

    文章微软云平台媒体服务实践系列 1- 使用静态封装为iOS, Android 设备实现点播(VoD)方案  介绍了如何针对少数iOS, Android 客户端的场景,出于节约成本的目的使用媒体服务的静 ...

  7. Gartner 认可 Microsoft 为应用程序平台即服务的领导者

    对于 Windows Azure 而言,2013 年是了不起的一年.客户使用量每月都创新高:4 月份 Windows Azure 基础结构服务一经正式发布即受到前所未有的青睐,成为重要的里程碑.Gar ...

  8. .NET平台微服务项目汇集

    最近博客园出现了一篇文章<微服务时代之2017年五军之战:Net PHP谁先死>,掀起了一波撕逼,作者只是从一个使用者的角度来指点江山,这个姿势是不对的..NET Core就是专门针对模块 ...

  9. 企业级分布式应用服务EDAS _Dubbo商业版_微服务PaaS平台 【EDAS Serverless 运维 创业】

    企业级分布式应用服务EDAS _Dubbo商业版_微服务PaaS平台_分布式框架 - 阿里云https://www.aliyun.com/product/edas?source_type=yqzb_e ...

随机推荐

  1. <%@page include%>、<%@include%>、<jsp:include>三者之间的本质区别

    <%@page include%>.<%@include%>.<jsp:include>三者之间的本质区别 先从它的几个内置对象说起. application和se ...

  2. cojs EX_香蕉 题解报告

    这道题目是香蕉的加强版 当m=100w时矩阵会很大,而且又有多组询问,所以这道题用原来香蕉的程序会T 所以我们需要更好点的做法 我们考虑优化我们的状态 首先考虑这道题的隐藏性质,考虑不合法的情况 那么 ...

  3. 【mysql的编程专题③】内置函数

    数学函数 常用 abs(x) 返回x的绝对值 floor(x) 返回小于x的最大整数值 mod(x,y) 返回x/y的模(余数) rand() 返回0到1内的随机值,可以通过提供一个参数(种子)使ra ...

  4. platform_driver_register(),platform_device_register()区别

    设备与驱动的两种绑定方式:在设备注册时进行绑定及在驱动注册时进行绑定. 以一个USB设备为例,有两种情形: (1)先插上USB设备并挂到总线中,然后在安装USB驱动程序过程中从总线上遍历各个设备,看驱 ...

  5. php相关学习资源

    相关书籍资源: 1:PHP和MySQL Web开发 经典书籍 视频教程: PHP开发工程师闯关记--初识PHP php调试技巧: PHP 程序员的调试技术 使用 print 语句.错误报告和 PHPE ...

  6. Ubuntu下编译运行Kamailio

    kamailio----配置没有成功,这个文档过几天删除,因为这个项目的文档非常少,而且qq群里的人也不活跃,现在正在研究Freeswitch,如果能够满足,就不研究这个了,这篇文档会删除. Kama ...

  7. SqlDataAdapter用法

    SqlDataAdapter和SqlCommand区别: SqlCommand就是是命令了,可以用它来执行SQL命令: SqlDataAdapter就是数据适配器了,它是用于在数据源和数据集之间通讯的 ...

  8. iOS开发--SWRevealViewController

    SWRevealViewController 是一个比较好的实现Sliding功能的第三方类. 今天跟大家分享一下如何使用SWRevealViewController实现左右菜单滑动功能. 首先,在工 ...

  9. 78. Subsets

    题目: Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset mus ...

  10. C++:this指针

    this指针 this关键字:表示本类中的对象成员,可以通过this指针访问当前类的成员//举例 //例 3.18 隐藏this指针的引例 #include<iostream> using ...