写点什么

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

评论

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

Django笔记七之ManyToMany和OneToOne介绍

Hunter熊

Python django 多对多 ManyToMany OneToOne

毫末顾维灏:中国首个自动驾驶数据智能体系MANA将以产品服务方式对外合作开放

科技大数据

得物 API一站式协作平台的一些思考

得物技术

API Gateway

CIO成就计划预告·微软韦青:数智时代下的企业数智化战略决策

科创人

Java变量与数据类型

timerring

Java 后端

华为云智能编程进高校,解读行业发展新趋势

科技说

Mac上免费好用的PDF编辑器:Acrobat Reader DC2023

Rose

苹果软件 mac软件下载 pdf阅读 Adobe Acrobat Reader DC

关于mac虚拟机Parallels Desktop 常见问题解答

Rose

pd 18 Parallels Desktop 虚拟机 PD常见问题 Mac虚拟机

码头风云——5G降临

脑极体

5G

毫末发布DriveGPT雪湖·海若!首期智能驾驶能力、驾驶场景识别能力对行业开放

科技大数据

高效复制:在Linux中并发执行相同任务,各自生成日志

小毛驴的烂笔头

一文吃透泛型

程序员大彬

Java java面试

在字节跳动实习后,程序员是这样写简历的

字节跳动技术范儿

字节跳动 实习

青云职上 群英有为 | 助力区域打造人才高地,龙岗双选会顺利举办!

科技说

CIO成就计划第二季第一期 | 活动回顾:基于数字技术重塑流程,驱动业务增长

科创人

软件测试/测试开发丨电商业务的性能测试必备基础知识

测试人

软件测试 Jmeter 性能测试 测试开发

万字详解 | Java 函数式编程

Phoenix

Lambda 函数式 #java

Selenium之POM 设计模式

QE_LAB

selenium 测试技术

MobPush创建推送

MobTech袤博科技

大普微DapuStor完成阿里云PolarDB数据库产品生态集成认证

阿里云数据库开源

国产数据库 polarDB PolarDB-X PolarDB-PG 大普微

例行汇报,看看 FinClip 3月都干了啥

FinClip

技术速递 | 分布式政企应用如何快速实现云原生的微服务架构改造

科技说

AI日课@20230410:大语言模型是对本质知识的无损压缩

无人之路

ChatGPT

上干货!小红书“薯条”业务竞价策略及最优公式详解

小红书技术REDtech

广告 机制策略

FLINK 在蚂蚁大规模金融场景的平台建设

Apache Flink

大数据 flink 实时计算

打卡智能中国(四):向着沙漠,向着沙漠

脑极体

AI 遥感

AI时代下的打工人 | 社区征文

Dec

三周年征文

实力爆表,日日新成为AI领航者

柒号华仔

人工智能 AIGC 日日新 商汤

数据库原理及MySQL应用 | 并发控制

TiAmo

MySQL 数据库 并发控制

数据产品经理的三大底层思维

小鲸数据

数据产品经理 产品思维 数据产品 数据思维 #商业思维

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