Applications do this task by defining the different versions of each component and defining the different environments that the components must go through on the way to production. In addition, applications also map the constituent hosts and systems (called resources) that a component needs within every environment.
Applications also implement automated deployments, rollbacks, and similar tasks. These tasks are called processes. However, at the application level, processes are concerned only with the components and resources that are necessary for deployment, and related tasks. By contrast, component processes are concerned with running commands and related tasks.).
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. This type of environment is called an uncontrolled environment. For most users, the snapshot is pushed through the pipeline.
An environment is a collection of resources that host the application. Environments typically include host systems and IBM® UrbanCode Deploy agents. When a deployment is run, it is always done so in an environment. While environments are collections of resources, resources can vary per environment.
For example, environment 1 might have a single web server, a single middleware server, and a single database server that must be deployed to. IBM UrbanCode Deploy represents these systems as three separate resources that are running in environment 1. Environment 2, however, might have a cluster of resources that the same application must be deployed to. IBM UrbanCode Deploy compensates for these differences with resource groups (more at resources by keeping an inventory of everything that is deployed to each environment: IBM UrbanCode Deploy knows exactly the environment and servers where the application was deployed to and tracks the differences between the environments.