HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

Google 推出 Web 开发利器:AppEngine

  • 2008-04-14
  • 本文字数:4746 字

    阅读完需:约 16 分钟

2008 年 4 月 7 号,Google 在 Campfire One 上介绍了一种简化创建、运行和构建伸缩性Web 应用的工具—— Google App Engine 。简而言之,Google App Engine 允许你本地使用 Google 基础设施构建 Web 应用,待其完工之后再将其部署到 Google 基础设施之上。

这次发布的是没有包含全部特性的预览版,提供了一个配额系统,它限制了在预览期间应用免费可用的存储、CPU 和带宽。一旦预览期结束,配额仍将免费,但是开发者需要按需购买额外资源。额外资源的价格尚未公布(甚至可能尚未确定)。

预览版的配额包括:3 个应用 / 开发者、500MB 存储 / 应用、2000 封邮件 / 天(连续 24 小时)、10 GB 入站带宽、10 GB 出站带宽、200M CPU 兆周、650k HTTP 请求、2.5M Datastore API 调用和 160k URL Fetch API 调用。

技术:开发环境和 API

尽管 Google 说‘未来将支持更多的语言’,但是目前技术栈是基于 Python 的,它是 Google 认同的语言之一。出于安全和伸缩性的目的,Google 提供了一个运行在安全沙箱中的 Python 运行时环境,它提供对底层操作系统有限制的访问。该环境包括标准库,并可通过模块进行扩展,编写模块的语言目前不支持 C 语言。

该环境包括 Python 标准库。当然,调用那些违反沙箱限制的库方法(如打开 socket 或写文件)将不会成功。为了方便起见,几个核心特性不被支持的标准库中的模块被禁用了。那些引入它们的代码会出错。

应用代码只能用 Python 书写。不支持使用 C 来编写扩展。

其他安全限制包括:出站通信(outbound communication)只能通过所提供的邮件和 URL fetch API 进行,通过 HTTP 和 HTTPS 作为传输的入站通信(inbound communication)使用标准端口,禁止文件系统写操作和禁止子进程或代码在请求 / 响应循环外执行(例如后台操作和批操作)。

此外,Google 提供了访问一个 Datastore、Google 用户帐号、URL fetch 和邮件服务的 API。App Engine 还包括一个简化的Web 应用框架和Django 0.96.1,尽管App Engine Datastore 不是关系型的,而且也不能使用全部的Django API。

Datastore API 背后由 Google 的 BigTable 支持,但是它与一个简单的对象持久化 API(或一个对象关系映射框架,即使 Google 强调这个 Datastore 不是关系型的)有很多相同之处:

你们中的大多数,在使用这个 Datastore 时可能会有点不习惯:如我所说,它不是 SQL。这是个巨大的区别。然而,我们想了一下之后,认为这个 Datastore 可能会引起你们的兴趣,因为它让一些事情变简单了。比如说,我们的 Datastore 没有模式,这意味着它可以支持任意的新属性或列,你可以用代码创建,无需把所有事情预先设计好并创建一个模式。这就回到了我们尽可能简化 Web 应用编写的目标:只需开始编码就好了。你的数据模型可以随你应用的演变而演变。

即使 Datastore 违背了 SQL,我们仍然支持你想要的传统关系数据库的许多强大功能。对于任何你提供的单个属性或属性集合,Datastore 都提供了高效查询。它还支持对查询结果的排序,包括按多属性进行排序。它对写操作支持事务,通过事务分组来控制。对于提取或创建大量实体,它也支持批操作。它给你机会让你来控制你实体的主键,以获得更好的查询效率和更短的 URL。

并且,即使 Datastore 不是 SQL,我们也为你提供了类 SQL 查询以简化查询的表达,叫做 GQL。GQL 受到了 jQuery 和 FBQL 的启发:底层的存储不是 SQL,但是几乎你想要的所有查询仍然可以完成。

你可能已经注意到我们的 Datastore 缺少一个大特性,那就就是连接(join)。这是因为连接通常是分布式系统效率问题的根源,当你有不止一台机器时:很难在跨多个机器和多个硬盘的分布式系统上进行连接操作。

尽管 Datastore API 支持事务,但是它们有严格的限制,而且和实体组关联:

每个实体都属于一个实体组,在一个事务内可以操作一个或多个实体。实体组关系告诉 App Engine 在分布式网络的同一部分保存几个实体。一个事务为一个实体组设置 Datastore 操作,所有这些操作按组实施,如果事务失败就全部撤销。

当应用创建一个实体时,它可以分配另一个实体作为新实体的父。给一个新实体分配父时,将使它进入父实体所在的实体组。

没有父的实体是根实体。一个实体的父实体也可以有父。从一个实体到根的父实体链就是这个实体的路径,路径的成员是实体的祖先。实体的父只能在创建时定义,之后就不能修改。

祖先是同一根实体的所有实体都在相同的实体组中,组中的所有实体存储在同一 Datastore 节点中。单个事务可以修改单个组中的多个实体,或通过将组中现有实体变成为新实体的父来把一个新实体加到组中。

因为 App Engine 迫使你以一种特殊的方式(如 Datastore on BigTable,而不是数据库)来处理你的开发,Google 声称你的应用将更易于伸缩,而且这种伸缩性几乎是透明的:

当一个 Web 应用变得流行起来时,突如其来的流量可以压垮各种规模的应用,从创业公司到大公司都发现需要一年几次的重新架构他们的数据库和整个应用。通过自动复制和负载均衡,利用 Bigtable 和 Google 的可伸缩基础设施中的其他组件,Google App Engine 使得应用可以从一个用户伸缩到百万级用户。

User API 允许通过 Google 帐号进行用户验证和登录,以及访问帐号的绰号和邮件。其他更多的用户信息可以从应用保存在 Datastore 中的用户信息直接获取。

URL fetch API 能通过提取 HTTP 和 HTTPs URL(支持 GET、POST、HEAD、PUT 和 DELETE,因此这似乎可以支持 REST 功能)检索远程服务器的信息。

Mail API 允许 App Engine 应用异步发送邮件,如果邮件服务器不可用时允许重试。

App Engine SDK 包含模拟 App Engine Python 运行时环境的服务器,以及:

  • 模拟模块引入限制,只允许处理程序引入被许可的模块,它们来自标准库、包含在 App Engine Python 环境中的第三方库,以及应用目录中的模块
  • 模拟应用缓冲行为
  • 使用本地文件模拟 App Engine Datastore
  • 模拟包含有登录和注销页面的 Google 帐号,登录参数可以是任何邮件地址。
  • 通过提取你计算机的 URL 模拟 URL fetch 服务
  • 使用你选择的 SMTP 服务器或 Sendmail 配置模拟邮件服务

乍一看,绝大多数的应用配置似乎可用YAML 来写。

动机和竞争

Google 的公告称他们的动机是,简化 Web 应用的构建、部署和伸缩性:

嗯,我们构建 Web 应用是因为我们想要更多的 Web 应用被创建出来。我们注意到,目前创建一个 Web 应用真的很难:即使部署一个最简单的 Web 应用也有巨大的前端挑战。你需要做很多事情。当然,首先你必须为你的应用编写代码。

但是接着,你还需书写你的 Apache Web 服务器配置和启动脚本,安装你的数据库,创建所有表和设置口令,安装监视器来了解你的流量和日志,决定你如何推出代码的新版本等等。

那只是我们注意到的技术方面的挑战。然后,一旦你完成了所有那些系统管理员的工作,你就有了另一个挑战:你必须着手去找你能使用的机器来运行你的应用,不论是物理的还是虚拟的提供商。现在,就要花钱了:即使是最简单的应用,一周用几次,你都必须支付一大笔预支费用来让它在一个传统主机托管提供商处运行。

那么,这就是财务或物理方面的挑战。然后,一旦你搞定了整件事情并且运行了,而且找到地方并为此付费来测试它,你又面临了另一个挑战:随着你应用的成长,你必须去维护它。你的机器崩溃了,你的配置有错误,你的硬盘坏了,你的流量开始增长,你必须重新分享你的数据库,安装更多更多的机器。随着应用的成长,任何事情都象是一场激战。

所有这些激战正是我们试图通过 App Engine 避免的。它们是我们正试图解决的问题。

其他人已经揣测出了言外之意。很多人指出了 Google 与 Amazon 和微软在未来云计算和 Web 服务方面的竞争,常常将 App Engine 与 Amazon 的 Web 服务 EC2 S3 SQS SimpleDB 相提并论:

  • O’Reilly Radar 认为

    自从 Amazon Web 服务有这么好的开局之后,我们都知道这只不过是时间问题(我们可以有把握地假定下一个将会是微软)。尽管拿 AWS 与 GAE 作对比是显而易见的,但是它们真的不是同一类工具。Amazon 已发布的一组独立服务可以被用来创建一个通用的计算平台。尽管这些服务可以一起工作,但是它们没有作为整体打包在一起。

    另一方面,App Engine 是一个驱动 Web 应用的引擎。它将 AWS 提供的许多特性进行了整体打包:存储类似 S3、自动伸缩性和处理能力类似 EC2,Datastore 类似 SimpleDB。App Engine 还提供了 AWS 没有的特性,如 Python 运行时,Google 特定的 API,以及可能是最吸引人的免费服务部分。

  • VentureBeat:“ Google App Engine 准备与 Amazon 竞争

其他人暗示微软也正携一些工具向这个方向挺进,比如 Ray Ozzie’s Mesh strategy SQL Server Data Services ,但是可能已经太晚了:

看看事情的另一角度,某些人暗示这会使 Google 在收购方面棋高一着,这是一种风险基础设施(venture infrastructure)形式:

  • Business Week 认为Google 和 Amazon 间的竞争没有提及这一点:鼓励创业公司在 Google 的基础设施上开发他们的应用,这使 Google“不仅可以很好地了解人们想要的应用和需要克服的问题,而且能敏锐地发现 Google 想收购的有前途的新创业公司”。

  • ZDNet 补充:它可以节约 Google 在收购方面的金钱:“想象一下,如果收购一家已经使用 Google 技术的公司会省下多少时间和努力?”

  • GigaOM 说:“这种亏本销售的服务将那些创业公司带进了 Google 的大门,这使得这家公司可以访问最新的想法并可从天才企业家池中做出选择”

  • 在“Google 如何吃掉 Amazon 的午餐”中,Kevin Kelleher称这为投资

    在这次采访中,我大声地推测 Amazon 所做事情很像公司风险投资的(如 Intel 投资部)做法——投资和他们以后要合作(或者要收购)的创业公司。只是不用硬通货,而是基础设施。我得说,非常精明。

    高管的反应是:Amazon 根本没这么做,而且永远不会用 Web 服务那么做。我心里想了一下,但是没说:嗯,如果你们不这样做,有人会这么做的

    现在,有些人正在说 Google 正在这么做。随着有价值的 Google 员工整理他们的桌子并启动一家新的创业公司,推出 GAE 是 Google 将他们重新召回的最好策略。这也是从 Amazon 身下抽走地毯的绝佳方法,战略上明智而且盈利上也明智。

反馈、分析和资源

查看英文原文 Google ‘simplifies web development’ with AppEngine

2008-04-14 03:594920
用户头像

发布了 255 篇内容, 共 56.9 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

制造业工厂万界星空科技云MES系统中的设备管理模块

万界星空科技

生产管理系统 mes 设备资产管理系统 制造业数字化

对话在行人|索通发展:从ERP到BIP,携手用友共创数智索通

用友BIP

企业数智化

解锁数据库运维秘籍:掌握AntDB-T动态共享内存,提升进程间通信效率

亚信AntDB数据库

亚信科技 数据库· AntDB数据库

KeyShot 2023 Pro 动画渲染制作工具 附 安装教程 支持M1

加油,小妞!

3D动画渲染软件 KeyShot Pro 2023下载

为什么云游戏被认为是行业的未来趋势?

Finovy Cloud

5G 游戏 vr 云计算, 云游戏

TDengine 3.0 数据订阅功能的“独家”使用经验,只此一份!

TDengine

tdengine 时序数据库

数仓实时算子难以观测,快来试试算子级监控吧

华为云开发者联盟

数据库 后端 华为云 华为云GaussDB 华为云开发者联盟

全国见!飞桨星河社区五周年,邀你共赴大模型盛宴!

飞桨PaddlePaddle

人工智能 开发者 大模型 星河社区

Downie 4 for Mac(好用的视频下载软件) 4.6.34直装版

展初云

Mac 视频下载 Downie

这么有趣的ts类型,不看真的会后悔!

秃头小帅oi

8个比较流行的无/低代码后端数据平台

小狗围观科幻

众包平台,解锁自由职业者的灵活空间

知者如C

API测试:了解API接口测试与API接口测试指南

Noah

第七期 |《实时洞察 智能运营一用友企业绩效管理白皮书》解读

用友BIP

企业绩效

选择美国站群服务器的五大理由:安全、稳定、高效

一只扑棱蛾子

美国站群服务器

人工智能 |企业私有版大语言模型引领人工智能创新

测吧(北京)科技有限公司

测试

LangChain:引领人工智能应用系统的语言模型革新

测吧(北京)科技有限公司

测试

阿里云 E-MapReduce 全面开启 Serverless 时代

阿里云大数据AI技术

Milvus 2.3.功能全面升级,核心组件再升级,超低延迟、高准确度、MMap一触开启数据处理量翻倍、支持GPU使用!

汀丶人工智能

向量检索 Milvus 向量数据库

ios数据清除工具 FoneLab FoneEraser for iOS中文最新版

mac大玩家j

Mac软件 数据清除工具 iOS数据管理

DAPP开发:探索NFT DAPP的世界创建和启动指南

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

一种全新的日志异常检测评估框架:LightAD

华为云开发者联盟

人工智能 机器学习 深度学习 华为云 华为云开发者联盟

从互联网到云计算再到 AI 原生,百度智能云数据库的演进

Baidu AICLOUD

redis 分布式数据库 云原生数据库

FoneLab Location Changer for mac虚拟定位软件

展初云

Mac 虚拟定位软件

Permute 3 for mac(媒体文件格式转换器) 3.11.2中文版

展初云

Mac 格式转换 视频转换

软件测试/人工智能丨​Python运算符解析,小白也能轻松get

测试人

人工智能 软件测试

怎么理解 React Server Component 和 Next.js 的关系

伤感汤姆布利柏

OpenHarmony知识共享与论坛共建:更深层次的社区共建与繁荣

新消费日报

一个干净的前端架构是什么样的?

秃头小帅oi

王文京:行业化经营创造更大的客户价值

用友BIP

Google推出Web开发利器:AppEngine_SOA_Geoffrey Wiseman_InfoQ精选文章