1. A high availability system in a cloud computing environment, the system comprising: a snapshot manager disposed in a mirror environment, the mirror environment comprising at least one computer server; and a plurality of virtual machines disposed in a production environment, each of the plurality of virtual machines comprising a snapshot agent configured to perform a method comprising: periodically taking snapshots of the virtual machine associated with the snapshot agent, wherein the snapshot includes all of the files that constitute the virtual machine including a state and a data of a virtual machine at a specific point in time; determining a delta image based on a change between a current snapshot and a previous snapshot; removing previous snapshots in the virtual machine; and transmitting the delta image to the snapshot manager; wherein the snapshot manager is configured to store a recovery image for each of the plurality of virtual machines and to merge the received delta image with the recovery image to update the recovery image, wherein the snapshot agent is further configured to monitor a health of the virtual machine and to notify the snapshot manager if the virtual machine experiences abnormal behavior, wherein the snapshot agent comprises a policy engine configured to control snapshot collection, and wherein the policy engine is configured to collect system and application performance information for the virtual machine and to responsively determine how frequently snapshots are taken.