Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
ing. S. van der Burg
Healthcare Systems Architecture/Delft University of Technology
September 16, 2008
Model-driven Distri...
2Healthcare Systems Architecture/TU Delft, April 09, 2008
Outline
• Introduction
• SDS2
• Nix
• Disnix
• Conclusions
• Fut...
3Healthcare Systems Architecture/TU Delft, April 09, 2008
Introduction
• Software deployment is all of the activities that...
4Healthcare Systems Architecture/TU Delft, April 09, 2008
Introduction
• The software deployment process should be a simpl...
5Healthcare Systems Architecture/TU Delft, April 09, 2008
Introduction
• Distributed systems are systems that appear to a ...
6Healthcare Systems Architecture/TU Delft, April 09, 2008
Introduction
• Information technology infrastructure of hospital...
7Healthcare Systems Architecture/TU Delft, April 09, 2008
Introduction
• The software deployment process in hospital envir...
8Healthcare Systems Architecture/TU Delft, April 09, 2008
Vision
• The software deployment process should be a simple proc...
9Healthcare Systems Architecture/TU Delft, April 09, 2008
Distributed Environment
10Healthcare Systems Architecture/TU Delft, April 09, 2008
Service Development Support System (SDS2)
• Developed here at H...
11Healthcare Systems Architecture/TU Delft, April 09, 2008
Components, Protocols & Technologies
XMPP server
equipment
logs...
12Healthcare Systems Architecture/TU Delft, April 09, 2008
Deployment View
Philips EnterprisePhilips Enterprise
HospitalHo...
13Healthcare Systems Architecture/TU Delft, April 09, 2008
Nix
• Nix is a purely functional package manger
• Installing/up...
14Healthcare Systems Architecture/TU Delft, April 09, 2008
Example Nix expression
{stdenv, fetchsvnssh, apacheAnt, jdk, my...
15Healthcare Systems Architecture/TU Delft, April 09, 2008
Packages model
rec
{
username = “user”;
password = “secret”;
co...
Research / Healthcare Systems Architecture, September 3, 2008
Package Dependency Graph AssetTracker Service
17Healthcare Systems Architecture/TU Delft, April 09, 2008
Nix deployment operations
• Installing XMPP Logger:
– nix-env -...
18Healthcare Systems Architecture/TU Delft, April 09, 2008
Disnix
• An extension to Nix to allow distributed software depl...
19Healthcare Systems Architecture/TU Delft, April 09, 2008
Disnix overview
20Healthcare Systems Architecture/TU Delft, April 09, 2008
Services model
ME2MSService = {
name = "ME2MSService";
pkg = pk...
21Healthcare Systems Architecture/TU Delft, April 09, 2008
Infrastructure model
{
dtk15 = {
hostname = "dtk15";
targetEPR ...
22Healthcare Systems Architecture/TU Delft, April 09, 2008
Distribution model
{services, infrastructure}:
[
{ service = se...
23Healthcare Systems Architecture/TU Delft, April 09, 2008
Distributed atomic commits
• Commit-request phase:
– Build all ...
24Healthcare Systems Architecture/TU Delft, April 09, 2008
Conclusion
• We have adapted and modeled the SDS2 system in Nix...
25Healthcare Systems Architecture/TU Delft, April 09, 2008
Future work
• Dynamic distribution based on Quality of Service ...
Research / Healthcare Systems Architecture, September 3, 2008
MySQL database
SDS2AssetTracker
EMLogService
HIBService
MELo...
Model-driven Distributed Software Deployment
Upcoming SlideShare
Loading in …5
×

Model-driven Distributed Software Deployment

324 views

Published on

Presentation about my master's thesis given at Philips Research

Published in: Science
  • Be the first to comment

  • Be the first to like this

Model-driven Distributed Software Deployment

  1. 1. ing. S. van der Burg Healthcare Systems Architecture/Delft University of Technology September 16, 2008 Model-driven Distributed Software Deployment
  2. 2. 2Healthcare Systems Architecture/TU Delft, April 09, 2008 Outline • Introduction • SDS2 • Nix • Disnix • Conclusions • Future work • Demonstration
  3. 3. 3Healthcare Systems Architecture/TU Delft, April 09, 2008 Introduction • Software deployment is all of the activities that make a software system available for use – Install/Uninstall – Update – Release – Activate/Deactivate
  4. 4. 4Healthcare Systems Architecture/TU Delft, April 09, 2008 Introduction • The software deployment process should be a simple problem, but it turns out to be much more complex – A software component is almost never self-contained – A software system should be able to find its dependencies – Some software components require specific hardware – Uninstalling should be safe – Keeping the system up to date should be safe and atomic
  5. 5. 5Healthcare Systems Architecture/TU Delft, April 09, 2008 Introduction • Distributed systems are systems that appear to a user as one logical system – Components are distributed across different systems in a network and work together to reach a common goal • The software deployment process of distributed systems is even more difficult: – Dependencies of components on the same systems (intra- dependencies) – Dependencies of components running on different systems (inter- dependencies)
  6. 6. 6Healthcare Systems Architecture/TU Delft, April 09, 2008 Introduction • Information technology infrastructure of hospitals is heterogeneous – Workstations – Medical equipment (e.g. MRI scanners) – Connected through wired and wireless network
  7. 7. 7Healthcare Systems Architecture/TU Delft, April 09, 2008 Introduction • The software deployment process in hospital environments is a semi- automatic process • Software deployment in such an environment requires – Up-to-date documentation – People with necessary skills • A semi-automatic deployment process is – Error prone – Time consuming – Costly
  8. 8. 8Healthcare Systems Architecture/TU Delft, April 09, 2008 Vision • The software deployment process should be a simple process, not a complex one • The software deployment process should be fully automatic, not semi- automatic • The configuration of a system should be captured in a model
  9. 9. 9Healthcare Systems Architecture/TU Delft, April 09, 2008 Distributed Environment
  10. 10. 10Healthcare Systems Architecture/TU Delft, April 09, 2008 Service Development Support System (SDS2) • Developed here at HSA • Asset management and utilization services for mobile medical equipment • Service Oriented Architecture – Information as a service – Services could be distributed across different machines
  11. 11. 11Healthcare Systems Architecture/TU Delft, April 09, 2008 Components, Protocols & Technologies XMPP server equipment logs XMPP Logger equipment log summaries asset tracking service utilization service XMPP Generator floor plan SQL XMPP SOAP Java Axis2 ejabberd smack tomcat mysql GWT
  12. 12. 12Healthcare Systems Architecture/TU Delft, April 09, 2008 Deployment View Philips EnterprisePhilips Enterprise HospitalHospital XMPP server TomCat server equipment logs XMPP Logger TomCat server equipment log summaries TomCat server asset tracking service TomCat server utilization service XMPP Generator Mobile Equipment TomCat server floor plan component types client transformer repository TomCat server communication protocols SQL SOAP XMPP event busevent bus
  13. 13. 13Healthcare Systems Architecture/TU Delft, April 09, 2008 Nix • Nix is a purely functional package manger • Installing/upgrading/removing package automatically (like others RPM, dpkg etc.) • Nix expression language, a domain specific language to describe how components are built • All dependencies are explicit, this yields: – Multiple versions of a package to be installed side-by-side – Ensures that dependency specifications are complete – Supports atomic upgrades and rollbacks – “Niks” + UNIX = Nix • Nix deploys packages on local systems but not on distributed systems though
  14. 14. 14Healthcare Systems Architecture/TU Delft, April 09, 2008 Example Nix expression {stdenv, fetchsvnssh, apacheAnt, jdk, mysql_jdbc, smack, config, username, password }: stdenv.mkDerivation { name = "XMPPLogger"; src = fetchsvnssh { url = "gforge.natlab.research.philips.com/svnroot/public/sds2/branches/N ixDeploy/SDS2Applications/XMPPLogger"; md5 = "62401d706079cb61d3b7e0badc818a1d"; inherit username; inherit password; }; builder = ./builder.sh; inherit jdk mysql_jdbc smack config; buildInputs = [apacheAnt jdk smack config]; }
  15. 15. 15Healthcare Systems Architecture/TU Delft, April 09, 2008 Packages model rec { username = “user”; password = “secret”; config = import ../config { ... }; smack = ...; stdenv = ...; apacheAnt = ...; XMPPLogger = import ../SDS2Applications/XMPPLogger { inherit username password; inherit stdenv fetchsvnssh apacheAnt jdk; inherit smack mysql_jdbc; inherit config; }; ... }
  16. 16. Research / Healthcare Systems Architecture, September 3, 2008 Package Dependency Graph AssetTracker Service
  17. 17. 17Healthcare Systems Architecture/TU Delft, April 09, 2008 Nix deployment operations • Installing XMPP Logger: – nix-env -f pkgs.nix -i XMPPLogger • Uninstalling XMPP Logger: – nix-env -f pkgs.nix -e XMPPLogger • Upgrading XMPP Logger: – nix-env -f pkgs.nix -u XMPPLogger
  18. 18. 18Healthcare Systems Architecture/TU Delft, April 09, 2008 Disnix • An extension to Nix to allow distributed software deployment tasks • A webservice interface which allows remote access to the Nix store and Nix profiles • Introduces three model types to model a distributed system: – Services model – Infrastructure model – Distribution model • Uses a variant of the two-phase commit algorithm to allow distributed atomic commits
  19. 19. 19Healthcare Systems Architecture/TU Delft, April 09, 2008 Disnix overview
  20. 20. 20Healthcare Systems Architecture/TU Delft, April 09, 2008 Services model ME2MSService = { name = "ME2MSService"; pkg = pkgs.SDS2.webservices.ME2MSService; dependsOn = [ MELogService FloorPlanService ]; }; MULogService = { name = "MULogService"; pkg = pkgs.SDS2.webservices.MULogService; dependsOn = [ ME2MSService ]; }; MELogService = { name = “MELogService”; pkg = pkgs.SDS2.webservices.MELogService; dependsOn = [ ... ]; };
  21. 21. 21Healthcare Systems Architecture/TU Delft, April 09, 2008 Infrastructure model { dtk15 = { hostname = "dtk15"; targetEPR = http://dtk15:8080/axis2/services/DisnixService; tomcatPort = 8080; }; dt2d1 = { hostname = "dt2d1"; targetEPR = http://dt2d1:8080/axis2/services/DisnixService; tomcatPort = 8080; mysqlPort = 3306; }; }
  22. 22. 22Healthcare Systems Architecture/TU Delft, April 09, 2008 Distribution model {services, infrastructure}: [ { service = services.FloorPlanService; target = infrastructure.dtk15; } { service = services.ME2MSService; target = infrastructure.dtk15; } { service = services.MELogService; target = infrastructure.dt2d1; } { service = services.MULogService; target = infrastructure.dtk15; } ... ]
  23. 23. 23Healthcare Systems Architecture/TU Delft, April 09, 2008 Distributed atomic commits • Commit-request phase: – Build all components on the coordinator machine – Transfer the closures to the cohort machines through the webservice interface • Request phase, on each cohort: – Install component in profile – Activate the component
  24. 24. 24Healthcare Systems Architecture/TU Delft, April 09, 2008 Conclusion • We have adapted and modeled the SDS2 system in Nix expressions to make it automatically deployable • We extended the Nix approach of software deployment of single system to distributed systems • We have demonstrated that we can deploy SDS2 in a distributed environment
  25. 25. 25Healthcare Systems Architecture/TU Delft, April 09, 2008 Future work • Dynamic distribution based on Quality of Service models – Reliability by reducing the inter-dependencies • Symmetric build and deliver parts • Support for heterogeneous environments, example: – Linux coordinator – Windows/FreeBSD/Linux based network • Support for other types of distributed systems with other protocols • Investigate development constraints
  26. 26. Research / Healthcare Systems Architecture, September 3, 2008 MySQL database SDS2AssetTracker EMLogService HIBService MELogService XMPPGenerator XMPPLogger Ejabberd SDS2Utilisation FloorplanService ME2MSService MULogService EventMerger DemoPortal VirtualBox/NixOSVirtualBox/NixOS nbu5 5 disnix VirtualBox/NixOS SDS2 Deployment Demo Initial deployment state Deployment over two machines Garbage collect to initial state

×