automated deployment of hetergeneous service-oriented system

37
Automated Deployment of a Heterogeneous Service-Oriented System Sander van der Burg Eelco Dolstra Delft University of Technology, EEMCS, Department of Software Technology September 3, 2010 Sander van der Burg, Eelco Dolstra Automated Deployment of a Heterogeneous Service-Oriented Sys

Upload: sander-van-der-burg

Post on 27-Jun-2015

84 views

Category:

Science


0 download

DESCRIPTION

Presentation given at the EUROMICRO SEAA conference at Polytech' Lille, France.

TRANSCRIPT

Page 1: Automated Deployment of Hetergeneous Service-Oriented System

Automated Deployment of a HeterogeneousService-Oriented System

Sander van der Burg Eelco Dolstra

Delft University of Technology, EEMCS,Department of Software Technology

September 3, 2010

Sander van der Burg, Eelco Dolstra Automated Deployment of a Heterogeneous Service-Oriented System

Page 2: Automated Deployment of Hetergeneous Service-Oriented System

Service Oriented Computing

The Service Oriented Computing (SOC) paradigm is very popularto build distributed applications.

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 3: Automated Deployment of Hetergeneous Service-Oriented System

Service Development Support System (SDS2)

Philips has developed a service oriented architecture for AssetTracking & Utilisation services in a hospital environment.

Service Development Support System (SDS2)

Motivating example throughout the paper

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 4: Automated Deployment of Hetergeneous Service-Oriented System

Service Development Support System (SDS2)

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 5: Automated Deployment of Hetergeneous Service-Oriented System

Service Development Support System (SDS2)

Sander van der Burg, Eelco Dolstra Automated Deployment

Purpose

A hospital contains a wide range of medical devices

Each produce status and event logs in their own format

Difficult to perform analysis on data

How can we transform these implicit datasets intosomething useful?

Page 6: Automated Deployment of Hetergeneous Service-Oriented System

SDS2: Architecture

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 7: Automated Deployment of Hetergeneous Service-Oriented System

SDS2: Utilisation Service

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 8: Automated Deployment of Hetergeneous Service-Oriented System

SDS2: Technologies

MySQL: data storage

Ejabberd: messaging system for transmitting status andlocation events

Java: implementation language

Apache Axis: for implementing web services

Google Web Toolkit: for implementing web applicationfront-ends

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 9: Automated Deployment of Hetergeneous Service-Oriented System

SDS2: Deployment

SDS2 must be eventually deployed, i.e. made available for use

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 10: Automated Deployment of Hetergeneous Service-Oriented System

SDS2: Deployment

Create a global configuration file with service locations, and:Databases:

Transfer schema to target machine

Install database on MySQL server

Web services:

Compile Java web service code

Package web application archive

Activate web service on target machine

Web applications:

Compile Java code to JavaScript code

Compile Java web application code

Package web application archive

Activate web application on target machine

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 11: Automated Deployment of Hetergeneous Service-Oriented System

SDS2: Distribution

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 12: Automated Deployment of Hetergeneous Service-Oriented System

SDS2: Deployment

Deploying a service oriented system such as SDS2 is very difficult!

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 13: Automated Deployment of Hetergeneous Service-Oriented System

Challenges

Deploying is labourious:

Time consuming. Deploying SDS2 takes several hours for asingle machine

Subject to errors. Because it is performed manually

Complexity is proportional to number of machines in thenetwork

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 14: Automated Deployment of Hetergeneous Service-Oriented System

Challenges

Deployment steps must be performed in the right order:

For a web service providing data from a database, thedatabase must be activated first

If activated in the wrong order, data may be inaccessible

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 15: Automated Deployment of Hetergeneous Service-Oriented System

Challenges

We do not exactly know what the dependencies of a service are:

Difficult to upgrade reliably

Difficult to upgrade efficiently

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 16: Automated Deployment of Hetergeneous Service-Oriented System

Challenges

Upgrading is not atomic:

A user can observe that the system is changing

While upgrading certain features may become inaccessible

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 17: Automated Deployment of Hetergeneous Service-Oriented System

Challenges

Deploying in heterogeneous networks is even more complex.

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 18: Automated Deployment of Hetergeneous Service-Oriented System

Challenges

Existing deployment tools have various limitations:

Designed for specific component technologies (requires toexclusively use one type of language/implementation):

Enterprise Java BeansOSGiEmbedded systems

Designed for specific environments:

GoDIET: Designed for the DIET grid computing platformCODEWAN: Ad-hoc networks

Generic approaches (lack desirable non-functional properties):

Software Dock: no dependency-completeness, atomicupgradingTACOMA: no dependency-completeness, atomic upgrading

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 19: Automated Deployment of Hetergeneous Service-Oriented System

Disnix

Distributed deployment extension for the Nix packagemanager

Captures deployment specification in models

Performs complete deployment process from models

Guarantees complete dependencies

Component agnostic

Supports atomic upgrades and rollbacks

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 20: Automated Deployment of Hetergeneous Service-Oriented System

Disnix

$ disnix-env -s services.nix -i infrastructure.nix -d distribution.nix

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 21: Automated Deployment of Hetergeneous Service-Oriented System

Service model

{distribution, system}:

let pkgs = import ../top-level/all-packages.nix {

inherit distribution system;

}; in

{ mobileeventlogs = {

name = "mobileeventlogs";

pkg = pkgs.mobileeventlogs;

type = "mysql-database";

};

MELogService = {

name = "MELogService";

pkg = pkgs.MELogService;

dependsOn = { inherit mobileeventlogs; };

type = "tomcat-webapplication";

};

SDS2AssetTracker = {

name = "SDS2AssetTracker";

pkg = pkgs.SDS2AssetTracker;

dependsOn = { inherit MELogService ...; };

type = "tomcat-webapplication";

};

...

}

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 22: Automated Deployment of Hetergeneous Service-Oriented System

Infrastructure model

{

test1 = {

hostname = "test1.net";

tomcatPort = 8080;

mysqlUser = "user";

mysqlPassword = "secret";

mysqlPort = 3306;

targetEPR = http://test1.net/.../DisnixService;

system = "i686-linux";

};

test2 = {

hostname = "test2.net";

tomcatPort = 8080;

...

targetEPR = http://test2.net/.../DisnixService;

system = "x86_64-linux";

};

}

Captures machines in the network and their relevant properties andcapabilities.

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 23: Automated Deployment of Hetergeneous Service-Oriented System

Distribution model

{infrastructure}:

{

mobileeventlogs = [ infrastructure.test1 ];

MELogService = [ infrastructure.test2 ];

SDS2AssetTracker = [ infrastructure.test1 infrastructure.test2 ];

...

}

Maps services to machines

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 24: Automated Deployment of Hetergeneous Service-Oriented System

Deployment process

Specifications are used to derive deployment process:

Building services from source code

Transferring services to target machines

Deactivating obsolete services and activating new services

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 25: Automated Deployment of Hetergeneous Service-Oriented System

Building services

Every component built from source code is stored in the Nix store:

/nix/store/y2ssvzcd86...-SDS2EventGenerator

Former part: y2ssvzcd86..., SHA256 hash code derivedfrom all build-time dependencies of the component:compilers, libraries, build scripts

Latter part: SDS2EventGenerator: name of the component

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 26: Automated Deployment of Hetergeneous Service-Oriented System

Building services

/nix/storenqapqr5cyk...-glibc-2.9

lib

libc.so.6ccayqylscm...-jre-1.6.0 16

binjava

n7s283c5yg...-SDS2Util

sharejava

SDS2Util.jar

y2ssvzcd86...-SDS2EventGenerator

bin

SDS2EventGenerator

sharejava

SDS2EventGenerator.jar

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 27: Automated Deployment of Hetergeneous Service-Oriented System

Building services

/nix/storenqapqr5cyk...-glibc-2.9

lib

libc.so.6ccayqylscm...-jre-1.6.0 16

binjava

n7s283c5yg...-SDS2Util

sharejava

SDS2Util.jar

y2ssvzcd86...-SDS2EventGenerator

bin

SDS2EventGenerator

sharejava

SDS2EventGenerator.jar

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 28: Automated Deployment of Hetergeneous Service-Oriented System

Transferring closures

Copy services and intra-dependencies to target machines inthe network

Only components missing on target machines are transferred

Always safe. Files are never overwritten/removed

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 29: Automated Deployment of Hetergeneous Service-Oriented System

Transition phase

Inter-dependency graph is derived from specifications

Deactivate obsolete services (none, if activating newconfiguration)

Activate new services

Derive order and dependencies from dependency-graph

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 30: Automated Deployment of Hetergeneous Service-Oriented System

Service activation

Every service has a type: mysql-database,tomcat-webapplication, process, ...

Types are attached to external processes, which take 2arguments

activate or deactivateNix store component

Infrastructure model properties are passed as environmentvariables

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 31: Automated Deployment of Hetergeneous Service-Oriented System

Atomic upgrading

Two-phase commit protocol mapped onto Nix primitives

Commit-request-phase (distribution phase):

Build sourcesTransfer service closures

Commit-phase (transition phase):

Deactivating/activating servicesOptionally block/queue connections from end-users

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 32: Automated Deployment of Hetergeneous Service-Oriented System

Atomic upgrading

In case of failure during commit-request: system is notaffected

No files overwrittenWill be removed by garbage collector

In case of failure during commit:

Rollback (transition to previous configuration)

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 33: Automated Deployment of Hetergeneous Service-Oriented System

Results

We have created deployment models for SDS2

Used to atomatically deploy SDS2 in a network of 4 32-bitLinux and 4 64-bit Linux machines

Deployment takes minutes for a single machine. For eachadditional machine a couple of minutes.

Upgrading only took seconds in most cases (only changedparts were replaced)

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 34: Automated Deployment of Hetergeneous Service-Oriented System

Results

Because all components and dependencies are known:

Deployment steps were always performed in the right order

No failures due to breaking inter-dependencies

Upgrading is efficient; we only have to upgrade what isnecessary

Upgrading is reliable; we always know and include theprerequisites

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 35: Automated Deployment of Hetergeneous Service-Oriented System

Results

Upgrades are (almost) atomic

Minor issue: web application in browser must be refreshed,which is not under Disnix’ control

Components can be built for a particular platform

On the coordinator machine (if capable)On the target machines

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 36: Automated Deployment of Hetergeneous Service-Oriented System

Conclusion and future work

Conclusion:

With Disnix we can automatically, efficiently and reliablydeploy service oriented systems similar to SDS2 inheterogeneous environments

Future work:

Support dynamic migration of database (and other mutablestate)

Experimenting in larger networks

More investigation in upgrading web applications

Sander van der Burg, Eelco Dolstra Automated Deployment

Page 37: Automated Deployment of Hetergeneous Service-Oriented System

Questions

Disnix and other related Nix software can be found at:http://nixos.org

Any questions?

Sander van der Burg, Eelco Dolstra Automated Deployment