Skip to content
Kyle Davis edited this page Aug 20, 2023 · 4 revisions

System Initiative is a collaborative power tool designed to remove the papercuts from DevOps work.

  1. Full-fidelity models use their relationships to infer configuration dynamically, then automatically generate any necessary code for you.
  2. Qualifications give immediate insight into the viability of your configuration, and let you encode policy directly into the simulation.
  3. Fully multiplayer visual interface provides easy collaboration between experts - the heart of DevOps work.
  4. Add new functionality, enforce policy - everything is a TypeScript function sitting on a reactive hypergraph.

Our goal is NOT to abstract away complexity, it’s to give you the tools to embrace it.

Terminology Overview

Assets

An asset is characterized by its Schema, a hierarchical structure of properties often called as “attributes”. Each of these properties consists of a key-value pair, with the value being the resultant output of a particular function.

Highlight Asset

There are three main types of properties:

  1. Default Properties: These are predefined by the System Initiative (SI) and might include aspects like name, description, and color representation on the interface.
  2. Resource-specific Properties: These capture details about the actual resource, providing insights into third-party systems or real-world contexts.
  3. User-defined Properties: Custom properties created by users to serve specific requirements within the model. These might include details or actions you want to bring to the fore while using the System Initiative.

Note: The terms "property" and "attribute" are often used interchangeably in various contexts.

Highlight Attributes

Functions

In the System Initiative, everything is a product of Typescript function execution. Let's delve deeper into the types of functions and their purposes.

Highlight Functions

Action

These are essential when your Asset reflects a tangible, real-world resource that necessitates creation or deletion. Action Functions are categorized into three types:

  1. Create: Details how resources are initiated in SI.
  2. Delete: Specifies how resources are removed.
  3. Refresh: Essentially means, “fetch the most recent details of my resource from its source.”

Qualification

Qualification Functions enable you to scrutinize and confirm components of the Asset's complete setup.

Code Generation

Code Gen Functions come into play when there's a necessity to formulate code for other parts within the System Initiative. An instance of this is generating the requisite JSON for the AWS CLI to retrieve the ImageId of an AMI, as seen in Tutorial 2 (Tailoring System Initiative).

Attribute

Each value within the property hierarchy emerges from a function termed as an Attribute Function. By standard, every property possesses an intrinsic Attribute Function, which merely reflects the specified configuration type (like si:setString, si:setObject, etc.). However, you can set up bespoke Attribute Functions to introduce logic or alter your configuration data's format. For instance, in AWS Ingress Asset, an Attribute Function converts the ports revealed on a Docker Image’s setup into the IpPermissions format required for an AWS Ingress Rule.

Validation

Lastly, the domain of validation functions. These functions bear a resemblance to Qualifications but operate on an individual property of the Asset rather than its entirety. They're akin to unit tests, facilitating real-time feedback in the UI if a value is misconfigured or erroneous. A case in point: The Security Group Asset employs a Validation function to verify that the description is confined to 256 or fewer permissible characters.

Bringing It All Together

Each time a modification is made, the System Initiative rebuilds a Hypergraph of functions. It then processes them in the appropriate sequence, aligning with the graph structure you've set up in your workspace. This structure is envisioned as a tree of properties.