A User-Centric Framework for Improving a Distributed Software System ’ s Deployment Architecture

A distributed system's deployment architecture can have a significant impact on its QoS. Furthermore, the deployment architecture will influence users' satisfaction, as users typically have varying QoS preferences for the system services they access. Finding a deployment architecture that will maximize the users' overall satisfaction is a challenging, multi-faceted problem. We propose to develop a framework that can be tailored and instantiated to address this problem in its many variations. The framework is accompanied with tool support, which allows it to be used in practice and evaluated in many representative scenarios. A growing class of mobile and distributed systems are frequently challenged by the fluctuations in the system parameters: network connectivity, bandwidth, reliability of hosts, availability of battery power, etc. Furthermore, the different users' usage of the functionality (i.e., services) provided by the system and the users' quality of service (QoS) preferences for those services will differ, and may change over time. We define a service as a separately identifiable functionality provided by a system that is accessed via a specific access point (i.e., a human-user or software interface) and realized via a collaboration of a subset of the system's components. For any such large, distributed system, many deployment archi-tectures (i.e., mappings of software components onto hardware hosts) will be typically possible. Some of those deployment archi-tectures will be more effective than others in delivering the desired level of service quality to the user. For example, a service's latency can be improved if the system is deployed such that the most frequent and voluminous interactions among the components involved in delivering the service occur either locally or over reliable and capacious network links. However, the problem of finding the optimal (or even reasonable) physical locations for software components becomes quickly intractable for a human engineer if multiple QoS dimensions (e.g., latency, security, availability , power usage) and multiple users' preferences must be considered simultaneously, while taking into account any additional constraints (e.g., component X may not be deployed on hosts Y and Z). Figure 1 shows an overview of the problem, its inherent complexity, and the relationships among its elements. In this research, we consider the problem of finding a deployment architecture such that the QoS preferences accrued by a collection of distributed end-users are addressed, i.e., that the utility of the system to all of its users is maximized. We would like our solution to be applicable to a …