SlideShare a Scribd company logo
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
Service Oriented Computing
The Service Oriented Computing (SOC) paradigm is very popular
to build distributed applications.
Sander van der Burg, Eelco Dolstra Automated Deployment
Service Development Support System (SDS2)
Philips has developed a service oriented architecture for Asset
Tracking & Utilisation services in a hospital environment.
Service Development Support System (SDS2)
Motivating example throughout the paper
Sander van der Burg, Eelco Dolstra Automated Deployment
Service Development Support System (SDS2)
Sander van der Burg, Eelco Dolstra Automated Deployment
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 into
something useful?
SDS2: Architecture
Sander van der Burg, Eelco Dolstra Automated Deployment
SDS2: Utilisation Service
Sander van der Burg, Eelco Dolstra Automated Deployment
SDS2: Technologies
MySQL: data storage
Ejabberd: messaging system for transmitting status and
location events
Java: implementation language
Apache Axis: for implementing web services
Google Web Toolkit: for implementing web application
front-ends
Sander van der Burg, Eelco Dolstra Automated Deployment
SDS2: Deployment
SDS2 must be eventually deployed, i.e. made available for use
Sander van der Burg, Eelco Dolstra Automated Deployment
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
SDS2: Distribution
Sander van der Burg, Eelco Dolstra Automated Deployment
SDS2: Deployment
Deploying a service oriented system such as SDS2 is very difficult!
Sander van der Burg, Eelco Dolstra Automated Deployment
Challenges
Deploying is labourious:
Time consuming. Deploying SDS2 takes several hours for a
single machine
Subject to errors. Because it is performed manually
Complexity is proportional to number of machines in the
network
Sander van der Burg, Eelco Dolstra Automated Deployment
Challenges
Deployment steps must be performed in the right order:
For a web service providing data from a database, the
database must be activated first
If activated in the wrong order, data may be inaccessible
Sander van der Burg, Eelco Dolstra Automated Deployment
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
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
Challenges
Deploying in heterogeneous networks is even more complex.
Sander van der Burg, Eelco Dolstra Automated Deployment
Challenges
Existing deployment tools have various limitations:
Designed for specific component technologies (requires to
exclusively use one type of language/implementation):
Enterprise Java Beans
OSGi
Embedded systems
Designed for specific environments:
GoDIET: Designed for the DIET grid computing platform
CODEWAN: Ad-hoc networks
Generic approaches (lack desirable non-functional properties):
Software Dock: no dependency-completeness, atomic
upgrading
TACOMA: no dependency-completeness, atomic upgrading
Sander van der Burg, Eelco Dolstra Automated Deployment
Disnix
Distributed deployment extension for the Nix package
manager
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
Disnix
$ disnix-env -s services.nix -i infrastructure.nix -d distribution.nix
Sander van der Burg, Eelco Dolstra Automated Deployment
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
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 and
capabilities.
Sander van der Burg, Eelco Dolstra Automated Deployment
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
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
Building services
Every component built from source code is stored in the Nix store:
/nix/store/y2ssvzcd86...-SDS2EventGenerator
Former part: y2ssvzcd86..., SHA256 hash code derived
from 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
Building services
/nix/store
nqapqr5cyk...-glibc-2.9
lib
libc.so.6
ccayqylscm...-jre-1.6.0 16
bin
java
n7s283c5yg...-SDS2Util
share
java
SDS2Util.jar
y2ssvzcd86...-SDS2EventGenerator
bin
SDS2EventGenerator
share
java
SDS2EventGenerator.jar
Sander van der Burg, Eelco Dolstra Automated Deployment
Building services
/nix/store
nqapqr5cyk...-glibc-2.9
lib
libc.so.6
ccayqylscm...-jre-1.6.0 16
bin
java
n7s283c5yg...-SDS2Util
share
java
SDS2Util.jar
y2ssvzcd86...-SDS2EventGenerator
bin
SDS2EventGenerator
share
java
SDS2EventGenerator.jar
Sander van der Burg, Eelco Dolstra Automated Deployment
Transferring closures
Copy services and intra-dependencies to target machines in
the network
Only components missing on target machines are transferred
Always safe. Files are never overwritten/removed
Sander van der Burg, Eelco Dolstra Automated Deployment
Transition phase
Inter-dependency graph is derived from specifications
Deactivate obsolete services (none, if activating new
configuration)
Activate new services
Derive order and dependencies from dependency-graph
Sander van der Burg, Eelco Dolstra Automated Deployment
Service activation
Every service has a type: mysql-database,
tomcat-webapplication, process, ...
Types are attached to external processes, which take 2
arguments
activate or deactivate
Nix store component
Infrastructure model properties are passed as environment
variables
Sander van der Burg, Eelco Dolstra Automated Deployment
Atomic upgrading
Two-phase commit protocol mapped onto Nix primitives
Commit-request-phase (distribution phase):
Build sources
Transfer service closures
Commit-phase (transition phase):
Deactivating/activating services
Optionally block/queue connections from end-users
Sander van der Burg, Eelco Dolstra Automated Deployment
Atomic upgrading
In case of failure during commit-request: system is not
affected
No files overwritten
Will be removed by garbage collector
In case of failure during commit:
Rollback (transition to previous configuration)
Sander van der Burg, Eelco Dolstra Automated Deployment
Results
We have created deployment models for SDS2
Used to atomatically deploy SDS2 in a network of 4 32-bit
Linux and 4 64-bit Linux machines
Deployment takes minutes for a single machine. For each
additional machine a couple of minutes.
Upgrading only took seconds in most cases (only changed
parts were replaced)
Sander van der Burg, Eelco Dolstra Automated Deployment
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 is
necessary
Upgrading is reliable; we always know and include the
prerequisites
Sander van der Burg, Eelco Dolstra Automated Deployment
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
Conclusion and future work
Conclusion:
With Disnix we can automatically, efficiently and reliably
deploy service oriented systems similar to SDS2 in
heterogeneous environments
Future work:
Support dynamic migration of database (and other mutable
state)
Experimenting in larger networks
More investigation in upgrading web applications
Sander van der Burg, Eelco Dolstra Automated Deployment
Questions
Disnix and other related Nix software can be found at:
http://nixos.org
Any questions?
Sander van der Burg, Eelco Dolstra Automated Deployment

More Related Content

PDF
Dell EMC validates your virtualized Genetec video management system before it...
PPS
Sioux Hot-or-Not: The future of Linux (Alan Cox)
PDF
Model-driven Distributed Software Deployment
PDF
A Generic Approach for Deploying and Upgrading Mutable Software Components
PPTX
Simplifying Multi-User SOLIDWORKS Implementations
PDF
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
PDF
OSSA17 - Live patch, VMI, Security Mgmt (50 mins, no embedded demos)
PPTX
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...
Dell EMC validates your virtualized Genetec video management system before it...
Sioux Hot-or-Not: The future of Linux (Alan Cox)
Model-driven Distributed Software Deployment
A Generic Approach for Deploying and Upgrading Mutable Software Components
Simplifying Multi-User SOLIDWORKS Implementations
XPDDS19 Keynote: Xen Project Weather Report 2019 - Lars Kurth, Director of Op...
OSSA17 - Live patch, VMI, Security Mgmt (50 mins, no embedded demos)
OSSJP/ALS19: The Road to Safety Certification: How the Xen Project is Making...

What's hot (20)

PDF
OSSA17 - Mixed License FOSS Projects
PPTX
SDN and NFV: Friends or Enemies
PDF
PDF
Dpdk Validation - Liu, Yong
PDF
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
PPTX
Horizon View 7
PPT
Multitenant storage-scale11x
PDF
ZD&T Survival Kit
PDF
Citrix Day 2014: XenApp / XenDesktop 7.6
PDF
XPDDS19 Keynote: Unikraft Weather Report
PDF
Dell EMC validates your Genetec video management system before it reaches you...
PDF
SDN, Network Virtualization and the Software Defined Data Center – Brad Hedlund
PPTX
Network Design patters with Docker
PDF
Issnip Presentation
PDF
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
PPTX
Q Con New York 2015 Presentation - Conjur
PDF
Programming The Real World
PDF
BMC: Bare Metal Container @Open Source Summit Japan 2017
PDF
Understanding network and service virtualization
PDF
Introduction To SPOT
OSSA17 - Mixed License FOSS Projects
SDN and NFV: Friends or Enemies
Dpdk Validation - Liu, Yong
XPDDS19: Client Virtualization Toolstack in Go - Nick Rosbrook & Brendan Kerr...
Horizon View 7
Multitenant storage-scale11x
ZD&T Survival Kit
Citrix Day 2014: XenApp / XenDesktop 7.6
XPDDS19 Keynote: Unikraft Weather Report
Dell EMC validates your Genetec video management system before it reaches you...
SDN, Network Virtualization and the Software Defined Data Center – Brad Hedlund
Network Design patters with Docker
Issnip Presentation
XPDDS19 Keynote: Xen in Automotive - Artem Mygaiev, Director, Technology Solu...
Q Con New York 2015 Presentation - Conjur
Programming The Real World
BMC: Bare Metal Container @Open Source Summit Japan 2017
Understanding network and service virtualization
Introduction To SPOT
Ad

Viewers also liked (7)

PDF
A Self-Adaptive Deployment Framework for Service-Oriented Systems
PPTX
Broken Linux Performance Tools 2016
PDF
Linux Performance Analysis: New Tools and Old Secrets
PDF
Velocity 2015 linux perf tools
PDF
Linux Profiling at Netflix
PDF
Linux Systems Performance 2016
PDF
BPF: Tracing and more
A Self-Adaptive Deployment Framework for Service-Oriented Systems
Broken Linux Performance Tools 2016
Linux Performance Analysis: New Tools and Old Secrets
Velocity 2015 linux perf tools
Linux Profiling at Netflix
Linux Systems Performance 2016
BPF: Tracing and more
Ad

Similar to Automated Deployment of Hetergeneous Service-Oriented System (20)

PDF
Software Deployment in a Dynamic Cloud
PDF
Deploying .NET services with Disnix
PDF
Pull Deployment of Services
PDF
Deploying (micro)services with Disnix
PPTX
SOUG_Deployment__Automation_DB
PDF
The Nix project
DOC
Vijay_Teekinavar_Kallesh
PDF
Webinar on deployment automation Xebialabs - 15 sept 2010
PDF
A Reference Architecture for Distributed Software Deployment
PDF
Pull Deployment of Services: Introduction, Progress and Challenges
PDF
A Reference Architecture for Distributed Software Deployment
PDF
Automating Mendix application deployments with Nix
KEY
SydPHP May 2012 - Deployment
PPTX
Unified device management_the_royal_albert_hall_v4_public
PDF
Using NixOS for declarative deployment and testing
PDF
Creating a dynamic software deployment solution using free/libre software
PDF
Application deployment automation (XebiaLabs)
DOC
DaveSailors-resume-v9.6.8.save
PDF
Model-driven Distributed Software Deployment
PDF
How devops exhausts itself, and what will happen next
Software Deployment in a Dynamic Cloud
Deploying .NET services with Disnix
Pull Deployment of Services
Deploying (micro)services with Disnix
SOUG_Deployment__Automation_DB
The Nix project
Vijay_Teekinavar_Kallesh
Webinar on deployment automation Xebialabs - 15 sept 2010
A Reference Architecture for Distributed Software Deployment
Pull Deployment of Services: Introduction, Progress and Challenges
A Reference Architecture for Distributed Software Deployment
Automating Mendix application deployments with Nix
SydPHP May 2012 - Deployment
Unified device management_the_royal_albert_hall_v4_public
Using NixOS for declarative deployment and testing
Creating a dynamic software deployment solution using free/libre software
Application deployment automation (XebiaLabs)
DaveSailors-resume-v9.6.8.save
Model-driven Distributed Software Deployment
How devops exhausts itself, and what will happen next

More from Sander van der Burg (14)

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
Deploying NPM packages with the Nix package manager
PDF
The NixOS project and deploying systems declaratively
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
Techniques and lessons for improvement of deployment processes
PDF
Disnix: A toolset for distributed deployment
PDF
Deploying .NET applications with the Nix package manager
PDF
Atomic Upgrading of Distributed Systems
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
Deploying NPM packages with the Nix package manager
The NixOS project and deploying systems declaratively
Hydra: Continuous Integration and Testing for Demanding People: The Details
Hydra: Continuous Integration and Testing for Demanding People: The Basics
The Nix project
Techniques and lessons for improvement of deployment processes
Disnix: A toolset for distributed deployment
Deploying .NET applications with the Nix package manager
Atomic Upgrading of Distributed Systems
Model-driven Distributed Software Deployment laymen's talk

Recently uploaded (20)

PDF
Biophysics 2.pdffffffffffffffffffffffffff
PPTX
Introduction to Fisheries Biotechnology_Lesson 1.pptx
PPTX
Microbiology with diagram medical studies .pptx
PPTX
microscope-Lecturecjchchchchcuvuvhc.pptx
PPTX
BIOMOLECULES PPT........................
PPTX
ognitive-behavioral therapy, mindfulness-based approaches, coping skills trai...
PPTX
7. General Toxicologyfor clinical phrmacy.pptx
PPTX
The KM-GBF monitoring framework – status & key messages.pptx
PPTX
G5Q1W8 PPT SCIENCE.pptx 2025-2026 GRADE 5
PDF
CAPERS-LRD-z9:AGas-enshroudedLittleRedDotHostingaBroad-lineActive GalacticNuc...
PPTX
Comparative Structure of Integument in Vertebrates.pptx
PPTX
Protein & Amino Acid Structures Levels of protein structure (primary, seconda...
PPTX
Classification Systems_TAXONOMY_SCIENCE8.pptx
PPTX
2. Earth - The Living Planet earth and life
PPTX
Derivatives of integument scales, beaks, horns,.pptx
PPT
POSITIONING IN OPERATION THEATRE ROOM.ppt
PPTX
Introduction to Cardiovascular system_structure and functions-1
PPTX
2Systematics of Living Organisms t-.pptx
PPT
The World of Physical Science, • Labs: Safety Simulation, Measurement Practice
PDF
Formation of Supersonic Turbulence in the Primordial Star-forming Cloud
Biophysics 2.pdffffffffffffffffffffffffff
Introduction to Fisheries Biotechnology_Lesson 1.pptx
Microbiology with diagram medical studies .pptx
microscope-Lecturecjchchchchcuvuvhc.pptx
BIOMOLECULES PPT........................
ognitive-behavioral therapy, mindfulness-based approaches, coping skills trai...
7. General Toxicologyfor clinical phrmacy.pptx
The KM-GBF monitoring framework – status & key messages.pptx
G5Q1W8 PPT SCIENCE.pptx 2025-2026 GRADE 5
CAPERS-LRD-z9:AGas-enshroudedLittleRedDotHostingaBroad-lineActive GalacticNuc...
Comparative Structure of Integument in Vertebrates.pptx
Protein & Amino Acid Structures Levels of protein structure (primary, seconda...
Classification Systems_TAXONOMY_SCIENCE8.pptx
2. Earth - The Living Planet earth and life
Derivatives of integument scales, beaks, horns,.pptx
POSITIONING IN OPERATION THEATRE ROOM.ppt
Introduction to Cardiovascular system_structure and functions-1
2Systematics of Living Organisms t-.pptx
The World of Physical Science, • Labs: Safety Simulation, Measurement Practice
Formation of Supersonic Turbulence in the Primordial Star-forming Cloud

Automated Deployment of Hetergeneous Service-Oriented System

  • 1. 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
  • 2. Service Oriented Computing The Service Oriented Computing (SOC) paradigm is very popular to build distributed applications. Sander van der Burg, Eelco Dolstra Automated Deployment
  • 3. Service Development Support System (SDS2) Philips has developed a service oriented architecture for Asset Tracking & Utilisation services in a hospital environment. Service Development Support System (SDS2) Motivating example throughout the paper Sander van der Burg, Eelco Dolstra Automated Deployment
  • 4. Service Development Support System (SDS2) Sander van der Burg, Eelco Dolstra Automated Deployment
  • 5. 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 into something useful?
  • 6. SDS2: Architecture Sander van der Burg, Eelco Dolstra Automated Deployment
  • 7. SDS2: Utilisation Service Sander van der Burg, Eelco Dolstra Automated Deployment
  • 8. SDS2: Technologies MySQL: data storage Ejabberd: messaging system for transmitting status and location events Java: implementation language Apache Axis: for implementing web services Google Web Toolkit: for implementing web application front-ends Sander van der Burg, Eelco Dolstra Automated Deployment
  • 9. SDS2: Deployment SDS2 must be eventually deployed, i.e. made available for use Sander van der Burg, Eelco Dolstra Automated Deployment
  • 10. 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
  • 11. SDS2: Distribution Sander van der Burg, Eelco Dolstra Automated Deployment
  • 12. SDS2: Deployment Deploying a service oriented system such as SDS2 is very difficult! Sander van der Burg, Eelco Dolstra Automated Deployment
  • 13. Challenges Deploying is labourious: Time consuming. Deploying SDS2 takes several hours for a single machine Subject to errors. Because it is performed manually Complexity is proportional to number of machines in the network Sander van der Burg, Eelco Dolstra Automated Deployment
  • 14. Challenges Deployment steps must be performed in the right order: For a web service providing data from a database, the database must be activated first If activated in the wrong order, data may be inaccessible Sander van der Burg, Eelco Dolstra Automated Deployment
  • 15. 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
  • 16. 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
  • 17. Challenges Deploying in heterogeneous networks is even more complex. Sander van der Burg, Eelco Dolstra Automated Deployment
  • 18. Challenges Existing deployment tools have various limitations: Designed for specific component technologies (requires to exclusively use one type of language/implementation): Enterprise Java Beans OSGi Embedded systems Designed for specific environments: GoDIET: Designed for the DIET grid computing platform CODEWAN: Ad-hoc networks Generic approaches (lack desirable non-functional properties): Software Dock: no dependency-completeness, atomic upgrading TACOMA: no dependency-completeness, atomic upgrading Sander van der Burg, Eelco Dolstra Automated Deployment
  • 19. Disnix Distributed deployment extension for the Nix package manager 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
  • 20. Disnix $ disnix-env -s services.nix -i infrastructure.nix -d distribution.nix Sander van der Burg, Eelco Dolstra Automated Deployment
  • 21. 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
  • 22. 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 and capabilities. Sander van der Burg, Eelco Dolstra Automated Deployment
  • 23. 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
  • 24. 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
  • 25. Building services Every component built from source code is stored in the Nix store: /nix/store/y2ssvzcd86...-SDS2EventGenerator Former part: y2ssvzcd86..., SHA256 hash code derived from 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
  • 28. Transferring closures Copy services and intra-dependencies to target machines in the network Only components missing on target machines are transferred Always safe. Files are never overwritten/removed Sander van der Burg, Eelco Dolstra Automated Deployment
  • 29. Transition phase Inter-dependency graph is derived from specifications Deactivate obsolete services (none, if activating new configuration) Activate new services Derive order and dependencies from dependency-graph Sander van der Burg, Eelco Dolstra Automated Deployment
  • 30. Service activation Every service has a type: mysql-database, tomcat-webapplication, process, ... Types are attached to external processes, which take 2 arguments activate or deactivate Nix store component Infrastructure model properties are passed as environment variables Sander van der Burg, Eelco Dolstra Automated Deployment
  • 31. Atomic upgrading Two-phase commit protocol mapped onto Nix primitives Commit-request-phase (distribution phase): Build sources Transfer service closures Commit-phase (transition phase): Deactivating/activating services Optionally block/queue connections from end-users Sander van der Burg, Eelco Dolstra Automated Deployment
  • 32. Atomic upgrading In case of failure during commit-request: system is not affected No files overwritten Will be removed by garbage collector In case of failure during commit: Rollback (transition to previous configuration) Sander van der Burg, Eelco Dolstra Automated Deployment
  • 33. Results We have created deployment models for SDS2 Used to atomatically deploy SDS2 in a network of 4 32-bit Linux and 4 64-bit Linux machines Deployment takes minutes for a single machine. For each additional machine a couple of minutes. Upgrading only took seconds in most cases (only changed parts were replaced) Sander van der Burg, Eelco Dolstra Automated Deployment
  • 34. 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 is necessary Upgrading is reliable; we always know and include the prerequisites Sander van der Burg, Eelco Dolstra Automated Deployment
  • 35. 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
  • 36. Conclusion and future work Conclusion: With Disnix we can automatically, efficiently and reliably deploy service oriented systems similar to SDS2 in heterogeneous environments Future work: Support dynamic migration of database (and other mutable state) Experimenting in larger networks More investigation in upgrading web applications Sander van der Burg, Eelco Dolstra Automated Deployment
  • 37. Questions Disnix and other related Nix software can be found at: http://nixos.org Any questions? Sander van der Burg, Eelco Dolstra Automated Deployment