写点什么

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

评论

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

Java SE 19 虚拟线程

钟奕礼

java;

有什么好用的低代码快速开发平台?

优秀

低代码开发平台

想要优化K8S集群管理?Cluster API帮你忙 | K8S Internals系列第5期

BoCloud博云

云原生 容器云 K8s 多集群管理

Python 中的 super 函数怎么学,怎么解?

梦想橡皮擦

Python 9月月更

中秋发祝福?一套程序让你成为【相亲相爱一家人】群里最靓的仔

梦想橡皮擦

Python 9月月更

前端培训学习有哪值得注意的呢?

小谷哥

Vue3入门指北(一)组件API风格

Augus

Vue 9月月更

本周三,全球C++大会8大主题、近40场专题演讲盛大开启,龙蜥2位技术专家参加

OpenAnolis小助手

工具链 ebpf 2022 龙蜥 C++及系统软件技术大会

北京Java培训收费标准是什么

小谷哥

【软通动力鸿湖万联扬帆系列“竞”开发板试用体验】折腾”竞“开发板

白晓明

OpenHarmony "竞"开发板体验

从0到1上手阿里云服务器ECS(一)

六月的雨在InfoQ

云服务器 ECS 9月月更 LAMP 部署Mysql

Hackathon idea 清单出炉,总有一款适合你

PingCAP

TiDB

用区块链思维让可信数据流动起来

旺链科技

区块链 产业区块链 供应链金融 企业号九月金秋榜

前端培训学习哪种方式比较靠谱

小谷哥

因为K8s,阿鹏遇到了人生中第一次职业危机....

嘉为蓝鲸

#运维

5 行 Python 爬虫代码,就能采集每日资讯@_@

梦想橡皮擦

9月月更

Vue入门指北——渲染函数和jsx

Augus

Vue 9月月更

ESP32-C3 学习测试 蓝牙 篇(一、认识 ESP-IDF 的蓝牙框架、简单的了解蓝牙协议栈)

矜辰所致

蓝牙 ESP32-C3 9月月更 ESP-IDF

跨模态学习能力再升级,EasyNLP电商文图检索效果刷新SOTA

阿里云大数据AI技术

深度学习 PyTorch 图文检索 企业号九月金秋榜

BGP劫持原理及如何防御

郑州埃文科技

网络安全 BGP 安全防御

4步成功将三方库——speexdsp移植到OpenHarmony

OpenHarmony开发者

OpenHarmony

大数据培训和大学相关专业哪个更好

小谷哥

Vue入门指北——css中的js变量

Augus

Vue 9月月更

这篇文章教会我用 Python 读取 PDF 文件【收藏即会】

梦想橡皮擦

9月月更

java培训软件开发技术收费标准

小谷哥

你看过字符画吗?用 Python 自己实现一个吧

梦想橡皮擦

9月月更

都 2022 年了,你真的会用 Python 的 pip 吗?

梦想橡皮擦

9月月更

Python 几行代码实现一键抠图,收费应用 BYEBYE

梦想橡皮擦

9月月更

火速收藏!HUAWEI神级 SpringBoot 进阶笔记,竟一夜上到Github榜一

Geek_0c76c3

Java 数据库 开源 程序员 架构

基于 RocketMQ 的 MQTT 服务架构在小米的实践

阿里巴巴云原生

阿里云 RocketMQ 云原生 mqtt

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