返回博客首页
← 所有文章

什么是 Serverless 以及它为什么重要?

2018年8月2日 — 作者:Rob Lauer

让我们不要自欺欺人,在Pied Piper 的“新互联网”公开并使数据中心变得无关紧要之前,世界仍然依赖于服务器。无论是在您的桌子底下还是在云容器中,服务器仍然是服务器。

我们中有多少人与非技术朋友和家人进行过这样的对话:询问我们“云”是什么以及他们是否应该“进入”云?随之而来的是翻白眼和一个简洁的解释,即**云实际上只是别人的服务器**。

将“serverless”加入其中(以及诸如 IaaS、PaaS、SaaS 和 FaaS 之类的首字母缩略词),即使是我们中最优秀的人也会感到头晕目眩😵。

云的简史

如今,我们大多数人都意识到了云的价值及其为从业余爱好者到大型企业的所有人带来的投资回报率。在云出现之前,在部署应用程序时,开发人员必须关注

  • 购买服务器;
  • 寻找容纳服务器的物理位置;
  • 将其连接到互联网;
  • 安装和修补操作系统;
  • 保护它(例如物理安全、防火墙、DDoS 防御等);
  • ...以及硬件和软件的长期维护。

然后出现了像 Rackspace(以及许多其他公司)这样的公司,它们承诺卸载服务器后勤的责任。**但归根结底,这些提供商只解决了问题的一部分。**创建地理特定的故障安全集群、维护服务器软件以及从开发 -> 测试 -> QA -> 生产环境镜像仍然留给了我们这些普通人。

云的到来☁️。

随着虚拟化技术的改进,像 Rackspace 这样的公司能够随意启动虚拟机成为新常态。我们不再需要配置物理硬件,而是发出命令并双击即可创建新的服务器和新环境。

在科技领域有赚钱的机会,你就可以肯定科技巨头们不会落后。亚马逊的 AWS、微软的 Azure 和谷歌的云平台击败了竞争对手,确立了自己作为云计算服务的主要提供商,或者更准确地说是 IaaS(基础设施即服务)提供商的地位。

这些公司已将集中式计算资源从本地服务器(甚至只是服务器机房)转移到全球分布式数据中心。考虑一下创建 x 个服务器的集群环境以支持您的应用程序。如今,这只需很少或根本不需要前期成本,只需几个 CLI 命令即可完成。

IaaS、PaaS、FaaS、SaaS,我的天哪!

如今的云最好表示为一组有效地相互构建的服务。

saas paas iaas pyramid

基础设施即服务 (IaaS)

2010 年至 2012 年版本的云实际上只是 IaaS(基础设施即服务)。亚马逊已经建立了惊人的基础设施来支持自己的业务。一些天才意识到他们可以并且应该向公众转售这些服务(2017 年收入超过 170 亿美元💰)。

因此,您可以将构建和管理自己的数据中心的烦恼卸载到云端。到目前为止,这很有道理!😊

平台即服务 (PaaS)

我们云金字塔的下一层是 PaaS(平台即服务)。您可能会问什么是 PaaS?好问题!好吧...嗯...🤔

我认为 PaaS 的最佳方法是将您的应用程序部署到预配置的环境中。作为开发人员,您无需担心底层基础设施、存储或网络方面的考虑。但您可以控制应用程序本身和环境配置。

PaaS 毫无疑问是云中最模糊的部分,但也蕴藏着最大的机遇。您可以争辩说 Azure 和Progress Kinvey 侧重于 PaaS,但两者都提供了超出典型 PaaS 定义的服务。

软件即服务 (SaaS)

在传统的云模型中,SaaS(软件即服务)位于顶层。这是软件开发的最终目标。以每月费用提供给数量无限的用户群的数字位。流行的 SaaS 产品示例包括微软的 O365、谷歌文档、MailChimp、Salesforce,甚至NativeScript Sidekick 的云构建产品。它们是高性能的分布式服务,几乎可以立即启动,无需任何本地配置或安装。

功能即服务 (FaaS)

但是等等,FaaS(功能即服务)在云金字塔中处于什么位置?**这个“serverless”东西又是什么?**

让我们停止讨论 FaaS(即使它完美地符合我们的首字母缩略词模型),并开始讨论**serverless**。就所有意图和目的而言,它们是一样的。

您可以很容易地争辩说 serverless 比 FaaS“更大”或“更多”,但对于本文的范围,让我们不要想太多。

Serverless

想想今天的移动应用程序。负责任的开发人员会选择像NativeScript(厚颜无耻的宣传😄)这样的框架来在 iOS 和 Android 之间共享代码。添加需要其自身托管环境的 Web 变体。可能某个地方有一个数据库,NoSQL 或关系型数据库。也许是消息服务。崩溃监控服务。你懂的。

虽然为所有这些服务启动环境比以往任何时候都更容易,但这并不意味着它很容易。PaaS 提供商消除了很多痛苦,但还有服务器端业务逻辑(即云代码)需要处理。这就是 serverless 的魅力所在。**它只是您的代码,在云中运行。**

**当然,serverless 并不意味着没有服务器。**Serverless 的概念是弥合应用程序部署的最后差距,并将所有决策完全隐藏在开发人员之外。**您编写代码并进行部署。故事结束。**所有内容都为您预配和管理。

serverless 的区别在于开发变得专注于单个函数而不是服务。考虑一下Kinvey FlexServices。这些是用于处理您的应用程序的服务器端业务逻辑的低代码和轻量级“微服务”。

在此之前录制的网络研讨会中,了解有关“Serverless 对企业应用程序意味着什么”的更多信息。

例如,如果您想使用 Google URL Shortener API,您可以执行以下操作

function shortenURL(context, complete, modules) {
  const requestOptions = {
    uri: 'https://www.googleapis.com/urlshortener/v1/url?key=',
    body: {
      longUrl: context.body.longUrl
    },
    json: true,
    resolveWithFullResponse: true
  };
  _getConfig(complete, modules).then((result) => {
    requestOptions.uri += result;
    request.post(requestOptions, (error, res, body) => {
      if (error) {
        return complete().setBody(error).runtimeError().done();
      }
      complete()
        .setBody({ shortUrl: body.id })
        .done();
    });
  });
}

exports.shortenURL = shortenURL;

...完整实现在此处提供

此 GitHub 存储库中查找其他 Flex Services 示例。

这些函数驻留在云中,并在可预测、可扩展且可靠的环境中在云中执行。开发人员使用这些函数构建系统,以尽可能分布式和强大的方式将应用程序组合在一起。

阅读有关Kinvey FlexServices 入门的更多信息

NativeScript 的角度

虽然移动应用程序通常通过应用商店分发,当然也运行在移动设备上,但几乎每个应用程序都有一个支持的后端。因此,在构建您的下一个 NativeScript 应用程序时,请考虑Kinvey 的 serverless 功能。您可以使用以下功能构建更好的应用程序

享受 Kinvey 的 100% 免费层级以解锁这些功能并构建更强大、更安全和可扩展的应用程序。

立即试用 Kinvey