写点什么

Spotify 如何可视化系统架构图

  • 2022-08-07
  • 本文字数:1178 字

    阅读完需:约 4 分钟

Spotify如何可视化系统架构图

Spotify 的工程师最近分享了他们在公司内部是如何标准化架构图的。他们定义了一种叫作Spotify软件模型的标准系统模型,并采用C4模型来可视化它。这一组合创造了一种可在整个组织中使用的公共语言,有助于沟通、辅助决策,并为 Spotify 的软件开发提供支持。


Spotify 高级工程师 Renato Kalman 和工程师 Johan Wallin 解释了创建这个框架的动机:


架构图是软件设计的基本要素,也是软件开发中沟通和协作的基本工具。在 Spotify,我们拥有一个非常复杂的应用程序网络,数百个团队开发的数千个相互关联的软件系统组成了这个复杂的网络,所以我们需要一种简单的方法来可视化这些复杂的连接。从技术上说,我们可能可以用一个大型的图表来捕获所有的系统,但它会非常难以理解和查看。为了做出好的设计决策,并以可持续的方式开发我们的软件,我们需要一些可以在不同的抽象级别上观察架构的工具。


Spotify 的工程师将软件组件的元数据保存在一个软件目录中。为了支持标准的架构图,他们创建了 Spotify 系统模型,它包含了一组核心实体和抽象,Spotify 工程师可以使用这些实体和抽象来合成有关软件健康状况、所有权和依赖关系的数据。Kalman 和 Wallin 说:“我们相信,一门有关软件和资源的公共语言有助于促进沟通和协作,这对于我们这种规模的公司取得成功至关重要。”


C4 模型是一种轻量级图形符号技术,用于建模软件系统的架构,由 Simon Brown 创建。它将系统分解为容器和组件。在 Spotify,工程师们采用了 C4 模型符号及其最佳实践。不过,他们用 Spotify 系统模型取代了上下文、容器和组件的抽象层。



C4 模型,来源:https://c4model.com/


Spotify 使用Backstage存储软件目录元数据。Backstage 是一个开源平台,用于构建开发者门户网站。这个项目由 Spotify 推动,是 CNCF 的一个孵化器项目。他们利用 Backstage 的可扩展性创建了一个叫作 Architecture 的插件,这个插件可以根据存储在 Backstage 中的 Spotify 系统模型元数据生成 C4 图表。Kalman 和 Wallin 说:“在 Backstage 中存储系统模型元数据对于组件发现、理解软件组件之间的生命周期、所有权和关系,以及自动生成软件可视化图都非常有帮助。”


Spotify 系统模型由几个核心实体组成,包括表示软件组件之间边界的 API、表示单个软件块的组件,以及运行时操作组件所需的基础设施资源。


核心实体之间的关系,来源:https://engineering.atspotify.com/2022/07/software-visualization-challenge-accepted/


随着目录数量的增长,这些组件变得越来越难以理解、审查和相互关联。因此,他们引入了额外的抽象,有助于理解更广泛的软件生态系统。系统是协作执行某些功能的实体的集合,而领域是与部分业务相关的实体和系统的集合。



领域、系统与核心实体的关系,来源:https://engineering.atspotify.com/2022/07/software-visualization-challenge-accepted


原文链接

The Spotify System Model: Automated Architecture Visualization at Spotify


2022-08-07 08:007261

评论

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

Java Core「3」volatile 关键字

Samson

学习笔记 5月月更 Java core

一起来体验小程序应用的独特魅力

Geek_99967b

SaaS应用 finclip 小程序容器

亚马逊AWS特约评委揭秘FinClip黑客松获胜秘诀

Geek_99967b

SaaS 小程序容器 小程序开发 小程序组件

LabVIEW仪器控制:智能直流电源(科睿源KA3003)

不脱发的程序猿

串口通信 工业自动化 直流电源控制软件 LabVIEW仪器控制

我的编程学习经历

留乘船

学习

天翼云4.0创新成果发布!科技创新赋能安全普惠

天翼云开发者社区

抖音日均拦截93%诈骗行为:如何打击互联网诈骗行为

石头IT视角

读万卷书为何无用?

大数据梦想家

程序员 个人成长 读书感悟

过去一年对我帮助最大的三本书

大数据梦想家

个人成长 程序人生 读书总结

大厂员工过劳死,打工人该如何自救?

大数据梦想家

大数据 程序员 程序人生

第一梯队,增速第一

天翼云开发者社区

分布式协议-Paxos

白裤

PAXOS paxos协议 Basic paxos 5月月更

2022 携程提前批大数据一二(oc) 面经

大数据梦想家

大数据 面经分享

LabVIEW仪器控制:智能显示屏(数码管显示屏)

不脱发的程序猿

串口通信 工业自动化 LabVIEW仪器控制 数码管显示屏软件 数码管显示屏

融云漫话:没有一个人躲得过“视频会议”

融云 RongCloud

天翼云成为“云优化能力提升计划”首批成员单位!

天翼云开发者社区

模板化的封装,降低业务代码开发

Java 架构 业务

Flutter的特别之处

Geek_99967b

SaaS 小程序开发 小程序组件

在黑客马拉松中有什么样的收获?

Geek_99967b

SaaS 黑客松 小程序组件

大数据开发面试之26个Spark高频考点

大数据梦想家

大数据 spark 八股文

在线HTML转YAML工具

入门小站

工具

NFT DeFi基础设施AFKDAO 完成300万美元融资 Hoo Labs等参投

区块链前沿News

Hoo AFKDAO

如何以极客的方式探索小程序容器技术

Geek_99967b

SaaS应用 小程序转app 跨端运行

在线火星文转简体中文工具

入门小站

工具

大厂裁员登上热搜,谈谈我的3点认知

大数据梦想家

大数据 个人成长 程序人生 裁员

天翼云通过DCMM 4级认证

天翼云开发者社区

Kafka 核心知识点灵魂 16 问

大数据梦想家

大数据 kafka 八股文

浅析大模型在自然语言处理方面的应用

算AI

人工智能 机器学习 产品 算法 5月月更

【变量规则,HTML 转义,非法导入名称】flask框架总结(三)

恒山其若陋兮

5月月更

微幕小程序,给市场一个新的想象空间

Geek_99967b

小程序容器 小程序开发

在KVM中运行苹果操作系统

lyan

Spotify如何可视化系统架构图_架构_Eran Stiller_InfoQ精选文章