Thursday, December 30, 2010

Pull Deployment of Services

It's not very useful to have a blog which is almost empty, so here is my second blog post. As I have explained in the previous post, I'm a PhD student working on the PDS project. So let's give a general description of PDS here, since for a lot of people I see and talk to this is still a big mystery.

PDS is a research project funded by Jacquard, a Dutch funding programme to stimulate software and service research and collaboration in Dutch academia and industry. The participants in my project are Delft University of Technology and Philips Healthcare. So now I'll come to the question: what is PDS actually? The abbreviation stands for 'Pull Deployment of Services' but this still does not makes thing really clear yet.

The project goal is inspired by the medical domain. In hospitals various services are used to assist medical staff in performing their tasks. Examples of these services are viewing X-Ray images or retrieving patient records.

Hospital environments are mostly device-oriented, in which services are bound to dedicated devices. For example, to view an image a dedicated workstation assigned for this purpose (as shown in the picture on the left).

Device-orientation has several undesired implications. Firstly, it introduces overcapacity and suboptimal usage of devices. Each device has an amount of system resources available which are only used when a service is actually used. Most of the times these system resources aren't used at all. Secondly, device-orientation gives a large degree of inflexibility. If a machine breaks, a particular service may become completely unavailable, which is absolutely undesirable in hospital environments. Finally, deploying a service is a very complex process, because this process is often performed semi-manually and in an ad-hoc fashion.

The goal of the PDS project is to move from device-orientation to service-orientation. Services can be used on any device, any place and on-demand. This is what we mean with Pull Deployment of Services. To achieve this goal services must be built in such a way that they are distributable. This means that a service can be offered in multiple variants. For example, to run an image viewer on a workstation all the components can be run locally because most workstations have a powerful GPU. To run the same service on a mobile device, such as a PDA, some components have to deployed elsewhere, since a PDA is not powerful enough to perform all the image rendering itself.

To support pull deployment of services, we must craft an architecture composed of various tools integrated with domain specific modules. We have several tools in mind which we use as a foundation. Nix is used as foundation for deployment, because it has distinct deployment features such as a declarative language to specify build actions, atomic upgrades and rollbacks. Moreover, it serves as the basis of the NixOS GNU/Linux distribution in which complete machine configurations can be derived from a single declarative specification. NixOS can also be atomically upgraded.

Although the PDS project is inspired by the medical domain, the tooling and techniques we are developing are applicable to any service-oriented system. Moreover, tooling is released as part of Nix project and can be used under free and open-source licenses.

The PDS project has started in September 2008 and we have achieved some interesting results. Moreover, we have implemented some tooling. In future blog posts I'll describe some more details about this. More details about the goal of the project can be found in our ICSE Cloud 2009 paper titled: 'Software Deployment in a Dynamic Cloud: From Device to Service Orientation in a Hospital Environment', which is available from the publications section of my homepage. Moreover, I have given two presentations about the general idea of the project. The slides are also on my homepage and titled 'Pull Deployment of Services'.

No comments:

Post a Comment