A snapshot represents the current state of an application in the environment. Snapshots specify what combination of component versions to deploy together, and specifies the exact version for each component in the application. When a snapshot is created, Deployment Automation gathers information about the application, including the component versions, for a given environment.
As the application moves through the delivery pipeline, Deployment Automation ensures that the exact versions, bit for bit, are used in every environment. Once all appropriate stages and approvals for a snapshot are complete, the snapshot is pushed to production.
Snapshots also help manage complex deployments such as those with multiple tiers or development teams. For example, after testing and confirming that team A's component works with team B's, a snapshot can be taken. Then, as development progresses, additional snapshots can be taken and used to model the effort and drive the entire deployment, coordinating versions, configurations, and processes.