Building Web services middleware with predictable execution times
Predictability of execution has seldom been considered important in the design of Web services middleware. However, with the paradigm shift brought by cloud computing and with offerings of Platforms and Infrastructure as services, execution level predictability is mandating an increased importance. Existing Web services middleware are optimised for throughput with unconditional acceptance of requests and execution in a best-effort manner. While achieving perceived levels of throughput, they also result in highly unpredictable execution times. This paper presents a generic set of guidelines, algorithms and software engineering techniques that enable service execution to complete within a given deadline. The proposed algorithms accept requests for execution based on their laxity and executes them to meet requested deadlines. An introduced admission control mechanism results in a large range of laxities, enabling more requests to be scheduled together by phasing out their execution. Specialised development libraries and operating systems empower them with increased control over execution. Two widely used Web services middleware products were enhanced using these techniques. The two systems are compared with their unmodified versions to measure the predictability gain achieved. Empirical evidence confirms that the enhancements made enable these systems to achieve more than 90% of the deadlines under any type of traffic, while the unmodified versions achieve less than 10% of the deadlines in high traffic conditions. Predictability of execution achieved through these techniques, would open up new application areas such as industrial control systems, avionics, robotics and financial trading systems to the use of Web services as a middleware platform.
web services middleware predictability of execution scheduling real-time systems earliest deadline first