An environment is a user-defined collection of resources that host applications. It’s the application's mechanism for bringing together components with the agent that actually deploys them.
Environments are typically modeled on some stage of the software project lifecycle, such as development, QA, or production. A resource is a deployment target, such as a database or J2EE container. Resources reside on a host that is a physical, virtual, or cloud-based “machine.”
Environments can have different topologies. For example, an environment can consist of a single machine, be spread over several machines, or be distributed over clusters of machines. Approvals are generally scoped to environments.