A component is anything that has a run-time state and some relation with other components. Some component examples are a load balancer, a database server, a network switch, or a business service. It is possible to define custom components, and they can be anything - the granularity and range can be defined according to the needs. Each component is of a specific type. Types can be configured.
A component consists of:
A relation connects two components. A relation shares some similarities with a component. Just like a component, it has its state and a propagated state. All relations in StackState are of a specific relation type.
If a relation is a dependency, it propagates states from one component to the next - depending on the direction. Otherwise, it can be considered as merely a line in the visualizer or a connection in the stack topology.