首页 > 其他分享 >应用架构的演进 | 拒绝牺牲性能为代价的安全

应用架构的演进 | 拒绝牺牲性能为代价的安全

时间:2023-11-07 13:44:45浏览次数:30  
标签:服务 演进 API 架构 客户端 代价 Gateway BFF

微服务架构下有大量服务,每个服务都会暴露自己的 API。随着时间推移,不同服务的 API 容易出现不一致、重复的情况。这给 API 的维护带来很大难度。同时,服务间存在复杂的依赖关系。一个 API 的实现可能依赖多个其他服务的 API。这种依赖关系的管理非常复杂。一个 API 的变更会影响依赖它的其他 API。因此,微服务架构对外暴露大量粒度细的 API,给 API 的设计、管理、安全、监控等带来很大挑战。

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术,观点,和项目,并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏,看到这里请一定不要匆匆划过,点这里让它成为你的技术宝库!

图片
 图 1 源于:《Microservices Patterns》
作者 Chris Richardson

API Gateway 模式可以在一定程度上帮助解决微服务架构下对外暴露 API 的挑战。

  • API Gateway 可以将各个微服务的 API 聚合起来,对外可以以较粗的粒度暴露 API,这样可以降低微服务粒度划分的难度。
  • API Gateway 作为统一的 API 入口,可以实现诸如请求路由、组合、协议转换等功能。这样可以一定程度上屏蔽各个微服务 API 的不一致情况,提高一致性。
  • 依赖关系可以在 API Gateway 这一层进行管理,降低各个微服务之间的复杂依赖。
  • 结合其他的安全服务,比如 Firewall 和架构的安全设计,API Gateway 可以获得实现认证、鉴权、防护等能力,从而集中处理 API 的安全性问题。
  • 通过 API Gateway 集中接收请求,可以方便统一监控日志、报警等,提高监控效率。

图片
 图 2 源于:《Microservices Patterns》
作者 Chris Richardson

让我们来看一下 API Gateway 模式用于复杂查询的生产示例。

图片
 图 3 源于:《Microservices Patterns》
作者 Chris Richardson

如图所示,通过客户端调用多个微服务的 API,并在客户端组合这些 API 返回的结果。

是直接且简单的实现方式。每个服务只需要提供简单的 API 就可以了,但是它缺点是增加了客户端负载,如果设计不当,可能会成为性能瓶颈。

1 Backend For Frontend 架构

Backend For Frontend(BFF)架构设计思想可以很好地解决 API Gateway 存在的性能瓶颈问题。相比 API Gateway 统一对外暴露 API,BFF 为每一种类型的客户端提供符合其需求的定制化后端服务。具体来说,BFF 可以这么设计:

  • 为移动端提供面向移动端优化的 BFF 服务层。
  • 为 Web 端提供面向 Web 优化的 BFF 服务层。
  • 为第三方系统提供对应的 BFF 服务。

每个 BFF 服务层只服务对应一种类型的客户端,按需从各微服务中获取数据,提供给对应的客户端。这种设计有以下优势:

  • 每个 BFF 服务可以针对特定客户端进行优化,不会存在性能瓶颈。
  • 当某一类客户端需要变更时,只需要改变对应的 BFF 层,不影响其他客户端。
  • 新的客户端类型可以通过增加一个新的 BFF 来实现支持。

BFF 架构符合微服务的设计思想,可以避免 API Gateway 的性能及变更影响问题。它为微服务提供了一种更加可扩展、灵活的门面服务。

2 云原生的 API Gateway 模式服务

利用云原生服务和工具可以帮助我们进一步优化 BFF 工作流程,提高开发效率,增加业务弹性。比如 Amazon AppSync。

图片
 图 4

如图所示,Amazon AppSync 是亚马逊云科技提供的一种托管式 GraphQL 服务。通过自动生成 GraphQL 接口,并连接各种数据源,来快速构建功能强大的后端服务。

  • AppSync 可以自动生成数据模型和对各种数据源的访问机制,极大地减少了手动编写访问各种后端服务的代码量。
  • AppSync 内置对多种数据源(DynamoDB、Lambda 等)的集成机制,可以轻松连接这些数据源,减少直接集成的工作。
  • AppSync 支持订阅实时数据更新,对连接的数据源进行实时同步,减少直接处理实时数据同步逻辑的工作。
  • AppSync 天然支持细粒度的访问控制,可以轻松实现对 API 的访问权限控制。
  • AppSync 提供了内置的监控和指标,可以方便地观察 API 的性能。

AppSync 它适用于快速开发需要访问多个数据源的应用程序后端服务,可以处理大部分通用的后端访问需求,让前端开发者只需要关注核心业务逻辑,不再需要编写重复性的后端访问代码。这可以大大精简 API Gateway 的代码量,使其专注在核心业务处理上,提高开发效率。

小结

亚马逊根据自身对云计算和无服务器的理解,实现高性能、高安全的 API Gateway 服务。让安全与性能不产生矛盾关系。

微服务应用架构是构建业务弹性的重要实现,它有很多优势,但是并不代表它适合所有的业务模型。我选择单体应用架构还是微服务应用架构需要依据业务类型。同时,我们也看到构建和运行一个微服务应用并不简单,会面临新的挑战。无服务器可以通过多种事件驱动型的技术模式来解决微服务架构面对进程间通信的可靠性,数据一致性,以及整个业务架构的敏捷性,可靠性,可观测性的困难和挑战。

图片

 

文章来源:
https://dev.amazoncloud.cn/column/article/6548b715c698742ff2a987a4?sc_medium=regulartraffic&sc_campaign=crossplatform&sc_channel=bokey

标签:服务,演进,API,架构,客户端,代价,Gateway,BFF
From: https://www.cnblogs.com/AmazonwebService/p/17814807.html

相关文章

  • Instagram 早期技术架构
    哈喽大家好,我是咸鱼想必大家都听说过Instagram,它是全球最受欢迎的社交媒体平台之一,拥有数十亿的活跃用户Instagram诞生于2010年,上线一周就坐拥10万注册用户,一年之内就拥有了1400万用户,可见扩张趋势突飞猛进。Instagram诞生的时候只有3个工程师,想必大家对【他们怎么......
  • Unity DOTS中ECS核心架构详解
    最近DOTS终于发布了正式的版本, 我们来分享一下DOTS中ECS的几个关键概念与结构,方便大家上手学习掌握Unity DOTS开发。 ECS中的World  Unity DOTS ECS架构中所有的Entity都是被放到了World对象里面,每个Entity在World里面都有唯一的Id号。Unity DOTS 可以同时支持很多个......
  • 阅读笔记(二)————《架构漫谈》
      架构漫谈是由资深架构师王概凯Kevin执笔的系列专栏,  读完第二章主要有下面几个方面:何为相?一般我们认为:看到一个东西,比方说杯子,“杯子”就是一个名字,指代的看到的东西就是相,就是事务的相状。我们一听到“杯子”这个词,脑海里就会浮现出一个杯子的形象。而“杯子”这......
  • 云原生架构实战06 Kubernetes的核心概念
    一、有状态和无状态二、对象规约和状态spec是规约规格的意思,描述了对象的期望状态--希望对象所具有的特征,当创建Kubernetes对象是,必须提供兑现对象的规约,用来描述该对象的期望状态,以及关于对象的一些基本信息(名称)状态status:表示对象的实际状态,该属性由k8s自己维护,会通过一系列......
  • 后端架构设计
    后端架构设计:1.用户管理模块1.1创建用户账户接口:POST/api/users功能:管理员通过提供用户名、密码和权限来创建新用户账户。处理:接收并验证管理员提供的信息,将用户信息存储到数据库中。1.2权限分配接口:PUT/api/users/{userID}/permissions功能:管理员可以通过指定用......
  • 高斯数据库HCNA之关系型数据库架构
    三、关系型数据库架构介绍1、数据库架构发展数据库架构变化随着业务规模增大,数据库存储的数据量和承载的业务压力也不断增加,数据库的架构需要随之变化,为上层应用提供稳定和高效的数据服务2、单机架构单机架构为了避免应用服务和数据库服务对资源的竞争,单机架构也从早期的单主机模......
  • 架构师进阶与新赛道的选择都要回到Framework里来
    我们总是在为了生活奔波,渐渐的迷失在了其中,但我们必须清楚的知道自己从哪里来,才能知道未来要到哪里去。自从毕业以后,我进入了一家小公司,开始了我Android开发之旅。在工作的几年中,虽然技术栈没有太大的变化,但我的工作重心主要集中在增删查改等低级工作上,而且并发量和数据量都非常低......
  • 浅述边缘计算场景下的云边端协同融合架构的应用场景示例
    云计算正在向一种更加全局化的分布式节点组合形态进阶,而边缘计算是云计算能力向边缘侧分布式拓展的新触角。随着城市建设进程加快,海量设备产生的数据,若上传到云端进行处理,会对云端造成巨大压力。如果利用边缘计算来让云端的能力下沉,则可以很好地解决海量数据的处理问题,让云端的数据......
  • 【金TECH频道】企业架构转型组合拳来袭,助力金融机构一臂之力
    当前,数字化转型已经成为时代共性课题在政策和技术的双重指引下金融机构逐渐走向差异化竞争的格局面对转型阵痛以契合、明晰的战略规划及企业架构调整来辅助业务变革成为助力企业数字化转型的有效路径金融机构也纷纷开始探索企业架构转型的新思路、新方法 但由于认知和经验的不......
  • Go语言百万高薪开发架构师一线大牛亲授+企业项目实战+云原生架构核心
    Go语言百万高薪开发架构师一线大牛亲授+企业项目实战+云原生架构核心 第1章云原生架构1.1云计算的历史1.1.3容器的横空出世和容器编排大战上一次我们提到了PaaS,PaaS的开源产品Docker对云计算领域产生了深远的影响,从虚拟机到容器,整个云计算市场发生了一次重大变革。容......