NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

ArkUI,更高效的框架设计

HarmonyOS开发者

HarmonyOS

大数据培训班应该如何学习?

小谷哥

火山引擎DataTester为企业降本增效:1个人也能成为一支A/B实验团队

字节跳动数据平台

大数据 AB testing实战 12 月 PK 榜

流量与技术双重加持,小游戏迎来高速增长周期

FinFish

小游戏 小程序游戏 小程序游戏开发 微信小游戏

手把手教你成为荣耀开发者:如何获取平台帮助及最新通知?

荣耀开发者服务平台

开发者 安卓 平台赋能 数智创新 honor 技术支持

干货|3DMax优化模型的方法有哪些?

Finovy Cloud

云渲染 3DMAX

数据库原理及MySQL应用 | 实体联系模型

TiAmo

数据库 :MySQL 数据库 12月月更

什么是低代码?低代码平台能解决什么样的问题?

优秀

低代码 低代码平台

双旦来临,贾斯特里尼&布鲁克斯红酒为您多添一份情调

联营汇聚

大数据培训机构如何选择?

小谷哥

云原生安全系列3:5个 Kubernetes API 网络安全访问最佳实践

HummerCloud

云原生 k8s 云原生安全 kubernetes 运维

嘉为蓝鲸受邀出席汽车新智造数字行业峰会,助力构建数字时代竞争力!

嘉为蓝鲸

数字时代 自动化运维 嘉为蓝鲸

教你如何轻松搞定云上打印管理

华为云开发者联盟

云计算 华为云 12 月 PK 榜 云打印

培训班出来的前端和自学的优势

小谷哥

贾斯特里尼&布鲁克斯葡萄酒,佳节送礼首选

联营汇聚

TDengine 时序数据库与一汽解放携手,助力商用车智能网联

TDengine

数据库 tdengine 时序数据库

云原生时代的灰度发布有几种“姿势”?

嘉为蓝鲸

灰度发布 自动化运维 嘉为蓝鲸

如何用3D流体实现逼真水流效果?

HMS Core

HMS Core

贾斯特里尼&布鲁克斯葡萄酒,提升用餐仪式感

联营汇聚

带你玩转OpenHarmony AI:基于Seetaface2的人脸识别

OpenHarmony开发者

OpenHarmony openha

贾斯特里尼&布鲁克斯,优质葡萄酒都有甄选法则

联营汇聚

Iceberg 在袋鼠云的探索及实践

袋鼠云数栈

Wallys//AX200NGW,adapter card with one M.2 slot/DR2g41 Linux,WiFi-modules,4-miniPCIE-slot

wallysSK

AX200NGW

培训班学习完后就业前景怎么样

小谷哥

从源码层面深度剖析Spring循环依赖

京东科技开发者

spring 缓存 循环依赖 spring MV @Bean

8000字详解Thread Pool Executor

华为云开发者联盟

Java 开发 华为云 12 月 PK 榜

推荐8个提高工作效率的IntelliJ插件

风铃架构日知录

后端 开发 Java、 intellij java架构师

YonBuilder移动开发平台 AVM框架 数字滚动组件

YonBuilder低代码开发平台

开发者 前端 avm.js AVM

什么是 Redis 持久化,如何理解?

千锋IT教育

Redis 6.0

小游戏未来将在技术侧如何发展

Onegun

小游戏 小游戏开发

彪悍升级|尚硅谷Hive新版视频教程发布

小谷哥

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