docs/overview/technical-overview.md
Backstage is an open source framework for building developer portals that was created at Spotify to simplify end-to-end software development. As Spotify grew, their infrastructure became more fragmented and teams couldn't find the APIs they were supposed to use, or who owned a service, or documentation on anything.
Backstage is powered by a centralized software catalog and utilizes an abstraction layer that sits on top of all of your infrastructure and developer tooling, allowing you to manage all of your software, services, tooling, and testing in one place.
Backstage uses a plugin-architecture which allows you to customize the functionality of your Backstage application using a wide variety of available plugins or you can write your own. It also includes automated templates that your teams can use to create new microservices, helping to ensure consistency and adherence to your best practices. Backstage also provides the ability to create, maintain, and find the documentation for all of your software.
Backstage is now a CNCF incubation project.
If you have question or want support, please join our Discord server.
Backstage includes the following set of core features:
Plugins are client side applications which mount themselves on the Backstage UI. They allow you to incorporate a wide variety of infrastructure and software development tools into your Backstage application. Backstage uses a plugin-architecture to provide a consistent user experience, in a single UI, around all of your plugins.
The Backstage architecture supports three types of plugins:
Many of the features available in Backstage are provided by plugins. For example, the Software Catalog is a service backed plugin. When you view the catalog, it retrieves a set of services ("entities") from the Backstage Backend service and renders them in a table in the UI for you.
The system model behind the software catalog is based on entities and it models two main types:
Core Entities include:
Components - Individual pieces of software that can be tracked in source control and can implement APIs for other components to consume.APIs - Implemented by components and form the boundaries between different components. The API can be either public, restricted, or private.Resources - The physical or virtual infrastructure needed to operate a component.Organizational Entities include:
User - A person, such as an employee, contractor, or similar.Group - An organizational entity, such as a team, business unit, and so on.When you have a large catalogue of components, APIs, and resources, it can be difficult to understand how they work together. Ecosystem modeling allows you to organize a large catalog of core entities into:
There are three additional items that can be part of the system model:
Location - A marker that references other places to look for catalog data.Type - It has no set meaning. You can assign your own types and use them as desired.Template - Describes both the parameters that are rendered in the frontend part of the scaffolding wizard, and the steps that are executed when scaffolding that component.The following diagram illustrates an example of ecosystem modeling, and provides sample relationships between a domain, system, core entities, and organization entities.
The following shows an example of viewing all of the components, APIs, and resources that are managed by your group after setting up the relationships to create a group organizational entity.