【FCon上海】与行业领袖共话AI大模型、数字化风控等前沿技术。 了解详情
写点什么

IKEA 微前端经验谈

  • 2018-08-09
  • 本文字数:1431 字

    阅读完需:约 5 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

如今,我们意识到,我们不应该把整个企业放在一个服务里,因此,我们把企业架构分割成较小的服务,即微服务。但是,我们也开始意识到,对于庞大的前端,我们面临着和庞大的后端一样的问题, Gustaf Nilsson Kotte 在近日接受 Stefan Tilkov 采访时这样解释说。使用微前端架构,把前端分解成较小的部分,使团队可以自主部署,从而实现Web 前端的持续交付。

Kotte 是 Jayway 的 IT 顾问,目前是作为 IKEA 的 Web 架构师,他喜欢把系统垂直分割,由同一个团队构建包含后端和前端的自包含系统。他认为,一个团队包含10 到12 个人时可以运转的比较好,超过那个数,团队就会不那么高效了。他还认为,如果服务小,则团队可以有不只一个服务,但是这会增加架构的压力,因为团队和服务都应该是自治的。

当Tilkov 问,如果有24 个人,他会如何安排。Kotte 不赞成创建一个前端团队和两个后端团队,他指出,后端团队向终端用户交付价值可能会需要前端团队的变更。两个后端团队可能还会增加前端故事队列。他更愿意创建两个独立的团队,每个12 人,每个团队的后端和前端服务都由自己开发,可以按照自己的节奏部署,虽然这会带来一系列你必须处理的新问题,像协作和组件重用。

在Kotte 看来,微服务关乎多样性和异构架构,允许使用不同的技术。他认为,前端也应该如此。前端领域还在发生着重大的变化,他见过一些大型的前端重写项目,并指出,我们往往低估了这些重写的成本。为期2 到4 年的重写周期于业务是不利的,相反,我们应该从一开始就支持多样化的前端技术栈。

不能依赖于单个框架,如 React Vue ,不编写自己的框架,他认为那是个坑,Kotte 发现,要在前端获得我们期望从后端微服务获得的好处,唯一的解决方案是使用某种形式的嵌入机制——一种把一个电子文档包含在另一个文档中的方法。在客户端,其中一个嵌入的例子是image 标签。该标签有一个src 属性,指向一个URL,浏览器在渲染时会使用实际的图片替换那个标签——浏览器把图片文档嵌入到了HTML 文档中。

在服务器端,如果没有HTML,则 Edge Side Includes (ESI)对应 image 标签。它有一个源属性,URL 指向一个必须获取并包含在结果文档中的资源。ESI 是 IKEA 微前端概念中的基础技术。他们有页面和片段的概念,一个团队负责一套页面和片段。页面中可以有指向片段的 ESI,那些 ESI 引用可以跨团队。一个例子是,产品团队有产品缩略图的片段,其他团队可以引用这些产品缩略图,而不用自己创建。

由于页面是由不同团队开发的片段组合而成,可能使用了不同的技术,所以,这些片段需要使用某种技术组合在一起。为了解决这个问题,IKEA 的团队使用了一种名为自包含片段的技术,可以把片段需要的所有东西如 CSS 和 JavaScript 都包含进来。你不必考虑片段的依赖,只需要用一个 ESI 把样式包含进来,一个 ESI 把脚本包含进来,那样应该就可以了。Kotte 指出,这项技术本身有点复杂,但对于使用它的团队而言相当简单。

为了使页面和片段可以协同,他们只需设定几项规则。他们没有试图提前处理任何可能出现的问题,相反,他们有一种可以快速修复问题的通用方法,更看重平均恢复时间,而不是平均故障间隔时间

Kotte 在总结中强调,他介绍的架构并不一定适合所有人。你必须从组织层面考察不同设计的优缺点,找出最佳的解决方案。

要了解更多有关微前端的信息,Kotte 建议阅读他之前写的一篇文章,以及他在Øredev 2018 大会上关于微服务网站的介绍。此外,有一个网站专门介绍微前端

查看英文原文: Experiences Using Micro Frontends at IKEA

2018-08-09 13:192393
用户头像

发布了 1008 篇内容, 共 379.8 次阅读, 收获喜欢 342 次。

关注

评论

发布
暂无评论
发现更多内容

图解堆排序,带你彻底了解清楚!

程序员的时光

Java 面试 算法 排序算法 堆排序

什么是网络单纯型算法

华为云开发者联盟

算法 线性规划 网络单纯型 计算矩阵

IPFS挖矿值得投资吗?IPFS挖矿前景如何?

Jira 要停售本地私有化部署的版本了,这对国产项目管理软件是机会吗?

万事ONES

项目管理 Atlassian Jira ONES

微信架构图

Geek_36d3e5

Vue进阶(幺零六):子组件处理父组件异步值传递给子组件处理

No Silver Bullet

Vue 组件 监听 7月日更

手写QuickSort算法

实力程序员

程序员 算法 成长 C语言

IPFS算力挖矿排行榜,IPFS挖矿公司排行榜

【Flutter 专题】86 初识状态管理 Bloc (一)

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 7月日更

Vue进阶(幺捌伍):动态设置系统字体

No Silver Bullet

Vue 7月日更 字体设置

超视频化到来,你能看见什么?

阿里云视频云

阿里云 计算机视觉 音视频 视频 视频云

Git工作流中常见的三种分支策略:GitFlow、GitHubFlow和GitLabFlow

华为云开发者联盟

git 软件开发 工作流 GitFlow GitHubFlow

图扑软件受邀核电数字化技术大会,技术创新助力行业革新

一只数据鲸鱼

数据可视化 核电 核电站 数字大会

如何打造高效好用的终端?拿来吧你!

童欧巴

大前端 iterm2 Oh My Zsh

带你换个角度理解图卷积网络

华为云开发者联盟

神经网络 卷积神经网络 图神经网络 卷积 图网络

对话系统简介与OPPO小布助手的工程实践

OPPO小布助手

人工智能 对话 智能助手 智能对话

《面试补习》- 你来说说什么是限流?

九灵

Java 面试 分布式 sentinel 限流

北鲲云超算平台解决生物科学领域困境,探索更多可能性

北鲲云

建立对分布式锁的系统认知-从Redlock开始

刘绍

程序员 分布式 分布式锁 RedLock redisson

Go 学习笔记之 方法

架构精进之路

Go 语言 7月日更

对产品来说,颜值、体验是不是很重要?

石云升

用户体验 职场经验 7月日更

官宣!DataPipeline2021数据管理与创新大会将于7.29北京重装开启!

DataPipeline数见科技

大数据 数据融合 数据管理

架构之:REST和RESTful

程序那些事

微服务 软件架构 程序那些事

怎么借助Camtasia给电脑游戏录屏

淋雨

视频剪辑 Camtasia 录屏

ARTS 打卡计划-1

语霖

EasyRecovery深度扫描以恢复桌面遗失数据的方法

淋雨

EasyRecovery 文件恢复 硬盘数据恢复

索信达首席科学家张磊:以AI创新技术满足金融场景的“私人定制”

索信达控股

大数据 数字化转型 银行数字化转型

牙膏踩爆!Intel 5nm工艺曝光:直逼IBM 2nm

E科讯

Serverless 时代下大规模微服务应用运维的最佳实践

阿里巴巴中间件

云计算 Serverless 微服务 云原生 中间件

工业互联网赋能 浪潮云洲助力区域品牌“走出去”

浪潮云

工业互联网

【LeetCode】减小和重新排列数组后的最大元素Java题解

Albert

算法 LeetCode 7月日更

IKEA微前端经验谈_JavaScript_Jan Stenberg_InfoQ精选文章