Ecosystem modeling using the Software Catalog
The fundamental unit within the catalog is an entity which represents some piece of your organization’s software ecosystem. Entities can be any software type as well as broader concepts such as systems, domains, and even, users and groups. All entities share a common overall data structure, but each kind of entity may have a different schema, semantics, or relationships to others.
Software in the Backstage Software Catalog is often modeled in three different entities:
- Components are individual pieces of software
- APIs are the boundaries between different components
- Resources are physical or virtual infrastructure needed to operate a component
It could become difficult to keep track of the relationships between various entities as a software catalog scales. Ecosystem modeling goes a step further by grouping these entities according to the following concepts:
- Systems are a collection of entities that cooperate to perform some function
- Domains relate entities and systems to part of the business
This modeling concept forms an abstraction level (systems) that allows a consumer to better grasp how a software ecosystem works without having to know all the implementation details. When presented with a group of systems that share certain characteristics (eg: business purpose), these can be grouped together into Domains.
To summarize, there are:
- Kinds of entities: Domain, System, Component, API, Resources, User, Group
- Types of entities: Service, Website, Library, OpenAPI, GraphQL etc.
- Relationships of entities: ownedBy, providesApi, memberOf, dependencyOf
This model is not set in stone. It can be reworked and extended to fit your organization, just like custom resource definitions in Kubernetes. For example, in Spotify’s own installation we also model native applications and machine learning models.