HIGH AVAILABILITY FOR LARGE SCALE DISTRIBUTED APPLICATIONS