We believe that a strong shared understanding and terminology around software and resources leads to a better Portal experience.Documentation Index
Fetch the complete documentation index at: https://backstage.spotify.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Core Entities
We model software in the Portal Software Catalog using these three core entities (further explained below):- Components are individual pieces of software
- APIs are the boundaries between different components
- Resources are physical or virtual infrastructure needed to operate a component
Component
A component is a piece of software, for example a mobile feature, web site, backend service or data pipeline (list not exhaustive). A component can be tracked in source control, or use some existing open source or commercial software. A component can implement APIs for other components to consume. In turn it might consume APIs implemented by other components, or directly depend on components or resources that are attached to it at runtime.API
APIs form an important (maybe the most important) abstraction that allows large software ecosystems to scale. Thus, APIs are a first class citizen in the Portal model and the primary way to discover existing functionality in the ecosystem. APIs are implemented by components and form boundaries between components. They might be defined using an RPC IDL (e.g., Protobuf, GraphQL, …), a data schema (e.g., Avro, TFRecord, …), or as code interfaces. In any case, APIs exposed by components need to be in a known machine-readable format so we can build further tooling and analysis on top. APIs have a visibility: they are either public (making them available for any other component to consume), restricted (only available to an allowlisted set of consumers), or private (only available within their system). As public APIs are going to be the primary way interaction between components, Portal supports documenting, indexing and searching all APIs so we can browse them as developers.Resource
Resources are the infrastructure a component needs to operate at runtime, like BigTable databases, Pub/Sub topics, S3 buckets or CDNs. Modelling them together with components and systems will better allow us to visualize resource footprint, and create tooling around them.Organizational Entities
User
A user describes a person, such as an employee, a contractor, or similar.Group
A group describes an organizational entity, such as for example a team, a business unit, or a loose collection of people in an interest group.Ecosystem Modeling
A large catalogue of components, APIs and resources can be highly granular and hard to understand as a whole. It might thus be convenient to further categorize these entities using the following (optional) concepts:- Systems are a collection of entities that cooperate to perform some function
- Domains relate entities and systems to part of the business