A computer-implemented process for ensuring the availability of an application being hosted on a current data center, the data center comprising a decision engine module, one or more server computers and a current server resource probe module, the process comprising performing the following process actions: periodically measuring, using said current server resource probe module of the current data centre, run-time conditions comprising one or more network performance conditions and resource availability conditions of a client computer comprising a client resource probe module which is in communication with the server resource probe module of the one or more server computers during an interactive session established between a user of the client computer and the application executing on the one or more server computers; the decision engine module of the current data center detecting a change in the run-time conditions comprising one or more network performance conditions and resources availability conditions at the client computer; selecting, using the decision engine module of the current data center, an option for replicating session state data associated with the interactive session based on the detected change in the run-time conditions, said session state data comprising data entered by the user during the interactive session and data generated by the application in response to said user-entered data, said selection being based on performance constraints and resource cost constraints, and a prioritization thereof, that are specified by the application, said selection being made from a set of different session state data replication options, each of said options insuring the continued performance of the interactive session should the replicated session state data be needed, each of said options having different performance and resource cost trade-offs, said selected option determining how, including where, said data is to be replicated; and implementing said selected option, the implementation resulting in said data being replicated outside of the current data center, the replicated data remaining available in the event that the current data center goes offline. periodically measuring, using said current server resource probe module of the current data centre, run-time conditions comprising one or more network performance conditions and resource availability conditions of a client computer comprising a client resource probe module which is in communication with the server resource probe module of the one or more server computers during an interactive session established between a user of the client computer and the application executing on the one or more server computers; the decision engine module of the current data center detecting a change in the run-time conditions comprising one or more network performance conditions and resources availability conditions at the client computer; selecting, using the decision engine module of the current data center, an option for replicating session state data associated with the interactive session based on the detected change in the run-time conditions, said session state data comprising data entered by the user during the interactive session and data generated by the application in response to said user-entered data, said selection being based on performance constraints and resource cost constraints, and a prioritization thereof, that are specified by the application, said selection being made from a set of different session state data replication options, each of said options insuring the continued performance of the interactive session should the replicated session state data be needed, each of said options having different performance and resource cost trade-offs, said selected option determining how, including where, said data is to be replicated; and implementing said selected option, the implementation resulting in said data being replicated outside of the current data center, the replicated data remaining available in the event that the current data center goes offline.