前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【微前端架构】AWS 上的微前端架构

【微前端架构】AWS 上的微前端架构

作者头像
架构师研究会
发布于 2022-03-08 08:40:34
发布于 2022-03-08 08:40:34
2K00
代码可运行
举报
文章被收录于专栏:超级架构师超级架构师
运行总次数:0
代码可运行

微服务架构的特点是独立服务,这些服务专注于特定的业务功能,并由小型、自包含的团队维护。微服务架构经常用于在 AWS 上开发的 Web 应用程序,这是有充分理由的。它们提供了许多众所周知的好处,例如开发敏捷性、技术自由、有针对性的部署等等。尽管微服务很受欢迎,但许多前端应用程序仍然以单体风格构建。例如,他们有一个与所有后端微服务交互的大型代码库,并由一大群开发人员维护。

图 1. 带有单体前端的微服务后端

什么是微前端?

微前端架构将微服务开发原则引入前端应用程序。在微前端架构中,开发团队独立构建和部署“子”前端应用程序。这些应用程序由“父”前端应用程序组合而成,该前端应用程序充当容器来检索、显示和集成各种子应用程序。在此父/子模型中,用户与看似单个应用程序的交互。实际上,他们正在与由不同团队发布的多个独立应用程序进行交互。

图 2. 带有微前端的微服务后端

微前端的好处

与单体前端相比,微前端具有以下优势:

  • 独立工件:微服务开发的核心原则是工件可以独立部署,这对于微前端仍然适用。在微前端架构中,团队应该能够独立部署他们的前端应用程序,而对其他服务的影响最小。这些更改将反映在父应用程序中。
  • 自治团队:每个团队都是各自领域的专家。例如,计费服务团队成员具有专业知识。这包括与计费服务相关的数据模型、业务需求、API 调用和用户交互。与规模更大、专业性较低的团队相比,这些知识使团队能够更快地开发计费前端。
  • 灵活的技术选择:自治允许每个团队做出独立于其他团队的技术选择。例如,计费服务团队可以使用 Vue.js 开发他们的微前端,而配置文件服务团队可以使用 Angular 开发他们的前端。
  • 可扩展的开发:微前端开发团队更小,能够在不干扰其他团队的情况下进行操作。这使我们能够通过组建新团队以通过子应用程序提供额外的前端功能来快速扩展开发。
  • 更容易维护:保持前端存储库小而专业,可以更容易地理解它们,这简化了长期维护和测试。例如,如果您想更改单体前端的交互,则必须在大型代码库的上下文中隔离功能的位置和依赖关系。在处理与微前端相关的较小代码库时,这种类型的操作会大大简化。

微前端挑战

相反,微前端提出了以下挑战:

  • 父/子集成:微前端引入了确保父应用程序以与单体应用程序相同的一致性和性能显示子应用程序的任务。这一点将在下一节中进一步讨论。
  • 运营开销:微前端应用程序不是管理单个前端应用程序,而是涉及为所有团队创建和管理单独的基础架构。
  • 一致的用户体验:为了保持一致的用户体验,子应用程序必须使用相同的 UI 组件、CSS 库、交互、错误处理等。对于处于开发生命周期不同阶段的子应用程序,保持用户体验的一致性可能很困难。

构建微前端

微前端架构模式最困难的挑战是将子应用程序与父应用程序集成。优先考虑用户体验对于任何前端应用程序都至关重要。在微前端的上下文中,这意味着确保用户可以在父应用程序中从一个子应用程序无缝导航到另一个子应用程序。我们希望避免破坏性行为,例如页面刷新或多次登录。在最基本的定义中,父/子集成涉及父应用程序在加载父应用程序时动态检索和呈现子应用程序。渲染子应用程序取决于子应用程序的构建方式,这可以通过多种方式完成。两种最流行的父/子集成方法是:

将每个子应用程序构建为 Web 组件。 将每个子应用程序作为独立模块导入。这些模块要么声明一个函数来呈现自身,要么由父应用程序动态导入(例如使用模块联合)。 将子应用注册为 Web 组件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<html>
    <head>
        <script src="https://shipping.example.com/shipping-service.js"></script>
        <script src="https://profile.example.com/profile-service.js"></script>
        <script src="https://billing.example.com/billing-service.js"></script>
        <title>Parent Application</title>
    </head>
    <body>
        <shipping-service />
        <profile-service />
        <billing-service />
    </body>
</html>

将子应用注册为模块:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<html>
    <head>
        <script src="https://shipping.example.com/shipping-service.js"></script>
        <script src="https://profile.example.com/profile-service.js"></script>
        <script src="https://billing.example.com/billing-service.js"></script>
     <title>Parent Application</title>
    </head>
    <body>
    </body>
    <script>
        // Load and render the child applications form their JS bundles.
    </script>
</html>

下图显示了一个基于 AWS 构建的示例微前端架构。

Figure 3. Micro-frontend architecture on AWS

在此示例中,每个服务团队都在运行一个单独的、相同的堆栈来构建他们的应用程序。他们使用 AWS 开发人员工具并使用 Amazon CloudFront 将应用程序部署到 Amazon Simple Storage Service (S3)。CI/CD 管道使用共享组件,例如 CSS 库、API 包装器或存储在 AWS CodeArtifact 中的自定义模块。这有助于提高父应用程序和子应用程序之间的一致性。

当您检索父应用程序时,它应该会提示您登录身份提供程序并检索 JWT。在此示例中,身份提供商是 Amazon Cognito 用户池。成功登录后,父应用程序从 CloudFront 检索子应用程序并将它们呈现在父应用程序中。或者,当您导航到特定路线时,父应用程序可以选择按需呈现子应用程序。子应用程序不应要求您再次登录到 Amazon Cognito 用户池。应将它们配置为使用父应用程序获取的 JWT,或者从 Amazon Cognito 静默检索新的 JWT。

结论

微前端架构为前端应用程序引入了微服务开发的许多熟悉的好处。微前端架构还允许您管理小型独立组件,从而简化构建复杂前端应用程序的过程。

本文

https://jiagoushi.pro/micro-frontend-architectures-aws

讨论:知识星球【首席架构师圈】或者加微信小号【cea_csa_cto】或者加QQ群【792862318】

公众号

【jiagoushipro】【超级架构师】精彩图文详解架构方法论,架构实践,技术原理,技术趋势。我们在等你,赶快扫描关注吧。

微信小号

【cea_csa_cto】50000人社区,讨论:企业架构,云计算,大数据,数据科学,物联网,人工智能,安全,全栈开发,DevOps,数字化.

QQ群

【792862318】深度交流企业架构,业务架构,应用架构,数据架构,技术架构,集成架构,安全架构。以及大数据,云计算,物联网,人工智能等各种新兴技术。加QQ群,有珍贵的报告和干货资料分享。

视频号

【超级架构师】1分钟快速了解架构相关的基本概念,模型,方法,经验。每天1分钟,架构心中熟。

知识星球

向大咖提问,近距离接触,或者获得私密资料分享。

喜马拉雅

路上或者车上了解最新黑科技资讯,架构心得。

【智能时刻,架构君和你聊黑科技】

知识星球

认识更多朋友,职场和技术闲聊。

知识星球【职场和技术】

微博

【智能时刻】

智能时刻

哔哩哔哩

【超级架构师】

抖音

【cea_cio】超级架构师

快手

【cea_cio_cto】超级架构师

小红书

【cea_csa_cto】超级架构师

谢谢大家关注,转发,点赞和点在看。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-02-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 首席架构师智库 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【微前端】微前端——功能团队中缺失的一块拼图
在任何合法的前端开发团队中,提高可扩展性和敏捷性很少会成为头等大事。在处理大型、复杂的产品时,如何确保快速、频繁地交付同时包含后端和前端的功能?像后端那样将前端单体分解成许多更小的部分似乎是答案。如果执行得当,微前端可以提高团队的有效性和效率。就是这样。 微前端背后的想法是将网站或 Web 应用程序视为由独立团队拥有的功能的组合。每个团队都有自己关心和擅长的不同业务领域或任务。团队是跨职能的,从数据库到用户界面,端到端地开发其功能。 将较大的问题分解为较小的问题以提高敏捷性、可重用性和可扩展性一直是 IT
架构师研究会
2022/03/08
9690
微前端架构初探以及我的前端技术盘点
最近几年微前端一直是前端界的热门议题, 它类似于微服务架构, 主要面向于浏览器端,能将一个复杂而庞大的单体应用拆分为多个功能模块清晰且独立的子应用,且共同服于务同一个主应用。各个子应用可以独立运行、独立开发和独立部署。
徐小夕
2020/04/07
1.1K0
微前端架构初探以及我的前端技术盘点
微前端架构:使用不同框架构建可扩展的大型应用
随着前端项目的不断膨胀,传统的单体应用架构逐渐暴露出越来越多的问题,比如开发周期长、维护困难等。为了解决这些问题,微前端架构应运而生,它借鉴了后端微服务的思想,将大型前端应用拆分成多个小型、可独立开发和部署的模块。这种架构模式不仅可以提高开发效率,还能更好地适应快速变化的业务需求。本文将通过实战的方式,介绍如何使用流行的微前端框架Qiankun构建一个简单的微前端应用,其中包括同时使用Vue和React作为子应用的技术栈。
井九
2024/10/12
1400
微前端架构:使用不同框架构建可扩展的大型应用
一文读懂微前端架构
前端开发在程序猿中无疑是一个比较苦逼的存在,作为一个前端开发,你必须要掌握Javascript,HTML,CSS这三大基础。Javascript作为网络时代最为重要的开发语言,由于其设计上的限制,一直在演进,经历了ES3,ES5,ES6(ECMAScript 2015)... ... 而简单的CSS也无法完成你复杂的需求,你需要Less/Sass/Sytlus来增强你的CSS的功能。这些还远远只是一小部分,你还需要了解:
yuanyi928
2021/05/27
3K0
一文读懂微前端架构
微前端架构在现代应用开发中具有的价值
随着互联网应用的不断发展和迭代,传统的单体应用架构已经逐渐无法满足现代应用的需求。为了更好地适应快速变化的市场和业务需求,微服务和微前端架构成为了近年来的热门话题。其中,微前端架构作为前端开发的新兴架构模式,不仅可以提高开发效率、迭代速度和用户体验,还可以提高团队的协作效率和代码复用率,具有很高的业务价值。
用户10245619
2023/04/06
3230
深入探讨微前端架构:挑战、解决方案与实际应用
随着前端技术的不断发展,单体应用(Monolithic Architecture)逐渐暴露出越来越多的痛点,尤其是在大型应用的开发和维护过程中。微前端(Micro Frontend)作为一种新的架构模式,正逐步成为解决这些问题的有效方案。本文将介绍微前端的概念、优势,并通过一个实际开发中的应用案例,展示如何在前端项目中实现微前端。
一键难忘
2024/12/28
4290
微前端架构的设计与实践:挑战、解决方案与优化策略
随着前端开发技术的不断进步,单体前端应用逐渐暴露出许多问题:代码庞大、模块耦合、发布流程复杂等,这些问题随着团队规模的扩展愈发严重。为了解决这些问题,微前端架构应运而生。微前端是从微服务架构理念中延伸出来的,它通过将一个大的前端应用拆分成多个小的、独立的应用,使得每个小应用可以独立开发、部署和维护,从而提升开发效率和应用的可维护性。
一键难忘
2024/12/25
2300
微前端学习笔记(1):微前端总体架构概述,从微服务发微
从最初的CS架构,如MFC Java Swing 等,到BS架构,JSP PHP,再到前端后端分离,前端从jquery  GWT-Ext  到 Handlebars ,再到angularJS/Vue/React,反观java 世界,学好 Spring MyBatis ,一路无忧,哎……
周陆军博客
2024/06/06
3240
【BPM架构】BPM 平台:独立还是微服务实现
介绍 BPM 是一个描述、建模和管理复杂业务流程的概念。使用 BPMN,我们可以轻松定义流程中的顺序,编排多个任务、决策和事件。有许多 IT 平台可以将 BPMN 设计变成工作代码。事实证明,协调服务、系统和业务任务的 BPM 模型和支持 IT 平台是实现业务流程的可靠来源。 那就是微服务出现的时候。也就是说,松散耦合的、基于事件的服务,旨在实现特定的业务功能,通过事件进行通信,并实现编排消息传递模型。微服务是否意味着 BPM 平台的终结?或者恰恰相反——像 Camunda 这样的 BPM 平台能否在复
架构师研究会
2022/04/06
1.5K0
【BPM架构】BPM 平台:独立还是微服务实现
【微服务架构】什么是微服务? — 全面了解微服务架构
What is Microservices — Edureka 您有没有想过,什么是微服务以及扩展行业如何与它们集成,同时构建应用程序以满足客户的期望? 要了解什么是微服务,您必须了解如何将单体应用程序分解为独立打包和部署的小型微型应用程序。本文将让您清楚了解开发人员如何使用微服务根据需要扩展其应用程序。 在本文中,您将了解以下内容: 为什么是微服务? 什么是微服务? 微服务架构的特点 微服务架构的优势 设计微服务的最佳实践 使用微服务的公司 为什么是微服务? 现在,在我告诉你微服务之前,让我们看看在
架构师研究会
2022/04/24
2.5K0
【微服务架构】什么是微服务? — 全面了解微服务架构
微前端架构实战
之前比较多的处理方式是npm包形式抽离和引用,比如多个应用项目之间,可能有某业务逻辑模块或者其他是可复用的,便抽离出来以npm包的形式进行管理和使用。但这样却带来了以下几个问题:
西岭老湿
2021/04/25
4K0
微前端架构实战
【微服务架构】一文读懂单片到微服务架构的模式和最佳实践
在本文中,我们将学习如何使用设计模式、原则和最佳实践来设计微服务架构。我们将使用正确的架构设计模式和技术。 在本文结束时,您将了解如何在微服务分布式架构上设计系统以实现高可用性、高可扩展性、低延迟和对网络故障的弹性,从而处理数百万个请求。 Event-Driven Architecture 本课程将是软件架构设计的旅程,逐步将架构单片演变为事件驱动的微服务。 我们将从设计处理少量请求的电子商务整体架构开始软件架构的基础知识。 Journey of Design Architectures 之后逐步演
架构师研究会
2022/03/30
9130
【架构拾集】 微前端:微应用化
微应用化与微前端架构相当的类似,它们在开发时都是独立应用,在构建时又可以按照需求单独加载。如果以微前端的单独开发、单独部署、运行时聚合的基本思想来看,微应用化就是微前端的一种实践。只是使用微应用化意味着:我们只能使用唯一的一种前端框架。如果从框架不限的角度来定义,怕是离微前端有些远,不过大团队怕是不会想同时支持多个前端框架。
不知雨
2018/08/21
6970
下一代架构设计:云原生、容器和微前端的综合应用
在当今飞速发展的数字时代,企业和开发者不断寻求创新,以满足用户不断增长的需求。为了构建高效、灵活且可扩展的应用程序,架构设计的演变至关重要。本文将探讨下一代架构设计的关键元素,包括云原生、容器化和微前端,并展示如何将它们综合应用以满足现代应用的需求。
IT_陈寒
2023/12/13
3260
下一代架构设计:云原生、容器和微前端的综合应用
有赞美业微前端的落地总结
想要回答这个问题直接给一个定义其实没那么难,但是没接触过的同学未必理解。所以需要先介绍一下背景,再解释会更容易明白。
coder_koala
2021/11/10
7690
有赞美业微前端的落地总结
架构的未来:微前端与微服务的融合
在当今快速发展的软件开发领域,架构设计一直是一个不断演化的领域。随着技术的不断发展,我们看到了微服务架构和微前端架构这两种新兴的架构风格的崭露头角。本文将探讨它们之间的关系,以及如何将它们融合在一起,为未来的应用程序架构提供更大的灵活性和可扩展性。
IT_陈寒
2023/12/13
5110
架构的未来:微前端与微服务的融合
微前端的未来
从 2021 年年底到 2022 年最初的几周里,我花了一些时间来研究微前端到目前为止的发展情况。
深度学习与Python
2022/06/13
4500
微前端的未来
【微服务架构】微服务设计模式
这是微服务架构系列文章的第 3 篇 高可用性、可扩展性、故障恢复能力和性能是微服务的特征。您可以使用微服务架构模式来构建微服务应用程序,从而降低微服务失败的风险。 模式分为三层: 应用模式 应用程序模式解决了开发人员面临的问题,例如数据分解、数据维护、测试、用户界面和一些可观察性模式。 让我们回顾一下这些应用程序模式的基础知识。 分解模式 选择如何将单体系统分解为服务 按业务能力分解——服务是围绕业务能力组织的。 按子域分解——服务是围绕域驱动设计的子域组织的。 数据模式 数据一致性——每个
架构师研究会
2022/04/18
8270
【微服务架构】微服务设计模式
【前端架构】从 JQuery 到 React、Vue、Angular——前端框架的演变及其差异
这是前端面试中必然会问到的问题 前端开发多年来一直在不断改进。从简单的静态页面到现在复杂的单页面应用程序,我们的工具变得越来越强大。现在,三大前端框架统治着前端开发,那么你知道这三个框架的区别吗?为什么一直保持着三足鼎立的局面,而不是某种框架来统一其他人?让我们在本文中讨论这些问题。 前端开发的演变 PHP && JSP 早些年,网页的动态内容是在服务器端渲染的,主要使用PHP、JSP等技术。 此时,服务器通过模板引擎填充数据,然后生成HTML,并将HTML返回给浏览器进行渲染。 <!DOCTYPE
架构师研究会
2022/03/24
2.3K0
《前端架构:从入门到微前端》目录
本书是一本围绕前端架构的实施手册,从基础的架构规范,到如何设计前端架构,再到采用微前端架构拆分复杂的前端应用。本书通过系统地介绍前端架构世界的方方面面,来帮助前端工程师更好地进行系统设计。
Phodal
2019/06/19
2.9K0
推荐阅读
相关推荐
【微前端】微前端——功能团队中缺失的一块拼图
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验