Serverless单体架构的崛起

这篇具有很好参考价值的文章主要介绍了Serverless单体架构的崛起。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在过去的几十年里,我们见证了应用架构以快速的速度演变。当我还是一个年轻的程序员时,开始编写一个简单的代码库,我们可以称之为单体应用。

我记得为前端编写了一些HTML/CSS,后端用了一些Java。但后来,随着时代发展和需求改变,分布式架构(我们现在称之为“微服务”)应运而生。

单体应用的衰落

这暂且不谈单体应用如何变得越来越不受欢迎,但需要开发者开始鼓吹微服务却是事实。

通常,微服务提供了以下好处:

  • 微服务更小,更容易维护。
  • 减少了团队之间的摩擦。每个团队可以独立地处理每个微服务。
  • 编写速度更快(不需要遵循现有且有时繁琐的架构)。
  • 团队使用最适合任务的工具(例如,处理大量JSON数据?也许可以使用Node.js。需要高性能?也许可以考虑Rust。只有Ruby开发者?那么Ruby似乎是解决方案)。
  • 减少认知负荷,这意味着每个开发者只需要了解代码的一个子集,而不是整个代码库。

关于微服务的误解

然而,经常或者有时,过度使用微服务也存在一些缺点:

  • 代码重复:一些代码(数据或函数)在多个仓库之间重复出现,这会导致共享库与单一仓库的分歧和争论。
  • 事务处理复杂:处理多个微服务之间的事务具有一定的挑战性,并需要额外的模式(Saga、事件溯源等)。
  • 增加认知负荷:取决于上下文的不同,可能会极大地增加认知负荷。每个开发人员不仅需要知道微服务能够做什么/应该做什么,还需要知道它可以/应该与哪些其他微服务进行通信。
  • 易受故障影响:在几乎所有的场景中,都更容易受到故障的影响:数据库连接、网络延迟、缓存、异常等。

但是,任何明智的开发者都会告诉你,对于任何架构选择,答案总是“看具体情况”。

单体与微服务的平衡

单体与微服务之争中,一个设计良好的、高度解耦的架构只需要处理最多四个不同的部分:

  • UI,也称为前端(front-end)
  • BFF,即面向前端的后台(Backend For Frontend),或者说是单一前端的后端(Backend for a Single Frontend, BSF)
  • 传统后端,充当前端和数据之间的粘合剂。称之为 BFD (Backend For Database) 或多BSF的后端。
  • 数据库,也称为数据库及其查询机制。

Serverless单体架构的崛起,架构,serverless,架构,云原生

从熟悉的模式中,我们已经拥有合适的技术栈:

  • 前端框架(Angular、React、Vue、Svelte 等)
  • 使用适当技术的 BFF(简单的 REST API?node.js 中的 GraphQL 服务器?)
  • 一个传统的后端(暂且称之为BFD),再次使用适当的技术(另一个REST API?一个高性能的gRPC服务器?)
  • 最后是所需的最小数据库数量(关系数据库和/或文档数据库和/或图数据库和/或搜索引擎)

如果我们重视简单性,还有改进的空间。我们还应该商定需要技术栈的每个部分的比例:

  • 至少一个前端,但你可以无限扩展这个数字,无论是在编写微型前端、大量的 web 应用程序,还是两者兼而有之
  • 一个前端 = 一个 BFF,如果我们遵循逻辑
  • 一个传统的后端,你可以根据需要将其拆分成 N 个微服务。但是,如果我们使用单体架构,那就说 1 个吧。
  • 每个类型的数据库至少一个。假设我们需要 3 种类型的数据库来满足中等规模的应用程序。

Serverless单体架构的崛起,架构,serverless,架构,云原生

N = (2 * UI) + (1 * BFD) + (3 * DB) 

正如俗话所说,“少即是多”,因此我们的目标是尝试将这个数字 (N) 减少到绝对最低。

进入Serverless单体架构时代

前端元框架的兴起

过去我们见证了一个令人难以置信的演变,那就是诞生了众多前端元框架。其中最著名的有 Next.js、Remix 和 SvelteKit。

一个元框架的目标是同时处理前端的前端和后端(是的,当你这样说的时候,这听起来并不聪明)。换句话说,这意味着使用单一技术构建 UI + BFF。

而且,由于如今的云和托管解决方案,我们可以轻松以无服务器模式部署元框架。

Serverless单体架构的崛起,架构,serverless,架构,云原生

N = META-FRAMEWORK + (1 * BFD) + (3 * DB)

从这里开始,我们为每个前端减少了 1 个技术!

Serverless数据库时代

目前,围绕数据库作为服务(DaaS)的解决方案或者说后端作为服务(BaaS)正在兴起。BaaS的目标是提供应用程序所需的所有功能,以便你无需在后端编写一行代码。你只需要在你的BFF中编写查询,就完成了。

最著名的BaaS无疑是Firebase,它提供了许多功能,如实时文档数据库、身份验证服务、数据库之上的权限机制、文件系统存储等等。

然而,Firebase也有一些严重的限制:

  • Firebase 数据库,无论是 Realtime 数据库还是 Firestore,都是单模型数据库(文档数据库)。
  • 它只能作为一个单向图进行遍历(如果我们可以将其视为图的话)。

还有另一个叫做Supabase的著名BaaS,试图与Firebase相媲美。使用类似PostgreSQL的关系型数据库消除了Firebase的一些限制,但它仍然是单模型数据库…

最近引起我注意的一个项目是SurrealDB。它是一个带有内置后端的数据库,具有许多许多功能(我觉得“许多”这个词写得还不够)。作为一个真正的多模型数据库,并且有一种新的查询语言,他们能够提供应该让你写一些代码的功能。

最近,这种类型的数据库被越来越广泛地称为元数据库。

Serverless单体架构的崛起,架构,serverless,架构,云原生

N = META-FRAMEWORK + META-DATABASE

从那里开始,我们在另一个层面上大大减少了技术数量。

附加内容:利用单一仓库架构

与微服务一样,编写单体应用意味着拥有正确的工具箱。这个工具箱可以解决我们通常遇到的约束,比如:

  • 太庞大以至于无法失败,一个简单的错误可能会导致整个服务崩溃
  • 长时间部署,编译大型项目通常需要很长时间
  • 无法跨团队隔离和共享的单一代码库

使用这种架构,对纯净和全面的单体架构(前端 + 后端)的需求就不再存在。然而,元框架是超过 80% 的代码将驻留的部分。为此,现在有一些工具可以使用,例如 turborepo。

我们还没有提到的一个不可避免的需求是数据库脚本迁移。当然,这些脚本需要存储在单独的仓库中,没有什么复杂的。文章来源地址https://www.toymoban.com/news/detail-759690.html

到了这里,关于Serverless单体架构的崛起的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生架构的核心技术(微服务、DevOps、容器云、Service Mesh、Serverless、声明式API)

    天上飞的理念☁️☁️☁️☁️☁️,必然有落地的实现 文章介绍 读完本文,你将对云原生下的核心概念微服务、DevOps、容器云、Service Mesh、Serverless、Immutable Infrastructure、Declarative-API等有一个详细的了解,帮助你快速掌握云原生的核心和要点。 IaaS(Infrastructure-as-a-Service基

    2024年02月03日
    浏览(46)
  • Serverless Devs 重大更新,基于 Serverless 架构的 CI/CD 框架:Serverless-cd

    近日,Serverless 开发者平台 Serverless Devs 重磅发布基于 Serverless 架构的轻量级 CI/CD 框架—— Serverless-cd 。Serverless-cd 是一款运行在 Serverless 架构上的功能强大而灵活,安全,低成本的CI/CD开源框架。该框架基于 Serverless Devs 开发者工具打造,通过 Serverless-cd开发者可以快速构建企

    2024年02月02日
    浏览(44)
  • 无服务架构--Serverless

    无服务架构(Serverless Architecture)即无服务器架构,也被称为函数即服务(Function as a Service,FaaS),是一种云计算模型,用于构建和部署应用程序,无需关心底层服务器的管理。 在无服务器架构中,开发人员编写单独的函数或函数集合,这些函数以事件驱动的方式触发,并在

    2024年02月09日
    浏览(37)
  • 从函数计算到 Serverless 架构

    作者:秋雨陈 随着 Serverless 架构不断发展,各云厂商和开源社区都已经布局 Serverless 领域,一方面表现在云厂商推出传统服务/业务的 Serverless 化版本,或者 Serverless 计算平台;另一方面表现在开源社区中 Serverless 项目逐渐丰富起来,无论是平台类还是工具类的开源项目、或

    2024年01月18日
    浏览(42)
  • 详解 Serverless 架构的 6 大应用场景

    Serverless 架构将成为未来云计算领域重要的技术架构,将会被更多的业务所采纳。进一步深究,Serverless 架构在什么场景下有优秀的表现,在什么场景下可能表现得并不是很理想呢?或者说,有哪些场景更适合 Serverless 架构呢? Serverless 架构的应用场景通常是由其特性决定的,

    2024年02月03日
    浏览(35)
  • Serverless架构的理论基础和发展历程

    随着云计算技术的不断发展,越来越多的企业开始将应用迁移到云端。在这个过程中,Serverless架构逐渐成为了一种热门的技术选择。Serverless架构是一种基于事件驱动的计算模型,它允许开发者在不管理底层服务器的情况下构建和运行应用程序。本文将介绍Serverless架构的理论

    2024年02月01日
    浏览(47)
  • 鸿蒙原生应用元服务实战-Serverless华为账户认证登录需尽快适配

    一、ArkTSAPI9,服务器端基于serverless开发的应用与元服务华为账号注册登录功能暂时是不支持的 二、3月1日后的审核要求 3月1日的时间是快到了。 三、会导致的结果 使用了ArkTSAPI9,服务器端基于serverless开发的应用与元服务,如果要每个应用元服务去自己开发适配的话,不知

    2024年02月21日
    浏览(43)
  • 实战指南 | Serverless 架构下的应用开发

    UC Berkeley认为Serverless架构的出现过程类似于40多年前从汇编语言转向高级语言的过程,在未来Serverless架构的使用会飙升,或许服务器式云计算并不会消失,但是将促进BaaS发展,以更好地为Serverless架构提供支持。 Serverless 架构的应用开发流程 基于 Serverless 架构的应用开发流程

    2024年02月12日
    浏览(40)
  • HarmonyOS/OpenHarmony原生应用开发-华为Serverless云端服务支持说明(一)

    云端服务的实现是 HarmonyOS/OpenHarmony原生应用开发的一个重要的环节,如果用户端是鸿蒙原生应用,但是服务端即云端还是基于传统的各种WEB网络框架、数据库与云服务器,那么所谓的原生应用开发实现的数据即后端服务是和以前、现在的互联网、移动互联网应用是一样的,等

    2024年02月07日
    浏览(56)
  • 什么是无服务器架构Serverless?有哪些优势?

    Serverless架构是云的自然延伸,我们回顾一下云计算IaaS和PaaS的发展,2006年AWS推出EC2(Elastic Compute Cloud),作为第一代IaaS(Infrastructure as a Service),用户可以通过AWS快速的申请到计算资源,并在上面部署自己的互联网服务。IaaS从本质上讲是服务器租赁并提供基础设施外包服务

    2024年01月24日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包