最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

IKEA 微前端经验谈

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

    阅读完需:约 5 分钟

如今,我们意识到,我们不应该把整个企业放在一个服务里,因此,我们把企业架构分割成较小的服务,即微服务。但是,我们也开始意识到,对于庞大的前端,我们面临着和庞大的后端一样的问题, 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:192348
用户头像

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

关注

评论

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

Go语言入门基础之库源码文件

Damon

6月月更

十分钟带你入门Docker容器引擎

百思不得小赵

云原生 Docker 镜像 6月月更

Java—线程安全II

武师叔

6月月更

InfoQ 极客传媒 15 周年庆征文|手摸手教你在Windows安装Docker,一定要看到最后

迷彩

Docker 架构 运维 6月月更 InfoQ极客传媒15周年庆

大数据培训flink窗口(Windows)的表现形式

@零度

大数据开发

洞见科技荣获「最受投资人欢迎的隐私计算服务企业」奖

洞见科技

隐私计算 数据要素

NFT卡牌盲盒链游系统dapp开发搭建

薇電13242772558

智能合约 NFT

谈谈 JDK 和 SAPMachine 的关系

Jerry Wang

Java jdk jre SAP 6月月更

技术分享| 云服务器的使用-nginx的安装及使用

anyRTC开发者

nginx centos 音视频 服务器

测试基础之:测试覆盖率

甜甜的白桃

软件测试 测试覆盖率 JACOCO 6月月更

莫把暑假插错秧,代码哪有足球香,Alluxio足球青训营在线摇人!

Alluxio

微软 开源 足球 分布式, CCF开源高校行

融云首席科学家任杰:数字游民和意识体,疫情将如何影响人类社会进化

融云 RongCloud

Wallys/Routerboard/DR344/WiFi/AR9344 FCC/CE/IC

wallys-wifi6

AR9344 802.11a

从 keynote 大神到语雀画图大神,她是怎么做到的?

写文档的语雀

编辑器 思维导图 文档管理 企业知识管理

市值严重低估,现金15亿,百世走的路对吗?

科技新知

Vue-10-class的动态绑定

Python研究所

6月月更

洞见科技当选中国信通院隐私计算联盟「副理事长+政务应用工作组组长」单位

洞见科技

隐私计算

数据智能基础设施升级窗口将至?看九章云极 DingoDB 如何击破数据痛点

九章云极DataCanvas

人工智能 数据库 数据 数据智能

天翼云数据中台通过“数字政府智慧中台”评估

Geek_2d6073

一文掌握软件安全必备技术 SAST

SEAL安全

网络安全 软件安全 SAST工具 SAST

开课报名|「Takin开源特训营」第一期来啦!手把手教你搞定全链路压测!

TakinTalks稳定性社区

开源 全链路压测 生产环境全链路压测 安全生产 稳定性保障

谷歌AI人格觉醒“喜提”热搜,我们找清华大佬聊了聊 AI 对话系统的惊人进展

硬科技星球

人工智能 谷歌 图灵测试

得物前端唤端业务场景和技术精讲

得物技术

前端 前端教程 等待唤醒 业务场景 前端工具

千亿参数“一口闷”?大模型训练必备四种策略

OneFlow

人工智能 模型训练 策略

从行业角度看,数仓领域的未来是什么?

字节跳动数据平台

字节跳动 数据仓库 OLAP

java编程培训Mybatis的增删改查与获取参数值

@零度

mybatis JAVA开发

【云计算】云计算平台是什么意思?可以划分为哪三类?

行云管家

云计算 云服务 私有云 云平台 云计算平台

服务网格项目Aeraki Mesh正式进入CNCF沙箱

York

开源 云原生 istio Service Mesh 服务网格 cncf

还不知道npm私服?一篇教会你搭建私服并发布vue3组件库到nexus

Jianmu

ci 前端 npm Vue3 私服

深度合作 | TDengine + 华为云 Stack 强强联合打造高效物联网时序数据处理解决方案

TDengine

数据库 tdengine 时序数据库

二级等保要求几年做一次测评?测评项目有多少项?

行云管家

等级保护 等保测评 二级等保 等保二级

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