Systems
Systems provide a way to represent Services that combine to form a unified whole or function. For example, an online retailer may have a “Checkout” System that comprises several Services working in unison. Systems are composed of Services. Utilizing Systems allows you to group together all of the Services that combine into a single unit so you can quickly see how these Services are performing.
When should I use a System instead of a Domain?
Systems should be used to group together Services that combine to form a single unit. Ideally, the personas that would make most use of Systems are Engineering Managers and Platform Operators who want a quick view into how the Services that make up their Systems are performing.
Creating Systems
Systems can be created by navigating to the Systems List page. This page can be accessed under Catalog within the side navigation.
If there are no active Systems within your OpsLevel account, you will see an empty state prompting you to create your first System.
You can create a new System by either clicking this prompt or by clicking the New System button. Upon clicking this button, a new modal will open up prompting you to fill out the following details for your System:
- Name (required)
- Owner
- Domain
- Description
Clicking Create will create your new System and add it as a new row on the table.
Systems Details
Clicking on a System from the Systems List page will bring you to the Systems Show page for that System. This page provides a bunch of details surrounding your System including:
- Who owns the System
- What tags are applied to the System
- Size of the System (Services, Teams, Users)
- Summary of the Maturity Report for the Services contained by the System
If you want to include more details about your System (what it is, how it functions, etc) you can click on the Notes tab and fill them out via the markdown editor.
How are the Services, Teams, and Users that fall under a System determined?
When you access the Systems Show page for a System, one of the first things you'll see is a count of all the Services, Teams, and Users that fall under that System.
Service Count
This simply counts the number of Services the System contains. See instructions on how to add Services to Systems below.
Team Count
This is a count of all the Teams that own the Services that the System contains.
User Count
This is a count of all the Users that exist in the Teams that own the Services that the System contains.
Adding a Child Service
You can add a child Service(s) to your System by navigating to the Services card at the bottom of the Systems Show page. Clicking Add Service will open a modal where you can search through and select and existing Service(s) to be added as a child for your System.
Clicking Add Services will add that Service(s) to the table in the Services card
Note: A Service can only have one parent System. If a Service already has a parent System you will not be able to select it from the dropdown.
You can also add a Service to a System via opslevel.yml.
Filtering by Systems
You can use Filters to easily see which Services fall under a given System and quickly write Checks or run Campaigns against those Services.
In the above example, OpsLevel will filter down to all of the Services that meet the following criteria: their Framework is "Rails" AND the System they fall under is "Cart".
Reporting by Systems
You can utilize the Maturity Report to easily see how the Services that fall under a given System(s) are performing. The reports table has a System dropdown option which can be selected to view the Maturity Report for one or many Systems.
Example: Creating Systems outside of the UI
In addition to creating Systems via the UI, you can also create Systems using the:
- GraphQL API
- Terraform Provider
- Command Line Utility
all are options for configuring and maintaining your Systems. Below is an example of using the OpsLevel CLI to create a new System:
cat << EOF | opslevel create system -f -
name: "My System"
description: "Hello World System"
owner: "Z2lkOi8vb3BzbGV2ZWwvVGVhbS83NjY"
parent:
alias: "alias of domain"
note: "Additional system details"
EOF
Note: "Owner" in this example is an ID for a team or group.
Example: Creating a System via Existing Tags
Many of our customers have already been modelling Systems via tags. The OpsLevel CLI can be utilized to convert existing tags into Systems. For example, let's say you've been using a key-value pair of "system:x", "system:y" as part of a tag. The following command will create a series of Systems based on the tag value it finds:
for SYSTEM in $(opslevel list services -o json | jq '.[] | .tags.Nodes[] | if .key == "system" then .value else empty end' | uniq)
do
cat << EOF | opslevel create system -f -
name: ${SYSTEM}
EOF
done
Example: Creating a System via "Product" Field
Many of our customers have already been modelling Systems via the "Product" Field under Services. The OpsLevel CLI can be utilized to convert this field into a System. For example:
for SYSTEM in $(opslevel list services -o json | jq 'map(if .product != null then .product else empty end) | .[]' | uniq)
do
cat << EOF | opslevel create system -f -
name: ${SYSTEM}
EOF
done
Updated about 1 year ago