Deployment Scenario Supported?

Each one of our environments (Development, Staging, Production), for a specific application, has several server sets, where each set is a load balancing cluster with 2 or more servers. We only want to update specific cluster(s) at a given time, never all of them. Furthermore, when deploying to a particular cluster we want to do a “rolling update”, i.e. take one server in the cluster offline, deploy, bring back online, and repeat for the other servers in the cluster if successful.

For example, lets say that our production environment has 12 server clusters, numbered 1-12. Each cluster has 3 servers for a total of 36 servers. Today we want to deploy an update of our application to cluster #4 and #6 only in production.

According to the documentation, an Octopus Deploy environment is “a group of machines that you will deploy to at the same time” (http://docs.octopusdeploy.com/display/OD/Environments). However in our scenario we only want to deploy to specific clusters in an environment at a given time, and within a cluster we want to do a rolling update. Using Octopus Deploy do we need to create environments for each environment/cluster pair (e.g. Staging_Cluster1, Production_Cluster1, Production_Cluster2), or is there a more elegant way? Is this deployment scenario supported at all using Octopus Deploy?

Hi Don,

Thanks for getting in touch!

Your scenario sounds very much like a multi-tenant situation. We have a documentation page with some of the options available for this scenario that might help.

In your case, it’s likely to be easier to create an environment for each cluster, and deploy specifically to those environments when you do a deployment. The process can then be a simple rolling deployment.

We’re starting to work on some better ways to support multi-tenancy scenarios, based on this UserVoice suggestion. It’s likely that this feature will help your scenario when we can get it into the product. We’d love your feedback on how it should work!

Thanks,
Damo