Use > Create Designs > Topology Designs > Topology composition

Topology composition

Components are the building blocks for your designs. Some components are created when you install Codar, and you can add new components in the Components sidebar menu item in the Designs area.

A component represents one service design element that is required to deploy a service. A topology design can include concrete components and capabilities.

  • A concrete component is defined in the design as a specific service, such as a vCenter server.

    A concrete component is deployed as defined and does not require composition.

  • A capability is a component that can be fulfilled by any service that meets its criteria, such as a web server that could be fulfilled by either Apache HTTP Server or Apache Tomcat. Capabilities are identified in the designer by angled brackets, such as <<Server>>.

    A capability must be matched to an service design or a microservice to be fulfilled.

See Components .

You can use these components to create the following types of topology designs:

  • A concrete design is any design that contains no capabilities. It may include components that support a capability, but it cannot directly contain capability components.
  • A partial design is any design that contains capabilities. Such a design cannot be provisioned on its own and requires the selection of a compatible service design.
  • A service design is a design that can fulfill all capability requirements of a partial design.
  • A microservice is a design that can fulfill one part of a capability.
  • The combination of a partial design with a service design creates a composite design that is itself a concrete design. A composite design is normally hidden from view in the list of topology designs, but it can be made visible by saving the design from a test run. See Test a topology design.

When only concrete components are included in a design, those specific services are provisioned as specified. When a design contains capabilities, the design requires a separate design that satisfies each capability.

The separate design can be a service design with concrete components or a set of microservices that together fulfill the capability requirements. If a microservice satisfies more than one capability, the topology instance can be shared between two or more requirements, or each requirement can use a new instance of the microservice.

For example, this design contains a My application component that has relationships to <<Application Server>>, <<Database Server>>, and <<Web Server>> (each of which is a capability):

A suitable service design might contain PHP, MySQL, and Apache components. A microservice would contain only one of those components, such as a MySQL server.

Designs with a capability cannot be published but can be provisioned as a test run. See Test a topology design.

When you deploy a package from a partial design, you select an service design or microservices that meet the requirements of the design.

Requirements (required characteristics)

You can specify requirements for capability components. A requirement allows you to refine which concrete designs should be selected when a partial design is provisioned. For example, Apache HTTP Server may be a required characteristic that is specified on a Web Server capability, so only designs that include Apache Web Server as a supported characteristic of the component will be selected when a design is provisioned. See Component characteristics.

Testing a partial design

During the test run of a partial design, you will be prompted to select from the list of candidate service designs, each of which meets the following criteria:

  • Is a concrete design.
  • Contains concrete components that support each of the capabilities used in the partial design, each of which supports all of the required characteristics specified on the capability in the partial design.
  • Has property values configured for all required properties in the design.
  • Is not a composite design that was created by the combination of a partial design with another concrete design, unless that composite design was subsequently saved as its own design (see the description of Composite design below for more information).
  • Has no validation errors.

    For example, consider a partial design that includes a concrete component My App with relationships to Web Server, Application Server, and Database Server components.

    Assume the Web Server, Application Server, and Database Server components have required characteristics of Apache 2.4, PHP 8, and MySQL 5.5, respectively.

    The partial design could be provisioned with a that contains Apache Web Server, PHP, and MySQL components, respectively supporting the Web Server, Application Server, and Database Server capabilities, which support the characteristics Apache 2.4, PHP 8, and MySQL 5.5, with each component configured to be provisioned on a server.

See Test a topology design.