1. A method of performing loss-less migration of a distributed application, comprising: migrating one or more sub-programs within an application, without loss, from their respective primary nodes to at least one backup node; maintaining transparency to a client connected to the primary node over a transport connection; flushing and halting said transport connection during taking of checkpoints; and restoring said one or more sub-programs from said checkpoints in response to initiating recovery of the application.