For that reason, we’ve introduced a couple of additional abstractions that help us understand the broader software ecosystem: But as our catalog of individual components has grown in size, those components have become increasingly hard to understand, review, and put in relation to each other. The ability to map and track software components in a catalog has been immensely valuable to us - it has allowed us to better understand the scale and development of our software. Resources: Infrastructure needed to operate a component at runtime (e.g., databases, virtual machines, storage buckets)įigure 1.Components: Individual pieces of software (e.g., a backend service, website, data pipeline, library).APIs: The boundaries between different components, defining the interface between those components.Our software is modeled using three core entities: The Spotify System Model presents a set of core entities and abstractions we can use to synthesize data about our software health, ownership, and dependencies.Īt Spotify, we believe that a solid shared understanding and terminology around software and resources empower communication and collaboration, which is essential to success for a company at our scale. To be able to reason and communicate around our complex software and the catalog, we’ve introduced a shared language and concept definitions - a system model. We need tools to look at our architecture at different abstraction levels in order to make good design decisions and evolve our software in a sustainable way.Īs part of our solution, we leverage a standardized software metadata model to create a common language for communicating software architecture. While capturing all of our software in one large diagram is technically possible, it would be very hard to understand and navigate. At Spotify, we have an incredibly complex network of thousands of interlinked software systems owned by hundreds of teams, so having a simple way to visualize these connections is essential. TL DR Architectural diagrams are the bread and butter of software design and a foundational tool for communication and collaboration on software development.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |