1. A method for maintaining a current virtual appliance comprising a set of software components each one installed on a corresponding virtual machine, wherein the method comprises: retrieving a maintenance descriptor comprising an indication of a new level of at least one of the software components to be updated; determining, for each software component indicated in the maintenance descriptor, a current level of the software component being installed on the corresponding virtual machine; determining a set of old ones of the software components to be actually updated according to a comparison between the corresponding current levels and new levels; determining local data of the current virtual appliance, cloning the current virtual appliance in response to determining that software components need to be updated; updating the cloned virtual appliance by updating each old software component thereof to the new level, wherein the updating occurs while the current virtual appliance is running; determining changes to the local data of the current virtual appliance that occurred to the current virtual appliance during the updating of the cloned virtual appliance; applying the changes to the local data of the current virtual appliance to the updated cloned virtual appliance; and replacing the current virtual appliance with the updated cloned virtual appliance.