为什么 Serverless 将推动边缘计算的革命
Serverless 不仅在技术上也在概念上改变了我们构建应用的方式,这种变更已经被边缘计算领域所采用。
1. 在边缘
边缘计算是一种计算和存储更接近用户的场景。目前,大概有 10% 的企业数据是在传统数据中心外部产生和处理的,这个规模预计在 2025 年将达到 75%。
内容分发网络(CDN)代表了边缘计算的第一波浪潮。使用 CDN,用户所需的数据缓存在距离用户更近的位置,从而减少了回源时的传输时间,提高了性能。随着 CDN 和虚拟化技术变得越来越成熟,计算和存储已经逐渐移出了云数据中心的范围。这使得计算资源可以在边缘位置作为单独的服务出现。
边缘计算的典型应用是实时和即时数据处理。与强调 “大数据”的云计算不同,当转移到边缘时,更多时候关注的是“即时数据”。
边缘计算的核心在于性能优化:即减少等待时间,流量,带宽,地理距离,能源和功率。
边缘计算带来的延迟减少可以使物联网、人工智能和机器学习中的某些应用更加容易实现。例如:自动化设备的实时指令、远程手术和面部识别等都是在一定程度上利用边缘计算的新兴技术。
5G 的发展,更快的连接性和 5G 设备的普及进一步推动了边缘计算的兴起。边缘计算通过使计算更接近用户来减少延迟,而 5G 则可用于减少通信过程的延迟。 5G 和 边缘计算一起可以将延迟降低到以前无法达到的水平,从而可以催生新一代的应用场景。
为什么是 Serverless
?
Serverless
能让我们构建应用时无需考虑底层服务器。Serverless
并不是真的不需要服务器,从根本上来讲,这是一项旨在通过降低总成本(Total Cost of Ownership ,TCO
)来提高敏捷性的架构革命。
简言之,Serverless
是一种抽象,通过对底层计算机的细节进行抽象,封装成一个模型,在模型中,只需要将程序的核心代码提供给服务提供商(如 AWS),就可以根据不同的事件来进行运行并响应。
Lambda
是最广为人知的 Serverless
,即 AWS 提供的 FaaS
平台。 Lambda
改变了我们构建应用程序的方式,Lambda
的函数触发器也促进了事件驱动架构的发展。
技术总是周期性的
以 Web 应用程序为例。最初,很多逻辑都存在于服务器端。当加载网页时,框架和模板引擎将使用数据库中的相关数据填充页面的动态部分。然后将生成的渲染 HTML 页面发送并显示在客户端。随着前端越来越复杂的技术演进中,见证了诸如 React 和 Vue 之类的 SPA 框架的出现,并且越来越多的业务逻辑移至客户端(CSR)。随着时间的推移,负面影响逐渐体现出来:低端用户的体验变得很慢,并且严重影响到网站 SEO。后来,像 React 这样的框架“重塑了” SSR(服务器端渲染),我们又看到了向服务器端渲染(SSR)的转变。
我们构建整个应用程序的方式经历了类似的周期。最初的计算发生在大型机上,然后随着功能更强大的 PC 的出现而转移到了客户端,现在我们又看到了向中心云计算中心的转移。
我们将经历另一个循环,我们将移到边缘
真实世界的边缘计算
智能摄像机,IoT 设备,医疗设备和 CDN(如上所述)都是边缘计算的用例。我们正在将数据处理移到更靠近生成数据的地方。在电视直播中,可以通过模型来识别跌倒的人员(即时跌倒检测)-识别动作几乎可以零延迟。在工业生产中,零延时的优势可以使得机器立刻停机。
边缘计算并非没有风险。物联网在所有行业中的迅速采用,“智能”设备的安全性问题也普遍存在。边缘计算服务的可伸缩性可以缓解一些安全威胁,例如 DDoS,但核心计算模型必须在信任度较低(或者零信任)环境中运行。
Serverless
边缘 or 去中心化?
如上所述,Serverless
就是关于抽象的。开发人员可以编写应用程序代码,而不必关注基础设施的详细信息。 FaaS
解决方案的这种抽象,按需付费的定价模型和按需使用的执行模型具有与边缘计算互补的概念。
在边缘计算场景:
我们不必控制硬件,这是抽象的关键
这是一个不受信任的环境-因此我们需要严格的沙箱环境
我们通常会大规模处理不可预测的实时数据,因此我们需要一个高度可扩展的弹性模型来进行计算
边缘计算场景下使用的计算机通常配置比较低,因此,涉及到 CPU,内存,磁盘时,应用执行效率必须要高,并且使用较低的内存,磁盘。
这些都是 Serverless
所面临的挑战,也是 Serverless
的优势,所以说 Serverless
是边缘计算的补充也不为过。
自推出以来,Serverless
现在已经逐渐成熟。无论是在供应商方面还是在开源领域,用户体验及工具都得到了极大的改进。与此同时,开发者已经适应了在 Serverless
环境中工作的最佳实践和思维模式。所有这些进步将推动边缘计算的兴起。
开发人员已经习惯于在无状态抽象运行时环境中进行编码,以及与 Serverless
数据库和其他云原生设计模式的结合。从 Serverless
计算模型到边缘计算模型的模式转变是微乎其微的,而从传统的 Server 甚至 Kubernetes
环境转变到边缘计算是一个更大的飞跃,无论是思维方式还是工具方面。
Lambda @ Edge
,边缘计算的 Serverless
Lambda @ Edge
实际上并不属于 AWS 的 Serverlss
团队。实际上,它是 CloudFront
(CDN)产品。 Lambda @ Edge
通过在 CDN 层中运行,计算逻辑更接近用户。它与传统 Lambda
非常相似,我们无需管理基础架构,只需按需付费。
笔者经常使用 Lambda @ Edge
来做一些安全检查、路由和上下文特定的数据修改、基于 React 的 SSR、经典的图像转换用例、甚至用于一些基本的 A/B 测试。
借助 Lambda @ Edge
,代码必须首先部署在US-East-1
,然后再分发到全球 100 多个数据中心。 将代码分发到 100 个位置并在 CDN 层中运行并不是很复杂,与部署 Lambda 函数几乎相同,这要归功于 Serverless 社区的多年发展。
Serverless.yml
定义了一个单独的Lambda@Edge
函数
使用 Serverless
框架,我们可以定义我们的功能:声明由 CloudFront
事件触发的,然后运行一个 Serverless
部署命令。
代码本身可以用 Python
或 JavaScript
编写,无需处理任何手动引导或虚拟化问题。例如,我们可以用几行代码逐步将流量从一个 S3(AWS 存储服务)bucket 迁移到另一个 S3 bucket。
Lambda 开发者都熟悉的
handler
函数
Lambda @Edge 使用起来与 Lambda 一致, 唯一的区别是,它需要首先部署到 US-East-1
,并且在执行时间,CPU 和内存上相比 Lambda 有更多的限制。此外,只能使用JS
或Python
(没有其他受支持的语言或“自定义运行时”选项),并且由于分发时间的缘故,部署/回滚会花费更长的时间。
这是一个很好的例子,说明了 Serverless
的执行模型如何与边缘计算的执行环境互补。
Firecracker
正在解决 Serverless
在边缘计算场景面临的许多挑战
AWS 开发了 Firecracker
作为 Lambda
&Fargate
(AWS 的计算引擎)的底层虚拟化组件。Firecracker
是一种虚拟化技术,可让工作负载在 microVM
中执行。 microVM 是轻量级 VM(虚拟机),可在保持性能和灵活性的同时提供安全性和隔离性。
通过极小的设计可以实现安全性和低启动时间。这样可确保内存占用量保持较低,运行速度快且受攻击面最小。
简而言之,Firecracker
带来了更高的租户密度(每台计算机的 microVM 数量),更高的安全性,减少了内存需求并缩短了启动时间。这可以通过利用 Linux KVM(内核级别的虚拟化-内核充当虚拟机管理程序)来实现,它使用 Rust 作为高性能的实现语言,实现了特定的最小功能集的 API。
Firecracker
旨在改善资源受限环境中的启动延迟,以实现 Serverless
FaaS(Lambda)的功能。在低资源环境中对低延迟、强安全隔离和多租户的需求与边缘计算的需求有很大的重叠。在小型资源机器上的低信任度多租户环境中,程序需要快速启动。
那么 Lambda @ Edge
基于 Firecracker
运行代码也就顺理成章了。可以说是 Serverless
技术促进边缘计算发展的一个典型特性。
新兴边缘计算服务
除了 Lambda @ Edge
,还有许多其他 FaaS 边缘计算平台。 Fastly
和 Cloudflare Workers
是另外两个典型的边缘计算平台。
借助 Cloudflare Workers
,可以在 V8 隔离的全球网络上获得 Serverless 执行环境。该代码在 Cloudflare 的网络上运行(目前几乎所有互联网用户都在几毫秒内),冷启动时间不到 1 毫秒。支持一系列运行时(JS,Rust,C 和 C ++),并支持访问 Cloudflare
的边缘 K-V 存储。
对于基于边缘的应用来说,存储是一个有趣的挑战。 Cloudflare
最近与 Fauna(一种由 API 驱动的 Serverless
事务数据库)之类的 Serverless
数据库提供商合作,以改善边缘存储。基于此,边缘计算可以与“边缘优先”数据库结合使用。边缘应用程序通常需要计算和状态,基于 API 的 Serverless
数据库正好可以填补边缘存储的空白。
Fastly
是另一家提供边缘计算的厂家,它提供了 Compute@Edge
平台。作为 CDN 提供商,Fastly 在设计时考虑到边缘计算功能,它提供了在用户附近运行代码的功能以及 CDN 的常规功能。与 Cloudflare Workers
相似,Fastly
的 Compute @ Edge
允许在 CDN 层上运行计算逻辑-为现有和新应用程序带来图像优化、负载平衡、安全性增强和地理路由等功能。
Serverless
将成为边缘计算的推动者
我们已经看到,边缘计算服务已经在利用 Serverless
领域的技术优势。
在 Serverless
开发模式下,开发人员以无状态、按使用付费、事件驱动和分布式的思维方式进行实践。这种模式的转变对于启用边缘计算也将是关键。除此之外,我们为 Serverless 开发的许多技术和最佳实践将构成边缘计算的基础。
Serverless
改变了我们构建应用程序的方式,Serverless
将继续推动边缘计算的革命。
请关注公众号 CNCF-Knative 了解更多 Serverless & Knative 资讯
版权声明: 本文为 InfoQ 作者【Chumper】的原创文章。
原文链接:【http://xie.infoq.cn/article/3628e35f38cea4f0dc46483bf】。文章转载请联系作者。
评论