什么是无服务器架构?它为何如此重要?
别自欺欺人了,在Pied Piper 的“新互联网”正式上线、数据中心彻底过时之前,世界依然会依赖服务器运行。无论服务器是在你的桌子底下,还是在云端,它始终是服务器。
我们当中有多少人曾与不懂技术的朋友和家人交谈,询问我们云“是什么”,以及他们是否应该“使用”云服务?接下来往往是他们翻白眼,然后我们用简洁明了的方式解释云实际上只是别人的服务器。
再加上“无服务器”(以及 IaaS、PaaS、SaaS 和 FaaS 等缩写),即使是最优秀的人也会感到头晕目眩😵。
云的简史
如今,我们大多数人都意识到了云计算的价值及其为从业余爱好者到大型企业等各方带来的投资回报率。在云计算出现之前,开发人员在部署应用程序时需要考虑以下问题:
- 购买服务器;
- 找到合适的场所来安置它;
- 将其连接到互联网;
- 安装和修补操作系统;
- 采取安全措施(例如物理安全、防火墙、DDoS防护等);
- 然后是硬件和软件的长期维护。
随后出现了像 Rackspace 这样的公司(以及其他许多公司),它们承诺将服务器物流的责任外包出去。但最终,这些服务商只解决了部分问题。创建特定地理位置的故障转移集群、维护服务器软件以及在开发、测试、质量保证和生产环境之间进行镜像,这些工作仍然需要我们这些普通用户来完成。
进入☁️。
随着虚拟化技术的进步,像 Rackspace 这样的公司能够随意启动虚拟机已成为新常态。我们不再需要配置物理硬件,只需发出命令、双击鼠标,就能轻松创建新的服务器和环境。
科技领域哪里有利可图,科技巨头们肯定不会落后。亚马逊的AWS、微软的Azure和谷歌的云平台碾压了竞争对手,确立了自己作为云计算服务(或者更准确地说,是基础设施即服务,IaaS)提供商的领先地位。
这些公司已大幅将集中式计算资源从本地服务器(甚至只是服务器机房)转移到全球分布式数据中心。试想一下,创建一个由 x 台服务器组成的集群环境来支持您的应用程序。如今,这几乎无需任何前期成本,只需几个命令行界面 (CLI) 命令即可完成。
IaaS、PaaS、FaaS、SaaS,天哪!
如今的云计算最好被描述为一组能够有效相互依存的服务。
基础设施即服务 (IaaS)
2010-2012 年的云计算实际上就是 IaaS(基础设施即服务)。亚马逊构建了一个惊人的基础设施来支持自己的业务。某个“邪恶天才”意识到他们可以而且应该将这些服务转售给公众(2017 年收入超过 170 亿美元💰)。
所以,与其自己搭建和管理数据中心,不如把这些麻烦交给云端。听起来很有道理!😊
平台即服务 (PaaS)
我们云金字塔的下一层是PaaS(平台即服务)。你可能会问,PaaS是什么?问得好!嗯……🤔
对我来说,理解PaaS的最佳方式是将其视为将应用程序部署到预配置环境中的概念。作为开发者,您无需担心底层基础设施、存储或网络等问题。但您可以完全控制应用程序本身及其环境配置。
PaaS(平台即服务)无疑是云计算领域定义最模糊的部分,但也蕴藏着最大的机遇。虽然有人认为Azure和Progress Kinvey都专注于PaaS,但它们提供的服务都超出了典型的PaaS定义。
软件即服务 (SaaS)
在传统的云模式中,SaaS(软件即服务)处于顶端。这是软件开发的最终目标:将数字产品按月付费提供给几乎无限数量的用户。流行的 SaaS 产品包括微软的 Office 365、Google Docs、MailChimp、Salesforce,甚至NativeScript Sidekick 的云构建服务。它们是高性能的分布式服务,几乎可以立即启动,无需任何本地配置或安装。
函数即服务 (FaaS)
等等,FaaS(函数即服务)在云计算金字塔中处于什么位置?还有,这个“无服务器”概念又是怎么回事?
我们别再讨论 FaaS 了(尽管它很符合我们的缩写模型),而应该开始讨论无服务器架构。实际上,它们本质上是一回事。
你可以很容易地论证无服务器比 FaaS “更大”或“更广泛”,但就本文的范围而言,我们不要想得太复杂。
无服务器
想想现在的移动应用。负责任的开发者会选择像NativeScript这样的框架(顺便推荐一下😄)来实现 iOS 和 Android 之间的代码共享。再加上一个需要独立托管环境的 Web 版本。很可能还需要一个数据库,可能是 NoSQL 或关系型数据库。或许还需要一个消息服务、一个崩溃监控服务。你应该明白我的意思了。
虽然搭建所有这些服务的环境比以往任何时候都更容易,但这并不意味着它很容易。PaaS 提供商减轻了很多负担,但仍然需要处理服务器端的业务逻辑(也就是云代码)。这就是无服务器架构的魅力所在:你的代码在云端运行。
当然,无服务器并不意味着完全没有服务器。无服务器的概念在于弥合应用部署的最后一道鸿沟,并将所有决策完全从开发者手中剥离。你只需编写代码并部署即可。仅此而已。一切都由系统自动配置和管理。
无服务器架构的优势在于,开发重点从服务转移到单个功能。可以参考Kinvey FlexServices。这些低代码、轻量级的“微服务”负责处理应用程序的服务器端业务逻辑。
例如,如果您想使用 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的无服务器功能。您可以利用以下功能构建更强大的应用:
- 🏃 快速访问旧版数据库;
- 🔌轻松连接企业身份验证系统;
- 🍃 能够编写低代码、轻量级的微服务,用于数据集成和业务逻辑;
- 📲 iOS 和 Android推送通知;
- 📂数据和文件存储;
- 👩💻 基于角色的用户管理。
享受 Kinvey 的 100% 免费版本,解锁这些功能,构建更强大、更安全、更具可扩展性的应用程序。
立即试用 Kinvey。它完全免费,足以满足您的大部分需求!
文章来源:https://dev.to/rdlauer/what-is-serverless-and-why-does-it-matter-f0n
