AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

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

评论

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

湖南交通学院校友联谊圈小程序设计方案

CC同学

监控系统使用对比 -- 你怎么看当前的主流监控系统

耳东@Erdong

关系型数据库 Prometheus 时序数据库 zabbix 9月日更

一文深度挖掘AI的图像分类能力!

cv君

AI 引航计划

一文教你全方位揭秘Ajax指南

孙叫兽

ajax 大前端 引航计划

使用Python实现视频Logo消除处理

老猿Python

音视频 Moviepy 引航计划 Python编程语言 视频剪辑处理

「Python数据分析系列」1. 数据科学基本介绍

Databri_AI

Python 人工智能 数据分析

WebRTC如何在网页端添加硬水印

liuzhen007

音视频 引航计划 领航计划

Centos7升级Python2到Python3

入门小站

Linux

Dom4j 如何输出 Document 中的内容到文本

HoneyMoose

干货满满!龙蜥社区Meetup走进龙芯圆满结束,5大技术分享精彩回顾

OpenAnolis小助手

Linux 开源社区 国产操作系统 国产芯片

宇宙最强语言PHP的“全栈”框架——Laravel来了!

博文视点Broadview

百度联手清华大学出版社 打造国内首套产教融合人工智能系列教材

百度大脑

架构实战营-模块四-千万级学生管理系统考试试卷存储方案

娜酱

#架构实战营

001云原生之概念

穿过生命散发芬芳

云原生 9月日更

读《第一次把事情做对》有感

孙叫兽

工作 引航计划 第一次 做对

谈 C++17 里的 State 模式之一

hedzr

算法 设计模式 Design Patterns c++17 有限状态机

看动画学算法之:doublyLinkedList

程序那些事

数据结构 算法 看动画学算法 程序那些事

不愧是阿里Springboot项目笔记,在Github上已标星85.4K

Java 程序员 架构 后端 springboot

成本直降50% | 阿里云发布云原生网关,开启下一代网关新进程

阿里巴巴云原生

阿里云 云原生 网关 升级

不吹不黑一份代码即可进Kaggle排行榜!

cv君

AI 引航计划

Java 面试八股文之基础篇(一)

Dobbykim

架构实战营模块9作业

zlz

百度飞桨发布开源生态最新成果:汇聚370万开发者

百度大脑

人工智能

Go 新人学习资料汇总(持续更新)

baiyutang

golang 9月日更

让数据“活”起来 腾讯位置服务数据可视化JS API持续升级

Coffee架构实战 005 千万级学生管理系统的试卷存储方案

咖啡

JVM g1 gc学习笔记一

风翱

GC 9月日更

WebRTC 的本地视频预览播放器

liuzhen007

音视频 引航计划 领航计划

在线GIF图片帧拆分工具

入门小站

工具

用 Go 写的轻量级 OpenLdap 弱密码检测工具

Marionxue

Docker Docker-compose 弱密码 openldap Go 语言

Opus从入门到精通(五)OggOpus封装器全解析

轻口味

音视频 9月日更

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