Distributed computing systems are becoming bigger and more complex. While the complexity of large-scale distributed systems has been acknowledged to be an important challenge, there has not been much work in defining or measuring system complexity. Thus, today, it is difficult to compare the complexities of different systems, or to state that one system is easier to program, to manage or to use than another. In this paper, we try to understand the factors that cause computing systems to appear very complex to people. We define different aspects of system complexity and propose metrics for measuring these aspects. We also show how these aspects affect different kinds of people – viz. developers, administrators and end-users. Based on the aspects and metrics of complexity that we identify, we propose general guidelines that can help reduce the complexity of systems.
Anand Ranganathan, Roy H. Campbell