写点什么

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:007122

评论

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

谈B端产品技术团队的核心价值(1/100)

hackstoic

团队建设

关于 Apache Flink 和实时计算的最新动态、未来方向,你想知道的都在这里

Apache Flink

大数据 flink 编程 后端 实时计算

政法委多部门联防联控平台,重点人员联防联控平台建设

a13823115807

小声嘟囔:char 和 unsigned char 有那么大差距吗?

BUG侦探

c ios 汇编 ios开发

构建测试的体系化思维(基础篇)

BY林子

软件测试 测试思维

深度揭秘openGauss分区表如何实现大数据量的快速转移

神州新桥正式加入openGauss社区

中国电信发布运营商行业首个云原生关系型数据库TeleDB for openGauss

荣获中国专利金奖!百度连续四年AI专利申请和授予量全国第一

百度大脑

人工智能

性能提升一个数量级,Java大杀器来了!Java冷启动问题的成因与解决

华章IT

Java

MariaDB 到 MySQL 整库迁移(qbit)

qbit

MySQL MariaDB 数据导入 数据导出

程序员非常实用的十个工具网站,值得收藏

AlwaysBeta

openGauss 2021 感谢有您,一起创造了那些灿烂记忆

共话数据库技术与行业数字化融合创新,探讨开源数据库未来发展

技术说|拓维·建木边缘计算平台,让算力先行一步

拓维信息

云计算 大数据 边缘计算

图解MongoDB集群部署原理(3)

Tom弹架构

注意,你所做的A/B实验,可能是错的!

字节跳动数据平台

大数据 测试 AB 增长黑客

盘点2021 | 也无风雨也无晴-转行三年,再度出发

Geek_rze78a

程序员 转行 人生修炼 盘点2021 盘点 2021

鸿鹄元数正式加入openGauss社区

技术干货 | WebRTC 技术解析之 Android VDM

网易云信

Java android 音视频 VDM

邮储银行新一代个人业务核心系统国际汇款业务上线,openGauss核心应用再创新高度

格创东智选择TDengine,实现海量数据实时全生命周期管理

TDengine

数据库 大数据 tdengine

全新缓存组件,大幅加速云上飞桨分布式训练作业

百度开发者中心

飞桨

使用JDBC进行openGauss的读写分离及负载均衡

大数据SQL优化之数据倾斜解决案例全集

安第斯智能云

数据

GBASE南大通用加入openGauss社区

廖湘科:数据库需要充分利用开源和发展开源,广泛吸纳全产业力量

2021年我读过的52本书

SkyFire

c++ 个人成长 总结 读书 计算机

云基华海正式加入openGauss社区

中国联通联合openGauss开源社区启动数据库自主创新

openGauss Summit 2021你想知道的都在这!

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