top of page

Resiliency through diversity.

Rather than thinking of an application, even a highly distributed application consisting of many components, as a single entity to be deployed and executed on the computing platform, what if we could deploy and execute hundreds or thousands of instances of the application simultaneously? If those instances were actually slight variants of each other, perhaps generated automatically (e.g., through genetic programming [9]), then there is a statistical likelihood that their performance and/or quality properties differ in some interesting way, such as freedom from some bug or security vulnerability.

To address this problem, we argue that resource management should take a holistic view of resources across multiple platform levels. Without support for such high-level management policies, multiplicity computingrisks wasting physical resources and thereby provide poor service to applications.

Notice that some of these ideas have to do with the design of applications, some with the validation of those designs, and some with the operation of applications. Thus, multiplicity
computing would have an impact on nearly every aspect of how we go about the engineering of applications.

SOFTWARE ENGINEERING

The increasing abundance of computing resources will almost certainly be accompanied by a sharp drop in the unit cost of computing. Over time, however, applications tend to use more units rather than the same number of units at lower cost (typically because their functionality increases, disciplined use of resources decreases, or both). In the end, operating costs will remain a critical issue. For example, an application may give up locally available cores for a larger number of cores in a remote data center, accepting the incurred increase in communication latency. What if we could freely optimize cost both horizontally and vertically across the platform, taking into account the different properties of each platform level when allocating resources to applications?

bottom of page