写点什么

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

评论

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

深度解析京东API接口:jd.item_get如何高效获取商品详情与SKU

代码忍者

京东API接口 京东商品API

原“明星级”自动驾驶创企「云骥智行」入局具身智能赛道,并完成产品首发!

机器人头条

自动驾驶 人形机器人 具身智能

基于STM32F4单片机实现ROS机器人主板

芯动大师

机器人 stm32 ROS

【YashanDB知识库】YMP迁移过程中报错YAS-02143或YAS-02193

YashanDB

数据库 yashandb

Anthropic 工程师关于提示词工程的深入探讨

亚马逊云科技 (Amazon Web Services)

向佐蹭热点卖货大赚,Java之父搞流量一年赚300万,程序员做自媒体的“设计模式”

陆通

合约现货量化一键跟单交易软件开发

V\TG【ch3nguang】

Cyber Triage 3.13 发布,新增功能概览

sysin

数字取证

微店API接口深度解析:如何高效获取商品详情micro.item_get及Python代码示例

代码忍者

微店API

HarmonyOS Next-从应用开发到上架全流程解析

申公豹

harmoyos

【YashanDB知识库】复合索引下in大量参数查询性能慢

YashanDB

数据库 yashandb

汽车服务行业小程序一站式开发解决方案

V\TG【ch3nguang】

探索C#中Task与CancellationTokenSource的协同艺术

代码忍者

阿里巴巴1688 API接口详解:商品详情与关键词搜索商品的高效应用与实现

代码忍者

1688API接口 关键词搜索1688API

淘宝电商运营的小秘籍,看完血赚。

科普小能手

运营 淘宝 技巧 电商 运营干货

不会编程,也可以搭建体育比分直播平台

熊猫比分大卫

体育赛况资讯直播app开发 体育直播网源码 体育动画直播

DeFi即将迎来大爆发:2025年金融变革的背后逻辑与机会

chainwiseweb3

DeFi质押挖矿 DeFi流动性挖矿 defi开发 defi金融开发 去中心化合约开发

以腾讯混元模型为例,在管理平台上集成一个智能助手

为自己带盐

人工智能 后端

《计算机组成及汇编语言原理》阅读笔记:p1-p8

codists

计算机组成及汇编语言原理

直播效果搭建的神兵利器、音乐制作的全能小将----Studio One

阿拉灯神丁

音频 编曲宿主 StudioOne 音乐制作软件 后期混音效果全套插件

金融保险行业数字化创新实践:如何高效落地自主可控的企业级大数据平台

tapdata

大数据平台 数据集成 数据服务 实时数据集成 银行保险业数字化转型

【连载 06】自定义线程池(下)

FunTester

不同价位的LED显示屏,都有什么差别?

Dylan

LED显示屏 全彩LED显示屏 户外LED显示屏 led显示屏厂家

淘宝天猫API接口深度解析:商品详情与关键词搜索商品的高效应用与实战代码

代码忍者

淘宝API接口 淘宝评论API

2024-12-21:从魔法师身上吸取的最大能量。用go语言,在一个神秘的地牢里,有 n 名魔法师排成一列。每位魔法师都有一个能量属性,有的提供正能量,而有的则会消耗你的能量。 你被施加了一种诅咒,吸

福大大架构师每日一题

福大大架构师每日一题

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