A Juju model is a workspace. It is the space within which application units are deployed.
One can deploy multiple applications to the same model. Thus, models allow the logical grouping of applications and infrastructure that work together to deliver a service or product. Moreover, one can apply common configurations to a whole model. As such, models allow the low-level storage, compute, network and software components to be reasoned about as a single entity as well.
All Juju models are managed by a Juju controller. This enables clients to have a single point of contact with the system and allows commands to be executed independently from the workloads.
A model is associated with a single controller. A controller can have an indefinite number of models and each model can have an indefinite number of machines (and thus applications). Models themselves can be shared amongst Juju users.
The ‘controller’ model is the management model and is intended to contain a single machine, the actual controller. If controller high availability is enabled, then the controller model would contain multiple instances. All other models are considered regular and are used to run workloads.
A model can be managed by a controller hosted on a different cloud.