Model-driven Distributed Software Deployment
Sander van der Burg
Delft University of Technology, EEMCS,
Department of Software Technology
Philips Research, Healthcare Systems Architecture,
Eindhoven
March 17, 2009
Sander van der Burg Model-driven Distributed Software Deployment
Software deployment
Sander van der Burg Model-driven Distributed Software Deployment
Software deployment
Software deployment is all of the activities that make a software
system available for use
Sander van der Burg Model-driven Distributed Software Deployment
Software deployment
Software deployment is all of the activities that make a software
system available for use
Building software components
Transfering components from producer site to consumer site
Installing components
Activating components
Upgrading components
Sander van der Burg Model-driven Distributed Software Deployment
Software deployment
A software deployment process is complex:
Sander van der Burg Model-driven Distributed Software Deployment
Software deployment
A software deployment process is complex:
A software system in modular and requires modules to make it
work (dependencies)
A software component requires the right version or variant of a
dependency, e.g. DLL-hell
A software system should be able to find its dependencies. e.g.
setting CLASSPATH in Java
Some software components require specific hardware, e.g.
Intel/PowerPC processor
Uninstalling should be safe. We only want to remove
unused/obsolete components.
Keeping the system up to date should be safe and atomic.
There could be a time window where the system is in a
inconsistent state.
Sander van der Burg Model-driven Distributed Software Deployment
Distributed systems
A system in which:
Components are distributed across different systems in a
network and work together to reach a common goal
Appears to a user as one logical system
Example: Web application using a webserver and a database
Sander van der Burg Model-driven Distributed Software Deployment
Distributed systems
The software deployment process of a distributed system is more
challenging
Dependencies on components on the same systems:
intra-dependencies
Dependencies on components running on different systems:
inter-dependencies
Upgrading cannot be done atomically
Is expensive and tedious, if done manually:
Requires up-to-date documentation and people with skills
Time-consuming, error prone
Sander van der Burg Model-driven Distributed Software Deployment
Distributed systems
Sander van der Burg Model-driven Distributed Software Deployment
Hospital environments
Sander van der Burg Model-driven Distributed Software Deployment
Vision on software deployment
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
Sander van der Burg Model-driven Distributed Software Deployment
Vision on software deployment
Sander van der Burg Model-driven Distributed Software Deployment
Approach
We already have:
Nix deployment system
Case study: Service Development Support System (SDS2)
In this thesis project:
Disnix deployment system
Make SDS2 deployable with Disnix
Sander van der Burg Model-driven Distributed Software Deployment
Nix deployment system
Is a package manager, like RPM
Unique features:
Stores components in isolation in a Nix store
Builds packages from Nix expressions
Upgrading is atomic
Sander van der Burg Model-driven Distributed Software Deployment
Dependency specifications
Conventional package managers e.g. RPM have nominal
dependency specifications:
Example: Firefox
Requires: gtk+ >= 2.12.8
Sander van der Burg Model-driven Distributed Software Deployment
Dependency specifications
Conventional package managers e.g. RPM have nominal
dependency specifications:
Example: Firefox
Requires: gtk+ >= 2.12.8
What if gtk+ is compiled with GCC 3.3 and Firefox with GCC
4.2?
Sander van der Burg Model-driven Distributed Software Deployment
Dependency specifications
Conventional package managers e.g. RPM have nominal
dependency specifications:
Example: Firefox
Requires: gtk+ >= 2.12.8
What if gtk+ is compiled with GCC 3.3 and Firefox with GCC
4.2?
Components cannot be linked together due to a different ABI.
Sander van der Burg Model-driven Distributed Software Deployment
The Nix store
d8imsim3zs87dskyvmgdd24dn9ak4nbp-gtk+-2.12.8
Sander van der Burg Model-driven Distributed Software Deployment
The Nix store
d8imsim3zs87dskyvmgdd24dn9ak4nbp-gtk+-2.12.8
gtk+-2.12.8. Name of the component
d8imsim3zs87dskyvmgdd24dn9ak4nbp: SHA 256 hash code
based on all inputs such as the used to build the component
such as the source code of gtk+, used compiler, linker.
All components are stored in the Nix store, which is usually
/nix/store.
Components can be stored next to each other because they do
not share the same name if the inputs differ.
Sander van der Burg Model-driven Distributed Software Deployment
The Nix store
/nix/store
l9w6773m1msy...-openssh-4.6p1
bin
ssh
sbin
sshd
smkabrbibqv7...-openssl-0.9.8e
lib
libssl.so.0.9.8
c6jbqm2mc0a7...-zlib-1.2.3
lib
libz.so.1.2.3
im276akmsrhv...-glibc-2.5
lib
libc.so.6
Sander van der Burg Model-driven Distributed Software Deployment
Nix expressions
{stdenv, fetchsvn, apacheAnt, jdk, mysql_jdbc,
smack, config}:
stdenv.mkDerivation {
name = "XMPPLogger";
src = fetchsvn {
url = svn://gforge/.../SDS2Applications/XMPPLogger;
md5 = "62401d706079cb61d3b7e0badc818a1d";
};
builder = ./builder.sh;
inherit jdk mysql_jdbc smack config;
buildInputs = [apacheAnt jdk smack config];
}
Sander van der Burg Model-driven Distributed Software Deployment
Nix expressions
rec {
config = import ../config {
...
};
smack = ...;
stdenv = ...;
apacheAnt = ...;
jdk = ...;
XMPPLogger = import ../SDS2Applications/XMPPLogger {
inherit stdenv fetchsvn apacheAnt jdk;
inherit smack mysql_jdbc;
inherit config;
};
...
}
Sander van der Burg Model-driven Distributed Software Deployment
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
Sander van der Burg Model-driven Distributed Software Deployment
Service Development Support System (SDS2)
Developed at the Healthcare Systems Architecture department
of Philips Research
Asset management and utilization services for mobile medical
equipment
Service Oriented Architecture
Information as a service
Services could be distributed across different machines in the
network
Sander van der Burg Model-driven Distributed Software Deployment
Asset Tracker Service
Sander van der Burg Model-driven Distributed Software Deployment
Utilisation Service
Sander van der Burg Model-driven Distributed Software Deployment
Deployment View
Sander van der Burg Model-driven Distributed Software Deployment
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
Sander van der Burg Model-driven Distributed Software Deployment
Disnix Overview
Sander van der Burg Model-driven Distributed Software Deployment
Services model
let pkgs = ../top-level/pkgs.nix;
in
{
XMPPLogger = {
name = "XMPPLogger";
pkg = pkgs.SDS2.webservices.XMPPLogger;
dependsOn = [ EjabberdService MySQLService ];
};
MULogService = {
name = "MULogService";
pkg = pkgs.SDS2.webservices.MULogService;
dependsOn = [ ME2MSService ];
};
...
}
Sander van der Burg Model-driven Distributed Software Deployment
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;
};
}
Sander van der Burg Model-driven Distributed Software Deployment
Distribution model
{services, infrastructure}:
[
{ service = services.FloorPlanService;
target = infrastructure.dtk15; }
{ service = services.ME2MSService;
target = infrastructure.dtk15; }
{ service = services.MELogService;
target = infrastructure.dt2d1; }
{ service = services.XMPPLogger;
target = infrastructure.dtk15; }
...
]
Sander van der Burg Model-driven Distributed Software Deployment
Distributed upgrading
Commit-request phase:
Build all components on the coordinator machine
Transfer the closures to the cohort machines through the
webservice interface
If one of the cohorts fail: no undo operations are needed
Request phase, on each cohort:
Install component in profile
Activate the component
If one of the cohorts fail: rollback on every cohort
A proxy can be used to drain connections and block/queue
access during the transition
(Almost) atomic
Sander van der Burg Model-driven Distributed Software Deployment
Adapting SDS2
Sander van der Burg Model-driven Distributed Software Deployment
Adapting SDS2
Nix is known as the purely functional deployment model
The deployment model of Nix/Disnix is normative
We have to adapt systems to fit in the deployment model
(normalize) in order to make dynamic reconfiguration possible.
Sander van der Burg Model-driven Distributed Software Deployment
Adapting SDS2
Local deployment. Creating build scripts and Nix expressions
for SDS2 platform and infrastructure components.
Less strict inter-dependencies. Modifying SDS2 services to
reconnect in case of a network failure.
Dynamic binding. Implementing a lookup service which
provides locations of services. Modified SDS2 services to use
the lookup service for each request to another service.
Sander van der Burg Model-driven Distributed Software Deployment
Conclusions
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 systems to distributed systems
We identified design contraints to make a distributed system
deployable with Nix/Disnix
We have demonstrated that we can deploy SDS2 in a
distributed environment
Sander van der Burg Model-driven Distributed Software Deployment
Future work
Dynamic distribution based on Quality of Service models
Investigate more development constraints
Implementing atomic-commit without blocking
Support for heterogeneous environments, example:
Linux coordinator
Windows/FreeBSD/Linux based network
Support for other types of distributed systems with other
protocols
Security
Sander van der Burg Model-driven Distributed Software Deployment
Questions
Sander van der Burg Model-driven Distributed Software Deployment

More Related Content

PDF
A Generic Approach for Deploying and Upgrading Mutable Software Components
PDF
Continuous Delivery
PPTX
SDN 101: Software Defined Networking Course - Sameh Zaghloul/IBM - 2014
DOCX
Internship Report
PPTX
SDN and NFV: Friends or Enemies
PDF
Dev ops and safety critical systems
DOC
Srikanth_testing resume
PDF
Introduction to dev ops
A Generic Approach for Deploying and Upgrading Mutable Software Components
Continuous Delivery
SDN 101: Software Defined Networking Course - Sameh Zaghloul/IBM - 2014
Internship Report
SDN and NFV: Friends or Enemies
Dev ops and safety critical systems
Srikanth_testing resume
Introduction to dev ops

What's hot (20)

PDF
Packaging tool options
PPTX
Leveraging Analytics for DevOps
PDF
My first deployment pipeline
PPTX
Devops phase-1
PDF
Deployability
PDF
Securing deployment pipeline
PDF
Using Containers to More Effectively Manage DevOps Continuous Integration
PDF
SDN Service Provider use cases Network Function Virtualization (NFV)
PDF
Docker Application to Scientific Computing
PPTX
OpenStack Collaboration made in heaven with Heat, Mistral, Neutron and more..
PDF
Devops syllabus
PDF
Cloud continuous integration- A distributed approach using distinct services
PDF
Experience in teaching devops
PDF
DevOps Syllabus summer 2020
PPTX
Demystifying OpenStack for NFV
PDF
WWT Software-Defined Networking Guide
PDF
44CON & Ruxcon: SDN security
PPTX
DevOps Practices in a Nutshell
PPT
WinConnections Spring, 2011 - How to Securely Connect Remote Desktop Services...
PPTX
Kubernetes: A Top Notch Automation Solution
Packaging tool options
Leveraging Analytics for DevOps
My first deployment pipeline
Devops phase-1
Deployability
Securing deployment pipeline
Using Containers to More Effectively Manage DevOps Continuous Integration
SDN Service Provider use cases Network Function Virtualization (NFV)
Docker Application to Scientific Computing
OpenStack Collaboration made in heaven with Heat, Mistral, Neutron and more..
Devops syllabus
Cloud continuous integration- A distributed approach using distinct services
Experience in teaching devops
DevOps Syllabus summer 2020
Demystifying OpenStack for NFV
WWT Software-Defined Networking Guide
44CON & Ruxcon: SDN security
DevOps Practices in a Nutshell
WinConnections Spring, 2011 - How to Securely Connect Remote Desktop Services...
Kubernetes: A Top Notch Automation Solution
Ad

Viewers also liked (18)

PPTX
Software evaluation
PPT
Information Technology Assessment Powerpoint
PDF
Introduction to Data Science with H2O- Mountain View
PDF
H2O Design and Infrastructure with Matt Dowle
PDF
The Next Generation of Data Processing and Open Source
PDF
H2O Machine Learning and Kalman Filters for Machine Prognostics
PPTX
Migrating from Closed to Open Source - Fonda Ingram & Ken Sanford
PDF
H2O Big Join Slides
PDF
H20: A platform for big math
PPT
Technology assessment
PPT
Software Selection & Evaluation
PDF
Transform your Business with AI, Deep Learning and Machine Learning
PPTX
Apache Spark Model Deployment
PDF
Intro to Machine Learning with H2O and AWS
PPTX
Assessment ppt
PDF
Deep Learning through Examples
PDF
H2O AutoML roadmap - Ray Peck
PDF
Deep Water - GPU Deep Learning for H2O - Arno Candel
Software evaluation
Information Technology Assessment Powerpoint
Introduction to Data Science with H2O- Mountain View
H2O Design and Infrastructure with Matt Dowle
The Next Generation of Data Processing and Open Source
H2O Machine Learning and Kalman Filters for Machine Prognostics
Migrating from Closed to Open Source - Fonda Ingram & Ken Sanford
H2O Big Join Slides
H20: A platform for big math
Technology assessment
Software Selection & Evaluation
Transform your Business with AI, Deep Learning and Machine Learning
Apache Spark Model Deployment
Intro to Machine Learning with H2O and AWS
Assessment ppt
Deep Learning through Examples
H2O AutoML roadmap - Ray Peck
Deep Water - GPU Deep Learning for H2O - Arno Candel
Ad

Similar to Model-driven Distributed Software Deployment (20)

PDF
A Reference Architecture for Distributed Software Deployment
PDF
Automated Deployment of Hetergeneous Service-Oriented System
PDF
Deploying .NET applications with the Nix package manager
PDF
Deploying (micro)services with Disnix
PDF
Techniques and lessons for improvement of deployment processes
PDF
A Reference Architecture for Distributed Software Deployment
PDF
The Nix project
PDF
Deploying .NET services with Disnix
PDF
The NixOS project and deploying systems declaratively
PPTX
DockerCon EU 2015: The Missing Piece: when Docker networking unleashing soft ...
PDF
Slide DevSecOps Microservices
PDF
VMworld 2013: NSX PCI Reference Architecture Workshop Session 3 - Operational...
PPTX
Simplifying SDN Networking Across Private and Public Clouds
PPTX
DockerCon - The missing piece : when Docker networking unleashes software arc...
PPTX
The missing piece : when Docker networking and services finally unleashes so...
PDF
Software Deployment in a Dynamic Cloud
PDF
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
PDF
The DevOps Paradigm
DOCX
Documentation
PDF
A Self-Adaptive Deployment Framework for Service-Oriented Systems
A Reference Architecture for Distributed Software Deployment
Automated Deployment of Hetergeneous Service-Oriented System
Deploying .NET applications with the Nix package manager
Deploying (micro)services with Disnix
Techniques and lessons for improvement of deployment processes
A Reference Architecture for Distributed Software Deployment
The Nix project
Deploying .NET services with Disnix
The NixOS project and deploying systems declaratively
DockerCon EU 2015: The Missing Piece: when Docker networking unleashing soft ...
Slide DevSecOps Microservices
VMworld 2013: NSX PCI Reference Architecture Workshop Session 3 - Operational...
Simplifying SDN Networking Across Private and Public Clouds
DockerCon - The missing piece : when Docker networking unleashes software arc...
The missing piece : when Docker networking and services finally unleashes so...
Software Deployment in a Dynamic Cloud
The DevOps paradigm - the evolution of IT professionals and opensource toolkit
The DevOps Paradigm
Documentation
A Self-Adaptive Deployment Framework for Service-Oriented Systems

More from Sander van der Burg (16)

PDF
The Monitoring Playground
PDF
nix-processmgmt: An experimental Nix-based process manager-agnostic framework
PDF
Using Nix and Docker as automated deployment solutions
PDF
Dysnomia: complementing Nix deployments with state deployment
PDF
Automating Mendix application deployments with Nix
PDF
Deploying NPM packages with the Nix package manager
PDF
Hydra: Continuous Integration and Testing for Demanding People: The Details
PDF
Hydra: Continuous Integration and Testing for Demanding People: The Basics
PDF
The Nix project
PDF
Using NixOS for declarative deployment and testing
PDF
Pull Deployment of Services
PDF
Disnix: A toolset for distributed deployment
PDF
Pull Deployment of Services: Introduction, Progress and Challenges
PDF
Atomic Upgrading of Distributed Systems
PDF
Model-driven Distributed Software Deployment
PDF
Model-driven Distributed Software Deployment laymen's talk
The Monitoring Playground
nix-processmgmt: An experimental Nix-based process manager-agnostic framework
Using Nix and Docker as automated deployment solutions
Dysnomia: complementing Nix deployments with state deployment
Automating Mendix application deployments with Nix
Deploying NPM packages with the Nix package manager
Hydra: Continuous Integration and Testing for Demanding People: The Details
Hydra: Continuous Integration and Testing for Demanding People: The Basics
The Nix project
Using NixOS for declarative deployment and testing
Pull Deployment of Services
Disnix: A toolset for distributed deployment
Pull Deployment of Services: Introduction, Progress and Challenges
Atomic Upgrading of Distributed Systems
Model-driven Distributed Software Deployment
Model-driven Distributed Software Deployment laymen's talk

Recently uploaded (20)

PPT
THE CELL THEORY AND ITS FUNDAMENTALS AND USE
PDF
Cosmology using numerical relativity - what hapenned before big bang?
PPTX
PMR- PPT.pptx for students and doctors tt
PPTX
Platelet disorders - thrombocytopenia.pptx
PPTX
Presentation1 INTRODUCTION TO ENZYMES.pptx
PPTX
A powerpoint on colorectal cancer with brief background
PDF
Worlds Next Door: A Candidate Giant Planet Imaged in the Habitable Zone of ↵ ...
PDF
Chapter 3 - Human Development Poweroint presentation
PDF
Communicating Health Policies to Diverse Populations (www.kiu.ac.ug)
PPT
1. INTRODUCTION TO EPIDEMIOLOGY.pptx for community medicine
PPT
LEC Synthetic Biology and its application.ppt
PPT
Enhancing Laboratory Quality Through ISO 15189 Compliance
PDF
Packaging materials of fruits and vegetables
PPT
Biochemestry- PPT ON Protein,Nitrogenous constituents of Urine, Blood, their ...
PPTX
LIPID & AMINO ACID METABOLISM UNIT-III, B PHARM II SEMESTER
PPTX
congenital heart diseases of burao university.pptx
PDF
The Future of Telehealth: Engineering New Platforms for Care (www.kiu.ac.ug)
PPTX
Substance Disorders- part different drugs change body
PDF
7.Physics_8_WBS_Electricity.pdfXFGXFDHFHG
PPTX
Preformulation.pptx Preformulation studies-Including all parameter
THE CELL THEORY AND ITS FUNDAMENTALS AND USE
Cosmology using numerical relativity - what hapenned before big bang?
PMR- PPT.pptx for students and doctors tt
Platelet disorders - thrombocytopenia.pptx
Presentation1 INTRODUCTION TO ENZYMES.pptx
A powerpoint on colorectal cancer with brief background
Worlds Next Door: A Candidate Giant Planet Imaged in the Habitable Zone of ↵ ...
Chapter 3 - Human Development Poweroint presentation
Communicating Health Policies to Diverse Populations (www.kiu.ac.ug)
1. INTRODUCTION TO EPIDEMIOLOGY.pptx for community medicine
LEC Synthetic Biology and its application.ppt
Enhancing Laboratory Quality Through ISO 15189 Compliance
Packaging materials of fruits and vegetables
Biochemestry- PPT ON Protein,Nitrogenous constituents of Urine, Blood, their ...
LIPID & AMINO ACID METABOLISM UNIT-III, B PHARM II SEMESTER
congenital heart diseases of burao university.pptx
The Future of Telehealth: Engineering New Platforms for Care (www.kiu.ac.ug)
Substance Disorders- part different drugs change body
7.Physics_8_WBS_Electricity.pdfXFGXFDHFHG
Preformulation.pptx Preformulation studies-Including all parameter

Model-driven Distributed Software Deployment

  • 1. Model-driven Distributed Software Deployment Sander van der Burg Delft University of Technology, EEMCS, Department of Software Technology Philips Research, Healthcare Systems Architecture, Eindhoven March 17, 2009 Sander van der Burg Model-driven Distributed Software Deployment
  • 2. Software deployment Sander van der Burg Model-driven Distributed Software Deployment
  • 3. Software deployment Software deployment is all of the activities that make a software system available for use Sander van der Burg Model-driven Distributed Software Deployment
  • 4. Software deployment Software deployment is all of the activities that make a software system available for use Building software components Transfering components from producer site to consumer site Installing components Activating components Upgrading components Sander van der Burg Model-driven Distributed Software Deployment
  • 5. Software deployment A software deployment process is complex: Sander van der Burg Model-driven Distributed Software Deployment
  • 6. Software deployment A software deployment process is complex: A software system in modular and requires modules to make it work (dependencies) A software component requires the right version or variant of a dependency, e.g. DLL-hell A software system should be able to find its dependencies. e.g. setting CLASSPATH in Java Some software components require specific hardware, e.g. Intel/PowerPC processor Uninstalling should be safe. We only want to remove unused/obsolete components. Keeping the system up to date should be safe and atomic. There could be a time window where the system is in a inconsistent state. Sander van der Burg Model-driven Distributed Software Deployment
  • 7. Distributed systems A system in which: Components are distributed across different systems in a network and work together to reach a common goal Appears to a user as one logical system Example: Web application using a webserver and a database Sander van der Burg Model-driven Distributed Software Deployment
  • 8. Distributed systems The software deployment process of a distributed system is more challenging Dependencies on components on the same systems: intra-dependencies Dependencies on components running on different systems: inter-dependencies Upgrading cannot be done atomically Is expensive and tedious, if done manually: Requires up-to-date documentation and people with skills Time-consuming, error prone Sander van der Burg Model-driven Distributed Software Deployment
  • 9. Distributed systems Sander van der Burg Model-driven Distributed Software Deployment
  • 10. Hospital environments Sander van der Burg Model-driven Distributed Software Deployment
  • 11. Vision on software deployment 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 Sander van der Burg Model-driven Distributed Software Deployment
  • 12. Vision on software deployment Sander van der Burg Model-driven Distributed Software Deployment
  • 13. Approach We already have: Nix deployment system Case study: Service Development Support System (SDS2) In this thesis project: Disnix deployment system Make SDS2 deployable with Disnix Sander van der Burg Model-driven Distributed Software Deployment
  • 14. Nix deployment system Is a package manager, like RPM Unique features: Stores components in isolation in a Nix store Builds packages from Nix expressions Upgrading is atomic Sander van der Burg Model-driven Distributed Software Deployment
  • 15. Dependency specifications Conventional package managers e.g. RPM have nominal dependency specifications: Example: Firefox Requires: gtk+ >= 2.12.8 Sander van der Burg Model-driven Distributed Software Deployment
  • 16. Dependency specifications Conventional package managers e.g. RPM have nominal dependency specifications: Example: Firefox Requires: gtk+ >= 2.12.8 What if gtk+ is compiled with GCC 3.3 and Firefox with GCC 4.2? Sander van der Burg Model-driven Distributed Software Deployment
  • 17. Dependency specifications Conventional package managers e.g. RPM have nominal dependency specifications: Example: Firefox Requires: gtk+ >= 2.12.8 What if gtk+ is compiled with GCC 3.3 and Firefox with GCC 4.2? Components cannot be linked together due to a different ABI. Sander van der Burg Model-driven Distributed Software Deployment
  • 18. The Nix store d8imsim3zs87dskyvmgdd24dn9ak4nbp-gtk+-2.12.8 Sander van der Burg Model-driven Distributed Software Deployment
  • 19. The Nix store d8imsim3zs87dskyvmgdd24dn9ak4nbp-gtk+-2.12.8 gtk+-2.12.8. Name of the component d8imsim3zs87dskyvmgdd24dn9ak4nbp: SHA 256 hash code based on all inputs such as the used to build the component such as the source code of gtk+, used compiler, linker. All components are stored in the Nix store, which is usually /nix/store. Components can be stored next to each other because they do not share the same name if the inputs differ. Sander van der Burg Model-driven Distributed Software Deployment
  • 21. Nix expressions {stdenv, fetchsvn, apacheAnt, jdk, mysql_jdbc, smack, config}: stdenv.mkDerivation { name = "XMPPLogger"; src = fetchsvn { url = svn://gforge/.../SDS2Applications/XMPPLogger; md5 = "62401d706079cb61d3b7e0badc818a1d"; }; builder = ./builder.sh; inherit jdk mysql_jdbc smack config; buildInputs = [apacheAnt jdk smack config]; } Sander van der Burg Model-driven Distributed Software Deployment
  • 22. Nix expressions rec { config = import ../config { ... }; smack = ...; stdenv = ...; apacheAnt = ...; jdk = ...; XMPPLogger = import ../SDS2Applications/XMPPLogger { inherit stdenv fetchsvn apacheAnt jdk; inherit smack mysql_jdbc; inherit config; }; ... } Sander van der Burg Model-driven Distributed Software Deployment
  • 23. 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 Sander van der Burg Model-driven Distributed Software Deployment
  • 24. Service Development Support System (SDS2) Developed at the Healthcare Systems Architecture department of Philips Research Asset management and utilization services for mobile medical equipment Service Oriented Architecture Information as a service Services could be distributed across different machines in the network Sander van der Burg Model-driven Distributed Software Deployment
  • 25. Asset Tracker Service Sander van der Burg Model-driven Distributed Software Deployment
  • 26. Utilisation Service Sander van der Burg Model-driven Distributed Software Deployment
  • 27. Deployment View Sander van der Burg Model-driven Distributed Software Deployment
  • 28. 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 Sander van der Burg Model-driven Distributed Software Deployment
  • 29. Disnix Overview Sander van der Burg Model-driven Distributed Software Deployment
  • 30. Services model let pkgs = ../top-level/pkgs.nix; in { XMPPLogger = { name = "XMPPLogger"; pkg = pkgs.SDS2.webservices.XMPPLogger; dependsOn = [ EjabberdService MySQLService ]; }; MULogService = { name = "MULogService"; pkg = pkgs.SDS2.webservices.MULogService; dependsOn = [ ME2MSService ]; }; ... } Sander van der Burg Model-driven Distributed Software Deployment
  • 31. 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; }; } Sander van der Burg Model-driven Distributed Software Deployment
  • 32. Distribution model {services, infrastructure}: [ { service = services.FloorPlanService; target = infrastructure.dtk15; } { service = services.ME2MSService; target = infrastructure.dtk15; } { service = services.MELogService; target = infrastructure.dt2d1; } { service = services.XMPPLogger; target = infrastructure.dtk15; } ... ] Sander van der Burg Model-driven Distributed Software Deployment
  • 33. Distributed upgrading Commit-request phase: Build all components on the coordinator machine Transfer the closures to the cohort machines through the webservice interface If one of the cohorts fail: no undo operations are needed Request phase, on each cohort: Install component in profile Activate the component If one of the cohorts fail: rollback on every cohort A proxy can be used to drain connections and block/queue access during the transition (Almost) atomic Sander van der Burg Model-driven Distributed Software Deployment
  • 34. Adapting SDS2 Sander van der Burg Model-driven Distributed Software Deployment
  • 35. Adapting SDS2 Nix is known as the purely functional deployment model The deployment model of Nix/Disnix is normative We have to adapt systems to fit in the deployment model (normalize) in order to make dynamic reconfiguration possible. Sander van der Burg Model-driven Distributed Software Deployment
  • 36. Adapting SDS2 Local deployment. Creating build scripts and Nix expressions for SDS2 platform and infrastructure components. Less strict inter-dependencies. Modifying SDS2 services to reconnect in case of a network failure. Dynamic binding. Implementing a lookup service which provides locations of services. Modified SDS2 services to use the lookup service for each request to another service. Sander van der Burg Model-driven Distributed Software Deployment
  • 37. Conclusions 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 systems to distributed systems We identified design contraints to make a distributed system deployable with Nix/Disnix We have demonstrated that we can deploy SDS2 in a distributed environment Sander van der Burg Model-driven Distributed Software Deployment
  • 38. Future work Dynamic distribution based on Quality of Service models Investigate more development constraints Implementing atomic-commit without blocking Support for heterogeneous environments, example: Linux coordinator Windows/FreeBSD/Linux based network Support for other types of distributed systems with other protocols Security Sander van der Burg Model-driven Distributed Software Deployment
  • 39. Questions Sander van der Burg Model-driven Distributed Software Deployment