Applications are responsible for bringing together all the components that need to be deployed together. This is done by defining the different versions of each component as well as defining the different environments the components must go through on the way to production. In addition, applications also map the constituent hosts and machines (called resources) a component needs within every environment.

Applications also implement automated deployments, rollbacks, and such. These are called application processes. However, application level processes are only concerned with the components and resources necessary for deployment — differentiating application processes from component processes (which are concerned with running commands, and so on.

Applications also introduce snapshots to manage the different versions of each component. A snapshot represents the current state of an application in the environment. Typically, the snapshot is generated in an environment that has no approval gates – called an uncontrolled environment. For most users, the snapshot is pushed through the pipeline.

NOTE Before configuring an application, you will need to ensure that at least one agent has been installed in a target environment (for evaluation purposes, the agent can be on the same machine as the server). In addition, you will also need to add at least one resource group to the agent (see Resources).