1. A computer program product comprising a computer usable medium having a computer readable program, wherein the computer readable program, when executed on a standby computing device, causes the standby computing device to: automatically receive, from a primary computing device topologically remotely located from the standby computing device, event data for a primary application instance written to a first log data structure associated with the primary computing device; store the event data in a second log data structure associated with the standby computing device and a shadow application instance, wherein the primary application instance and shadow application instance are instances of a same application; update a state of the shadow application instance by replaying events in the second log associated with the shadow application instance to thereby bring a state of the shadow application instance to a consistent state with the primary application instance; and relocate the primary application instance to the standby computing device using the shadow application instance in response to a failure of the primary application instance.