Abstract
Fault tolerance is a major challenge that should be considered to ensure good performance of cloud computing systems. In this paper, the problem of tolerating faults in cloud computing systems is addressed so that failures can be avoided in the presence of faults and the monetary profit of the cloud is maintained. A framework is proposed in order to achieve reliable platform of cloud applications. An algorithm for selecting the most suitable fault tolerance technique is presented. Another algorithm for selecting the most reliable virtual machines for performing customers' requests is presented.