1. A method performed on a plurality of computer processors, said method comprising: executing a distributed application on said plurality of computer processors, said distributed application being executed by a plurality of replicas of application code; said distributed application being executed on virtual machines having guest operating systems, said virtual machines being operated on host devices; grouping said plurality of replicas into update domains, said update domains being groups of said replicas; identifying an update to perform on said distributed application; querying the distributed application, by a fabric controller, to identify a sequence of said update domains to update; for each of said update domains, processing, by the fabric controller according to the sequence, a current update domain to perform said update, said processing comprising: querying said application executing in a current update domain, before transmission of said update for reception by said current update domain, to determine whether said application considers said current update domain ready for updating; after receiving a query response indicative of said current update domain being ready for updating, performing said update on said update domain; querying said application executing in said current update domain to determine if said update results in said application operating properly within said current update domain; when said update results in said application operating properly, proceeding to a next update domain; and when said update results in said application operating improperly, suspending said update.