Thanks for getting in touch!
This is definitely achievable, and there are a few ways to achieve it. The most straightforward would be to use Rolling Deployments in Octopus Deploy.
In Octopus you want the same deployment process for Development and Test as you do in Production. There is a risk here that it may cause problems when you get to Production and we generally advise not to do it this way
I’ve set up a small demo on how you can use Run Conditions specifying an environment that it runs the step. In your example, you want to do all deployments to Dev and Test but a Rolling Deployment just for Production and this is straightforward in Octopus Setup.
In my Project Deployment Process window, I set up a Deploy to IIS Step that’s only to run in Development and Test. It will look something like this:
As you can see, this is to run on all targets with the ““OctoFX-Web”” Role, and only runs for Development and Test.
For your Production requirements, you’ll want to set a Rolling Deployment window of two. If you wish to set it as a %, there is a Community Step template available that you can use. In my example, I just used the default setup and set the window to two.
For each step in your Rolling Deployment, you will need to add in a Run Condition for just Production so that this step only runs in Production.
Load Balancer Step
You can extend this method out with each service. So, if you had for instance an app with a Website, a Windows Service, and a Database, then doing the same for each of these would make sense.
Please let me know if you have any questions,