Important Concepts

Here are some concepts and definitions for Facets Control Plane



What is a Blueprint?

A Blueprint in Facets Control Plane is a logical definition of the services and resources you require. Optionally, it includes the schema, seed data, dashboards, alerts, and everything else that you would want to keep as a single source of truth.

What it is and what it isn't

✅ It is a set of metadata about your application architecture.

❌ Unlike AWS Cloud formation template or Terraforms Configs, a Blueprint denotes the application architecture as viewed by the developers with regards to the environments.

✅ It is meant for every persona in the tech team like Devs, QAs, Ops Team, and Security Team to express their intents by modifying it.

How is it created?

The Blueprint is organized as follows -

  1. A Blueprint starts with an empty repository.
  2. It consists of a catalog of Nested Folder organized by sections like
  • Applications/Services - Contains the metadata about the services.
  • Generic resources - For e.g., MySQL, Mongo, Postgres, Kafka.
  • Cloud specific resources - For e.g., S3, Dynamodb, SQS.
  • Dashboards and Alerts.
  • Custom Intents - Organizations can create intents of their own that they want their developers to use.

Each of the nested folders has one or multiple files that are created by the developers. These are JSON files that describe the resource as well as its dependency on others. For e.g. for a service, the file will cover all aspects including ports, health checks, autoscaling, environment variables, and the dependencies on other resources like databases, ingress and cloud resources. The schema definitions can be found here :point-down:.

Blueprint Repository

This is a GitHub repository where the above Blueprint is checked in.

Once a Blueprint repository is created, it is registered in the Facets Control Plane and given a qualified name.



What is a Cluster?

A Cluster in Facets Control Plane is a set of physical resources where an environment will be created. These clusters may be one for each environment or can host multiple environments.

The Cluster consists of VPC, Security groups, NAT gateways, IAM roles, and shared platforms like EKS clusters, etc. They may also consist of common security, observability, and cluster management tools.



What is an Environment?

An Environment is a manifestation of the blueprint on a particular or a dedicated Cluster. The environments can be a dev/sandbox, QA, pre-prod, or production environment.

To provision an Environment with a dedicated cluster, you need to provide the desired cloud account credentials in the creation phase. The Facets Control Plane interprets the contents of the Blueprint to create and deploy necessary components. For e.g. In AWS, Facets Control Plane provisions an implicit resource like Aurora if the Blueprint contains a MySQL resource and wires the required access to the applications that have dependencies on it.


A Release is a set of changes/mutations that needs to be applied to an environment. Usually, a release consists of the following -

  1. New / Updated service versions (docker builds) as detected by the Facets Control Plane from the CI Integration .
  2. New / Updated resources like databases, queues, etc. as added in the Blueprint.
  3. New / Updated application Intents like credential requests, ingress requirements as approved in the Blueprint.
  4. New / Updated Resource properties like new queue-name in a queue or schema changes in a database defined in the Blueprint.