Concepts #

The most important concepts you need to know about to use SetOps efficiently are Organizations, Projects, Stages, Stage Definitions, Apps, Services, and its CLI.

Organization #

An Organization is the topmost organizational entity in SetOps. It can host multiple Projects and is bound to an AWS account.

Project #

A Project acts as a namespace for your application. It has a unique name, i.e. myproject, and stages are nested under a project.

Stage #

A Stage is a self-contained deployment environment. It is tied to a project and has a unique name, i.e. staging or production. A given stage is completely isolated from all other stages, which means that it does not share any resources or data with them.

Stage Definition #

A Stage Definition is a description of the stage and therefor also the containing apps and services. The SetOps workflow for changing anything on a stage always works the same: you modify the stage definition and apply it to bring your change live. Stage Definitions are stored on the server and can be retrieved later on. In some use-cases you might want to store the definition along with your application code in GIT. Files containing stage definitions usually end with .setops.yaml.

The structure of the stage definition is specified via the SetOps Stage Definition JSON Schema.

App #

An App is a group of one or more containers that run on the SetOps platform using a container image you provide. This container image contains your application or software packages. A stage (and therefore a stage definition) can have many Apps. Apps are always assumed to be long-running. They run on our container-based platform using an image you provide. For example, web applications will usually have a task named web for the application server and possibly a task called job for running background jobs. Apps are assumed to be stateless. They persist user data by accessing services.

Service #

A Service is an additional component such as databases, for example. Services provide additional functionality and can be linked to apps that consume them.

CLI #

The Command Line Interface (CLI) is the heart of SetOps. You can create, configure, deploy and manage your application with this single tool. The CLI commands follow a consistent and intuitive pattern.

There are:

  • commands
  • subcommands
  • scope flags
  • arguments

We separate commands from subcommands with a :. The scope flags have the same name as the belonging commands and define the scope for a lower-level command.

The following examples explain commands, subcommands, scope flags, and arguments:

setops --scope-flag command:subcomand argument

setops --project myproject project:create
setops --project myproject --stage production stage:create
setops --project myproject --stage production stage:apply -f my-stage-definition.setops.yaml
setops --project myproject --stage production --app web task

The command hierarchy looks like following:

setops
└─ project
     └─ stage
         ├─ app
             ├─ domain
             ├─ task
             └─ log
         ├─ service
             ├─ backup
         └─ user
             ├─ invite
             └─ remove
     └─ user
         ├─ invite
         └─ remove

The CLI nests every lower-level command with a scope flag. For example, let’s take a look at the stage:apply command: It is nested below setopsprojectstage. So to use stage:apply, you need to provide the following scope flags for this lower-level command:

setops --project myproject --stage production stage:apply FLAGS

You can set all flags either in front or after the command; for better readability of our documentation, we place scope flags at the start of the command.

A command without a colon-separated subcommand is the list command, returning a list of all resources of this type.

Going further #

Follow a Quick Start Guide to learn how to deploy your first App to SetOps or learn more about Stages.