In network-based service provision, certain providers follow an approach where low-level application programming interfaces (APIs) are exposed and allow developers to build customized services. This approach pushes the complexity of service creation from the provider into the customer of the service. A customer invests in building custom solutions and is responsible for the design of service. If the service provider decides to incorporate such custom solutions as part of their offerings, complexity grows rapidly. The complexity grows linearly with the number of unique combinations and exponentially with the number of services within a combination. The rapid increase in complexity makes services brittle and hard to modify.
Most cloud services use HTTP web-services (SOAP and REST) to distribute service information and access and manage services. This model has shortcomings. First, HTTP was not designed for service discovery and publishing, but only to connect to hosts after they have been discovered through other means. Second, HTTP does not interact with policy in packet treatment. Service packets need to be policy routed and may be modified based on policies. Third, to authenticate, authorize and account (AAA), all HTTP packets must be intercepted (or terminated) at some proxy.