Autonomic Rejuvenation of Cloud Applications as a Countermeasure to Software Anomalies