It’s not uncommon for SaaS offerings to have dedicated instances for specific customers. Sometimes they run variants of the code, sometimes they’re on the same code base but have different outage windows or desires to take upgrades. While different instances of the application are used by different clients, the hardware/vms are generally shared leading to the question of “How do I upgrade instances of a type or for a client rather than upgrading a group of servers.”
This is a bit different than the “everyone is on a shared distributed application” model that is, perhaps, more traditional for SaaS.
In this article, the authors look at this scenario in depth and show how to use application properties, tags and more to model this scenario effectively.