最近前端开发中最令人兴奋的话题之一是边缘计算。能够在边缘运行代码是一项新功能,它将从根本上改变我们编写应用程序的方式。本文旨在简要概述无服务器边缘计算、它为何有益以及如何使用它。
直到最近,当我们谈论边缘时,我们通常会想到内容交付网络 (CDN),它在全球数百台服务器上缓存 HTML、CSS 文件、图像、视频等静态资产。因为内容贴近用户,访问速度非常快。无服务器边缘计算通过允许开发人员在边缘运行代码而无需管理任何服务器来扩展这一想法。边缘计算为开发人员提供了代码的新位置以及两个传统选项,即后端和设备。
这些天谈论最多的两个平台是Cloudflare Workers和Deno Deploy 。在高层次上,它们有许多相似之处:
另一方面,这两个平台之间最明显的区别是 Deno Deploy 不提供任何存储解决方案,而 Cloudflare Workers 具有用于一致存储的Durable Objects和用于低延迟存储并具有最终一致性的Workers KV 。
边缘计算最常用于实现中间件,这些中间件是重写 URL、重定向请求或操作 cookie 和标头的简单脚本。例如,您可以根据 cookie 的值提供不同版本的页面来执行 A/B 测试。您可以支持本地化,这意味着来自不同国家的用户可以看到不同的内容。您还可以根据用户身份验证状态授予或阻止对某些页面的访问。
虽然上述用例可以由后端和/或客户端处理,但使用边缘计算在性能和简单性方面更加优化。如果您在客户端上实施 A/B 测试或本地化,您可能会有一个大包和闪烁的 UI。另一方面,在后端实现此功能通常需要服务器配置并导致响应缓慢。
边缘计算不仅仅是中间件。事实上,您甚至可以使用边缘计算来完全取代您的后端。许多全栈框架,例如 Remix 和 Fresh,现在允许您编写直接访问数据库并在边缘呈现 HTML 的函数。通过这样做,您可能不需要像过去通常那样开发 API。 (但如果您想在边缘提供 RESTful API 甚至 GraphQL API,您也可以这样做。)
但是为什么要考虑用无服务器边缘计算替换后端呢?有几个原因。首先,因为它是无服务器的,所以无需担心服务器维护和自动缩放。其次,它比传统后端快得多,因为它运行得非常接近用户,并且与普通的功能即服务平台相比,边缘计算很少或没有冷启动。第三,它比传统的无服务器选项更便宜,因为边缘计算平台使用轻量级技术,例如用于多租户的V8 隔离(相对于虚拟机或容器),这使它们能够更有效地利用资源并处理大量事务更多的请求。
如果您使用 Netlify 或 Vercel 等平台部署 Web 应用程序,选择加入边缘计算非常简单。例如,您可以使用 Netlify 的Edge Functions (基于 Deno Deploy 构建)或 Vercel 的Edge Middleware (可能在 Cloudflare Workers 上运行)。当您将 Next.js 应用程序(自版本 12.2 起)部署到 Vercel 或 Netlify 时,您可以配置部分或所有页面以使用边缘运行时进行服务器渲染(此功能称为Edge SSR )。
如果您不部署到 Netlify、Vercel 或类似平台,建议您使用边缘原生全栈框架并将您的应用程序直接部署到选择的边缘计算服务。例如,您可以使用Fresh 框架开发您的应用程序并将其发布到 Deno Deploy。另一个例子是Remix 框架,它为 Cloudflare Workers 和 Deno Deploy(以及许多其他部署目标)提供适配器。
如果你不想使用全栈框架,你可以分别开发你的前端和后端。借助 Cloudflare,您可以使用Pages或Workers Sites为您的前端和静态资产提供服务。使用 Deno Deploy,您可以从文件系统提供静态资产。至于后端,您可能想要使用 HTTP 框架,例如Sunder (如果您以 Cloudflare Workers 为目标)、 oak 、 Router或Sift (如果您以 Deno Deploy 为目标)。
虽然边缘计算非常适合实现中间件脚本,但如果你想用它来实现整个后端,你应该知道目标平台对 CPU 运行时间、内存、包大小等的限制。您可以在此处找到有关 Cloudflare Workers 限制的详细信息,并在此处找到 Deno Deploy。
总之,借助 Cloudflare Workers 和 Deno Deploy 等边缘计算平台,开发人员可以编写既快速又便宜的中间件和后端。边缘计算改变了游戏规则,它启用了 Remix 和 Fresh 等新一代全栈框架。您可以使用这些框架来开发应用程序并将其直接部署到边缘。此外,边缘计算可以通过 Netlify 和 Vercel 等平台间接使用。
这仅仅是个开始。在不久的将来,我们可以期待为边缘开发更多的框架、库和工具。希望本文能激起您的兴趣,并为您提供一些有关边缘计算的高级信息,以便您开始探索其潜力。