We are working with an existing application that is deployed to a matrix of targets and we are not sure how best to model them using environments and roles.
In the Dev environment there are three target machines: DEVWS1, DEVWS2 (load-balanced), and DEVSTAFF.
- We build a version of the app for public use, deployed to DEVWS1 and DEVWS2.
- We build a different version for internal use, deployed to DEVSTAFF.
We have public and internal roles that the deployment targets have assigned.
Each deployment requires some variables, whose values may be different for internal and public, or may be the same.
Odd and even
There is complexity layered on top of this. The same application will be deployed to the same machines a second time, listening at a different address and using a different database. These are known as odd and even, referring to the years for which they will be used.
Some variables are different for odd and even but others are the same. We have (simplified):
|Target||Year||Users||Pool Name||RunAs User|
So some values are determined by whether the users are internal or public, and some by whether the year is odd or even.
Odd and even environments?
How to we deploy only to odd or even targets? This is the common scenario, where there are potentially different releases of the application between the two.
A simple solution appears to be to create DevOdd and DevEven environments (and similar for Test, Preprod etc.). This way we can define Odd and Even deployment lifecycles.
Has anybody seen this approach, or something similar? Has it worked for you?
- We considered creating odd-public, odd-internal, even-public and even-internal roles and specifying those instead.
- Might it be feasible to use tenants (i.e. odd and even) for these deployments?