《PaaS程序设计》一3.1 不可移植的PaaS:遵照一个模板

简介:

本节书摘来自华章出版社《PaaS程序设计》一书中的第3章,第3.1节,作者 Lucas Carlson,更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.1 不可移植的PaaS:遵照一个模板

采用不可移植PaaS的平台即服务,我们就可以基于这个平台的独特规范和API编写代码,从而创建应用。
这意味着我们的代码结构需要严格依附于特定的模板或应用编程接口(API)。这些API可能主要集中在服务数据库、存储架构或者搜索架构上。而其他时候,API属于低层次并且面向编码的。有时候我们必须使用专门为那个平台所构建的特定语言。
正如我们所看到的,这种平台里有各种不同类型的“钩子”,使得它可移植性较差。最早形式的平台即服务就是建立在这种结构化很强的想法之上。这些从早期实践中诞生的雏形,逐渐形成了我们现在的平台即服务。
但问题很快就出现了:为什么我们必须基于私有API编写代码呢?难道为了这些优势以及对数据的访问就得失去灵活性?在我们检视新生代公司针对这个问题的回答之前,先看看不可移植PaaS领域里的几个主角。

3.1.1 Force.com

作为Salesforce的开发者平台,诞生于2008年的Force.com(http://force.com),允许开发者扩展Salesforce的功能从而创建应用,而Salesforce(http://www.salesforce.com)则是一个非常流行的SaaS客户关系管理(CRM)销售工具。这是我们知道的PaaS的鼻祖之一。Force.com激发了一代应用,数以千计的开发者开发了新的应用来访问、分析Salesforce丰富的数据。
Force.com的平台即服务提供Web服务的应用编程接口以及工具集、一个用于创建应用的用户接口、一个用于存储数据的数据库以及基础的网站托管功能。最近,平台添加了移动功能,使得基于Force.com的PaaS平台开发移动应用也一样便捷。
使用Force.com的缺点是:开发者不能随意使用编程语言创建通用应用。应用逻辑层建立于Apex之上,它是运行在Force.com上的一种强类型、面向对象、类似于Java的语言。优点是基于Web的接口创建新应用相对简单、便捷。我们可以选择自己想要的数据类型、创建数据结构,可以自动生成Web和移动设备界面并收集数据。
在数据输入选项的基础上,我们也能加入公式、审批程序、发送邮件,并且测试快速、简单。Force.com的PaaS平台有自己的Force.com集成开发环境,开发者们测试、部署应用都很快速、简单。
当我们在Force.com平台的约束下工作时,不需要去考虑扩展、管理应用问题,Salesforce替我们完成了。PaaS正是采用了这些基础理念,才能获得如此的流行度。
随着Force.com平台的成熟,它支持越来越多的服务:例如Database.com(http://database.com),提供定制接口和数据输入,为全世界近100 000商家提供数据库服务。

3.1.2 Google App Engine

Google App Engine(http://developers.google.com/appenqine/),也是2008年发布的,是PaaS最早版本之一。GAE的承诺是:开发者们可以挖掘Google的巨大能力、利用Google运算资源,以及使用Google的设备和运维设备的专家技术。但我们的应用必须遵守Google的标准。Google不仅建立了运维团队,还有一整套工具和系统,以及其特定的工作方式——他们这种工作方式正是为了扩展到“Google规模”。
我们探讨的是什么样的规模呢?在这种规模里,我们需要成千上万台设备来解决一个问题。当我们面对像Google这么大的规模时,工具要非常规范。为了能够处理海量数据,就必须这么做。毫不夸张地说,Google基本上处理了整个互联网的数据。GAE的中心思想之一就是如果遵照它的标准,我们的应用也可以具备这些强大的功能,而且只需要支付使用的那部分功能的费用。
GAE为什么不支持可移植的原因很明显。只有在我们按照Google的一套规则使用时,才能接入它现有的基础设施。一方面,我们得按照Google规定的方式编写代码。另一方面,如果这么做,我们就能获得在Google的规模上运行程序的好处。
很多PaaS平台都会有各种限制。当开发者面对不可移植的PaaS,例如GAE,那些限制是很严格的。开发者必须得尽可能遵从这些规范,才能充分运用GAE的特长。
使用GAE,对于访问文件系统、内存访问、能使用的内存数量以及每个进程能运行的时间都有限制。
这些局限性迫使开发者想其他办法。例如,假设我们有一个网站需要编译很多清单列表,并计算列表上的数据项。在传统主机环境里,当一个用户访问这个网站,传送结果需要相当多的时间。所有过程必须在结果返回给用户前完成。根据处理的复杂度,这一过程很容易,大概需要数秒的时间。
GAE的另一个局限是:我们的应用需要很长时间才能获得结果。如果不能很快返回,GAE就会杀掉这个进程。
如果应用在设计的时候就知道不能运行很长时间,这对用户体验来说其实是开发中的一个积极因素。这迫使开发者问自己:“如果不是简单地按我通常的做法,Google会让我怎么做呢?”因此,可以创建一个缓存,每当用户访问网站时从缓存中取出数据填充到列表中,而不用每次都编译这个列表。缓存能很快响应并提供最佳的用户体验。为了后台编译缓存,我们可能需要用另一套Google工具,以一种可扩展性更强的方式来做运算,然后将结果放到缓存数据库里。
GAE有很好的前景和很大的客户份额。它的承诺——充分运用Google的资源——使得它成为不可移植PaaS领域的典范。

3.1.3 Windows Azure

微软也在努力思考如何创建一个PaaS平台。微软的.NET Framework专家引导公司围绕.NET来思考最佳实现方式。2008年,微软发布了Windows Azure(http://www.windowsazure.com)。
公司着手创建一组库。其设计考虑是:如果开发者将这些库包含在他们的系统中, Azure就可以利用这些库来扩展系统。微软也提供可扩展的标准服务。
有了Windows Azure,我们就拥有了一些基础系统,例如消息总线和队列系统,以及一组满足应用不同需求的选项。这些为开发者提供了一些模式,以支持他们创建基于互联网互通的分布式应用。如果我们融入了微软提供的库、技术和服务,就可以利用Azure系统简单而快速地扩展应用。
最近,微软开始脱离不可移植Azure系统,去除一些将开发者捆绑到特定服务上的需求。允许扩展到不同语言和技术,从而将Azure慢慢转型到可移植领域,这就不需要为了适应平台而调整代码。因此,Azure从不可移植起步,现在正慢慢转型到可移植。事实上,微软最近发布了一个可移植版本的平台即服务。

3.1.4 不可移植PaaS总结

尽管所有这些PaaS选项开始是不可移植的,很多平台都开始添加功能使得自己越来越可移植。GAE发布了PHP支持服务,需要做的修改越来越少。Windows Azure也发布了PHP支持服务,而且开发者可以做得更多,而不用像以前那样依附于微软的接口。

相关文章
|
人工智能 自然语言处理 安全
【AI 现况分析】AI 如何帮助开发者完成自动化测试
【1月更文挑战第27天】【AI 现况分析】AI 如何帮助开发者完成自动化测试
|
存储 索引
【软考学习15】索引文件结构、直接索引和间接索引
【软考学习15】索引文件结构、直接索引和间接索引
803 0
|
10月前
|
机器学习/深度学习 人工智能 算法
o3-mini:OpenAI 发布最新推理模型,强大的STEM推理能力,灵活调整推理强度
OpenAI o3-mini是OpenAI推出的全新推理模型,专为科学、数学和编程等技术领域优化,支持三种推理强度,灵活调整性能。
641 25
o3-mini:OpenAI 发布最新推理模型,强大的STEM推理能力,灵活调整推理强度
|
11月前
|
人工智能 测试技术
VideoPhy:UCLA 和谷歌联合推出评估视频生成模型物理模拟能力的评估工具,衡量模型生成的视频是否遵循现实世界的物理规则
VideoPhy 是 UCLA 和谷歌联合推出的首个评估视频生成模型物理常识能力的基准测试,旨在衡量模型生成的视频是否遵循现实世界的物理规则。
289 9
VideoPhy:UCLA 和谷歌联合推出评估视频生成模型物理模拟能力的评估工具,衡量模型生成的视频是否遵循现实世界的物理规则
|
安全 物联网 Linux
操作系统的心脏——内核
【10月更文挑战第22天】 本文将深入探讨操作系统的核心组成部分——内核,包括其定义、功能、类型以及在现代计算中的重要性。通过了解内核的工作原理和设计哲学,我们可以更好地理解计算机是如何执行任务和管理资源的。
980 2
|
Python 开发工具
第三方支付黑马-CodePay 码支付使用(二)
自古以来有关钱的事情都会特别复杂, 无论是人还是物! 在很多项目中我们都会用到支付功能, 市面上目前存在的银联支付, 支付宝支付, 微 信支付等等第三方支付都会遇到比较复杂的流程, 不是合格的商家公司是没法使用的! 而码支付CodePay打破了这个常规, 虽然作为第三方支付平台, 但是这个平台只提供支付结果订单的结算, 并不对接现金流! 采用的是个人/商家自己的收款码现金是直接到账的形式!
第三方支付黑马-CodePay 码支付使用(二)
|
网络协议 Ubuntu Unix
Linux 下使用 socket 实现 TCP 客户端
Linux 下使用 socket 实现 TCP 客户端
515 1
|
搜索推荐 开发工具 Android开发
安卓即时应用(Instant Apps)开发指南
【4月更文挑战第14天】Android Instant Apps让用户体验部分应用功能而无需完整下载。开发者需将应用拆分成模块,基于已上线的基础应用构建。使用Android Studio的Instant Apps Feature Library定义模块特性,优化代码与资源以减小模块大小,同步管理即时应用和基础应用的版本。经过测试,可发布至Google Play Console,提升用户便利性,创造新获客机会。
699 1
|
JavaScript 前端开发 C#
什么是三元表达式?“三元”表示什么意思?
什么是三元表达式?“三元”表示什么意思?
|
分布式计算 资源调度 Hadoop
Apache Hadoop入门指南:搭建分布式大数据处理平台
【4月更文挑战第6天】本文介绍了Apache Hadoop在大数据处理中的关键作用,并引导初学者了解Hadoop的基本概念、核心组件(HDFS、YARN、MapReduce)及如何搭建分布式环境。通过配置Hadoop、格式化HDFS、启动服务和验证环境,学习者可掌握基本操作。此外,文章还提及了开发MapReduce程序、学习Hadoop生态系统和性能调优的重要性,旨在为读者提供Hadoop入门指导,助其踏入大数据处理的旅程。
1331 0