QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

评论

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

重读vue2.0风格指南,我整理了这些关键规则

前端有的玩

Java Vue 代码规范

探索无限潜能,英特尔神经拟态计算除了有“嗅觉”还能有“触觉”

最新动态

解决方案|智能消防预警系统突破高层楼房限制

华为云开发者联盟

AI 物联网 边缘计算 华为云

第六期总结

GAC·DU

GitHub Actions和mp-ci助力微信小程序持续集成

neo

微信小程序 taro GitHub CI/CD

优傲机器人以人机协作助力中国“智能制造”落地

Geek_116789

API接口管理平台YAPI的搭建

Man

DevOps APi设计 YAPI

腾讯面了五轮,面委挂了,挂的原因让大家唏嘘...

程序员生活志

腾讯 面试

数据分析师完整的指标体系构建 (干货)

博文视点Broadview

数据挖掘 读书笔记 数据分析 数据 求职

有趣的条漫版 HashMap,25岁大爷都能看懂

古时的风筝

hashmap

计算机网络基础(四)---网络层-ARP协议与RARP协议

书旅

laravel 计算机网络 网络协议 计算机基础 网络层

知乎,挣钱?果然有长尾效应

非著名程序员

程序员 副业 副业赚钱 知乎 好物推荐

如何帮助技术员工高效成长?这几家企业的做法值得借鉴

极客时间企业版

研发管理 研发团队培训

[架构师训练营] Week03 - 学习总结

谭方敏

架构师训练营week06 学习总结

GunShotPanda

我从LongAdder中窥探到了高并发的秘籍,上面只写了两个字...

why技术

jdk 高并发 LongAdder

linux上强大的字符串匹配工具详解-grep

X先生

Shell grep

第六期作业

GAC·DU

如何做一次完美的 ABTest?

vivo互联网技术

数据分析 AB testing实战

前端杂记-回调地狱

阡陌r

JavaScript 回调地狱

有了“质量墙”,程序员再也没有秃头的烦恼

华为云开发者联盟

程序员 软件 代码审查 项目 代码

猿灯塔:spring Boot Starter开发及源码刨析(七)

猿灯塔

变性手术后,产品总监和当当网打起了官司

赵新龙

法律 判决书 案例

技术科普丨服务发现和负载均衡的来龙去脉

华为云开发者联盟

负载均衡 微服务 开发者工具 服务端 服务

小白如何学习操作系统?

苹果看辽宁体育

操作系统

架构师训练营week06 作业

GunShotPanda

简单的了解一下K8S,并搭建自己的集群

leonsh

Kubernetes 微服务

Java8——Stream流

Java旅途

Java HashMap 的那么多为什么

多选参数

Java Java源码

一文快速掌握华为云IPv6基础知识及使用指南

华为云开发者联盟

物联网中台 物联网 网络 华为云

信创舆情一线--十五部门印发指导意见进一步促进服务型制造发展

统小信uos

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