如何将后端baas化(baas替代后端程序员)

技术怎样将后端BaaS化怎样将后端BaaS化,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。BaaS 化的核心其实就是把我们的后端应用封装成 RESTfu

如何制作后端BaaS?针对这个问题,本文详细介绍了相应的分析和解答,希望能帮助更多想要解决这个问题的小伙伴找到更简单易行的方法。

事实上,BaaS的核心是将我们的后端应用封装到RESTful API中,然后提供外部服务。为了使后端应用程序更容易维护,我们需要将后端应用程序分解成免维护的微服务。

微服务的拆解和合并有一个需要把握的度,因为拆解和合并的过程是有成本的。如果我们拆解得太仔细,必然会导致我们通话环节的增长。当呼叫链路变长时,首先会影响的是网络延迟。这很容易理解。毕竟,如果你离得很远,可能会发生交通堵塞的地方会更多。其次,随着运维成本的增加,呼叫链路越长,整个链就越脆弱,因为如果一个环节出现问题,整个呼叫链的接入就会失败,我们检查问题的难度也会变大。

另一方面,如果我们拆解得太粗糙,调用链接会很短,但这种微服务的可重用性会很差,更不用说高耦合带来的数据库表结构复杂冗余,让我们后期维护起来很困难。我画了一幅画。感受一下。

怎样将后端BaaS化

拆之

那我们就要合理拆除微服务。我们应该如何拆除微服务?其实我上节课提到,目前主流的解决方案是领域驱动设计,也叫DDD。DDD是埃里克埃文斯在2004年的同名书中提出的一个想法,但它一直局限在Java的圈子里。直到2014年,微服务兴起后,才发现它可以指导微服务的拆分,进入了大多数人的视野。总之,DDD是一种方法论:通过对业务分层抽象,分析定义出领域模型,用领域模型驱动我们设计系统,最终将复杂的业务模型拆解为独立运维的领域模型.

其实在使用微服务开发的过程中,我发现微服务作为一个整体应该是一个动态的网络结构,它会随着业务的发展而变化。DDD可以帮助我们在前期分析更好的网络结构,但实际上,我们更应该思考如何从整体上优化动态网络:减少核心节点,保护核心节点,降低网络深度等等.

如何理解动态网络优化?我们可以做一个思维实验:假设我们把所有的功能拆解成微服务,任何一个微服务节点都可以互相调用,调用的频率越高,它们就越接近。那么我们来考虑一下,当我们网站的访问请求流稳定时,我们整个微服务节点的网络状态是怎样的?

首先,网络节点的相互制约,总会让那些相互强依赖、高度耦合的节点越走越近,最终聚集成一组节点。其次,那些与业务逻辑无关的节点逐渐被边缘化甚至消失。让我们看看这些聚集在一起的节点。如果集群中的节点距离太近,实际上不适合拆分,应该整体做成微服务。在这些彼此过于接近的节点组被合并成一个微服务节点之后,我们可以查看那些彼此不太接近并且是微服务的节点。

因此,当我们开始项目时,我们不必太担心如何拆除微服务。相反,我们应该继续关注和考虑每个微服务节点的合理性。就像看动态网络一样,不断调整优化去掉核心节点。最终会伴随你业务的发展阶段,达到各阶段稳定动态的网络结构。

怎样将后端BaaS化

00-1010正如我们上面看到的,被拆解的架构是一个动态的网络,那么我们应该如何合并或者安排呢?当然,和SFF一样,可以通过数组或对象处理的方式处理每个HTTP数据的请求结果,然后返回这些结果。但是在这里我想给大家介绍另一种编排思路,工作流程。

怎样将后端BaaS化

我们可以把用户的要求想象成我们的呼吸系统,我们的肺是SFF,微服务和FaaS节点都是需要氧气的器官。我们深呼吸,氧气进入肺部,血液循环依次让氧气流过我们每个器官,这就是请求环节。一旦每个器官接受到新鲜血液,它就会吸收氧气并返回二氧化碳。最后,血液循环将二氧化碳带到肺部并呼出。这是数据返回链接。我们的器官是通过新鲜血液连接在一起的。这是事件流,即一个事件用于串联FaaS或微服务。

合之

实际上,FaaS提供的安全保护通常是放在扳机上的。触发器的授权类型或验证方法可以设置为匿名或函数函数。匿名是指匿名用户无需签名认证即可访问;函数方法需要签名验证[4]。这个签名认证算法的参数需要使用我们账户的访问密钥ak/sk[5]。ak/sk相当于我们云账户的银行卡密码。这样重要的账号信息只能在服务器端使用,不能出现在前端代码中。

为了解决后端互调的安全性,我们使用了VPC或者IP白名单,很容易解决。更难处理的是前端信任问题,JWT只是提供了信任链的解决方案。当然,关于身份验证,一些云服务提供商推出了一些更安全、更易用的BaaS服务,比如AWS。

IAM 和 Cognito。

安全性是我们考虑架构设计时重要的一环,因为安全架构设计的失败,会直接导致我们资产的损失。鉴权是识别用户身份,防止用户信息泄漏和恶意攻击使用的。但根据我统计的数据,我们在日常 99% 的问题,都发生在新版本上线的环节。

当我们的项目 Serverless 化以后,代码的质量变得尤为重要。你可以想想,Serverless 化之前,你不小心上线了一个 bug,影响的范围最大也就只有一个应用。但是 Serverless 化之后,如果是核心节点发布了严重的 bug 上线,那么影响的范围就是所有依赖它的线上应用了

不过,你也不用太担心,微服务和 FaaS 都具备快速独立迭代的能力。以前我们一个应用的迭代周期通常要一周到两周。但对于 Serverless 化后的应用来说,每个节点借助独立运维的特性,可以随时随地的发布上线。

综上,我们知道了,微服务和 FaaS 都是快速迭代的,修复问题很快,但我们也不能每次都等问题出现,再去依赖这个能力呀。有没有什么办法可以提前发现问题,保证我们既快又稳?目前软件工程的最佳做法就是代码流水线的发布管道。

发布管道

发布管道的流水线主要有 3 个部分:

  1. 代码发布前的验证,代码测试覆盖率 CI/CD;

  2. 模拟流量回归测试通过,发布到灰度环境;

  3. 代码正式上线,灰度环境替换正式环境。流水线的每个节点产生的结果,都会作为下一个节点必要的启始参数。

怎样将后端BaaS化

我们先看看上图,我来解释下这个流程。

  • 我们的代码合并到指定分支后,通常我会用 Develop 分支。

  • Git 的钩子就会触发后续的流水线,开始进入构建打包、测试流程。

  • 测试节点做的事情就是跑所有测试 Case,并且统计覆盖率。

  • 覆盖率验证通过,代码实例用录制流量模拟验证。

  • 模拟验证通过,发布代码实例到灰度环境。

  • 线上根据灰度策略,将小部分流量导入灰度环境验证灰度版本。

  • 在灰度窗口期,比如两个小时,灰度验证没有异常则用灰度版本替换正式版本;反之则立即丢弃这个灰度版本,止损。

目前规模大一些的互联网公司发布流程基本都在这样跑,如果你不是很了解,可以自己尝试用我们介绍的 Serverless 工作流或者云服务商提供的工作流工具动手搭建下。在这套流程的基础上,很多企业为了追求更高的稳定性,还会设定环境隔离的流水线和安全卡口。比如隔离测试环境和线上环境,测试环境用来复现故障。每次代码进入发布管道,都必须先在测试环境跑通,跑通后安全卡口放行,才能进入线上环境的流水线。

关于怎样将后端BaaS化问题的解答就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/154590.html

(0)

相关推荐

  • 不使用过滤器如何实现vue3时间戳转换

    技术不使用过滤器该怎样实现vue3时间戳转换这期内容当中小编将会给大家带来有关不使用过滤器该怎样实现vue3时间戳转换,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 vue2转换时间戳

    攻略 2021年12月18日
  • 清除ehcache缓存方法(ehcache分布式缓存怎么清除)

    技术如何使用@CacheEvict清除指定下所有缓存这篇文章将为大家详细讲解有关如何使用@CacheEvict清除指定下所有缓存,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了

    攻略 2021年12月25日
  • 如何使用attrs来告别Python中的样板

    技术如何使用attrs来告别Python中的样板如何使用attrs来告别Python中的样板,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。在

    攻略 2021年10月26日
  • 怎么理解Python报表和日志

    技术怎么理解Python报表和日志本篇内容主要讲解“怎么理解Python报表和日志”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Python报表和日志”吧!导出Exc

    攻略 2021年11月2日
  • 唐僧性格,唐僧的人物性格,300字

    技术唐僧性格,唐僧的人物性格,300字唐 僧唐僧性格:俗家姓陈,乳名江流,法名玄奘,唐朝第一高僧,所以被人们称为唐僧。西行取经时,唐朝太宗皇帝李世民赐法名三藏。唐僧十八岁出家皈依佛门,经常青灯夜读,对佛家经典研修不断,而

    生活 2021年10月26日
  • golang 如何识别文本格式(golang读取txt文件一次读取一行)

    技术Golang怎么读取单行超长的文本这篇文章主要介绍“Golang怎么读取单行超长的文本”,在日常操作中,相信很多人在Golang怎么读取单行超长的文本问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望

    攻略 2021年12月22日