EDIT NOTE: this was incomplete but putting it out there anyways — almost 2 years later…
I’m exploring a few options on
Model names, instance names
First - have to apply actual instances of models. Using prefix for this:
The first item is the portability of models across the development cycle. I.e. how to use the same model applied to different environments. This largely comes down to the instances of the model and based on the previous article, would be prefixing the model with the environment name. As an example, if you have “Dev,” “Staging, and “Prod” environments from the simple 3 tier app model, you could end up with role assignments of:
devweb01: [dev::3tier::web] stgweb01: [stg::3tier::web] prdweb01: [prd::3tier::web]
IF dev and stg shared a database:
devdb: [dev::3tier::db,stg::3tier::db] prddb: [prd::3tier::db]
I still don’t have a good case for “this is running on port 8443 in nonprod, but running on port 443 in production.” This falls into two options that I see:
- Have an override that can be loaded in (similar to the model mapping).
- Removing all direct references to port or other information from the model, and having that be in specific mapping per environment.
The problem with the first is that it isn’t clean - you have to look in a couple of places to see what is the case. The problem with the second one is that you get some redundancy and you have to look in a second place (it’s always in the second place, not that it’s possibly in one of a couple of places). So, no good idea there.