如何将后端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)

相关推荐

  • 剪辑音频,有什么好用的音频编辑软件

    技术剪辑音频,有什么好用的音频编辑软件有一款很著名也存在很久的音频编辑软件,名叫“CoolEdit Pro”,到百度一搜就能搜到并下载,原软件是英文的,但是有汉化版剪辑音频。我自己一直用它来处理音频的问题,感觉基本上我需

    生活 2021年10月20日
  • C#中如何实现WPF联系人列表

    技术C#中如何实现WPF联系人列表这篇文章将为大家详细讲解有关C#中如何实现WPF联系人列表,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.本文背景本文效果如下: 联系人列表2.

    攻略 2021年12月1日
  • influxdb分布式数据库(分布式数据库tidb是什么)

    技术怎么解析RadonDB分布式数据库核心技术与实现怎么解析RadonDB分布式数据库核心技术与实现,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。摘要:随着

    攻略 2021年12月18日
  • go并发中select的示例分析

    技术go并发中select的示例分析这篇文章给大家分享的是有关go并发中select的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、前言介绍:对于Go语言并发通讯,是使用的协程go

    攻略 2021年11月17日
  • CSS学习笔记:定位属性position

    技术CSS学习笔记:定位属性position CSS学习笔记:定位属性position目录一、定位属性简介二、各属性值的具体功能1. relative2. absolute3. fixed三、三种定位属

    礼包 2021年11月4日
  • 抖音买10000粉要多少钱,抖音在哪里花钱买粉丝?

    技术抖音买10000粉要多少钱,抖音在哪里花钱买粉丝?关于到现在教大家抖音真人粉购买的方法这个话题,相信很多小伙伴都是非常有兴趣了解的吧,因为这个话题也是近期非常火热的,那么既然现在大家都想要知道教大家抖音真人粉购买的方

    测评 2021年11月10日