[Functional Assets Required to Make Highly Available Nontrivial Distributed Systems] 


Description
 

The FARMHANDS project was born as a response to the increasing need for distributed applications, and specifically, for the imperative demand of both greater quality in software (with regard to availability and performance) and cost reduction all along the software development lifecycle.

To face these challenges, our research group focused on research activities closely related to cluster-based distributed systems deployment and the use of tools and techniques to improve the quality of software running on those systems. These tools can be classified in three big groups:

  • the use of the distributed functional paradigm for building operative models and implementing high-available services;
  • the identification of design patterns as general solutions to common problems found during different development stages;
  • the use of formal methods to assess system properties, or else properties of a model of the system, or of an abstract fragment (pattern) of the system.

With this prospectives, the FARMHANDS project aimed to (a) define development-support tools, in order to achieve a methodology for developing distributed functional applications, (b) identify the good practises in the shape of design patterns, and (c) create a technical framework including libraries and tools to face already-known problems in the development of concurrent/distributed systems.

As a case study, two systems were proposed. First, the evolution of the VoDKA video-on-demand server is proposed. VoDKA was the result of previous projects developed by our research group and is under exploitation by the spin-off LambdaStream as part of different products. Second, the distributed risk management system ARMISTICE.

The most relevant results of this project include:

  • Patterns identification and abstraction, from specific scenarios in the systems used as case studies, with have been formulated as generic reusable components. These components are integrated within a development methodology for distributed functional systems, in which formal methods play a significant role, especially with regard to system properties verification and validation.
  • Design and development of components and libraries to be of use for the development of highly available and scalable distributed services. Of special interest are techniques for the transparent migration of network connections between nodes, coordination mechanisms and distributed hash tables for building peer-to-peer (P2P) services, development frameworks for interactive applications and model-based distributed services, etc.
  • Demonstration of the industrial feasibility of the developed techniques and tools, applied in two different case studies (VoDKA server, ARMISTICE risk management system).