For various reasons, such as reduction in complexity and failure isolation, computer systems are usually created as stacked layers of services, where a service provides functionality to either other (client) services, or to client software components through an interface.