21Distributed Programming for the Cloud
challenges that a designer needs to pay careful attention to and address before devel-
oping a cloud program. We next discuss heterogeneity, scalability, communication,
synchronization, fault-tolerance, and scheduling challenges exhibited in building
cloud programs.
1.6.1 heterogeneity
The cloud datacenters are composed of various collections of components includ-
ing computers, networks, operating systems (OSs), libraries, and programming lan-
guages. In principle, if there is variety and difference in datacenter components, the
cloud is referred to as a heterogeneous cloud. Otherwise, the cloud is denoted as a
homogenous cloud. In practice, homogeneity does not always hold. This is mainly
due to two ma ...