Automated Deployment of a Heterogeneous Service-Oriented Sys



Similar documents
How To Write A Distributed Deployment System On Nix (Programming)

Automated Deployment of a Heterogeneous Service-Oriented System

A Reference Architecture for Distributed Software Deployment

The Nix project. Sander van der Burg. June 24, Delft University of Technology, EEMCS, Department of Software Technology

Using NixOS for declarative deployment and testing

A Reference Architecture for Distributed Software Deployment

Hospital Software Network - A Model For Success

Service Configuration Management

Service Configuration Management

The Nix Build Farm: A Declarative Approach to Continuous Integration

Programming on the Web(CSC309F) Tutorial: Servlets && Tomcat TA:Wael Aboelsaadat

Document management and exchange system supporting education process

Pull Deployment of Services

Testing on the other side of the pendulum

eservices for Hospital Equipment

Distributed Objects and Components

Middleware Lou Somers

ZeroTurnaround License Server User Manual 1.4.0

CrownPeak Playbook CrownPeak Hosting with PHP

3. Where can I obtain the Service Pack 5 software?

Deploying Business Virtual Appliances on Open Source Cloud Computing

Hydra: A Declarative Approach to Continuous Integration 1

Creating Value through Innovation MAGENTO 1.X TO MAGENTO 2.0 MIGRATION

Requirements for Software Deployment Languages and Schema

Tool-Assisted Knowledge to HL7 v3 Message Translation (TAMMP) Installation Guide December 23, 2009

ASP.NET: THE NEW PARADIGM FOR WEB APPLICATION DEVELOPMENT

How To Install Storegrid Server On Linux On A Microsoft Ubuntu 7.5 (Amd64) Or Ubuntu (Amd86) (Amd77) (Orchestra) (For Ubuntu) (Permanent) (Powerpoint

Preface. Motivation for this Book

EWeb: Highly Scalable Client Transparent Fault Tolerant System for Cloud based Web Applications

SECURITY DOCUMENT. BetterTranslationTechnology

Purely Functional System Configuration Management

Programming IoT Gateways With macchina.io

Datzilla. Error Reporting and Tracking for NOAA Data

NUST School of Electrical Engineering and Computer Science KTH Applied Information Security Lab. Installation Manual

File S1: Supplementary Information of CloudDOE

SOSFTP Managed File Transfer

FreeSB Installation Guide 1. Introduction Purpose

UNICORE REGISTRY MANUAL

Project Orwell: Distributed Document Integrity Verification

A Monitored Student Testing Application Using Cloud Computing

SnapLogic Sidekick Guide

Managing and Maintaining Windows Server 2008 Servers

Migration and Developer Productivity Solutions Cloud, Mobile and Web Development Workshop

Using the Adobe Access Server for Protected Streaming

JAMF Software Server Installation and Configuration Guide for Windows. Version 9.3

Google Web Toolkit (GWT) Architectural Impact on Enterprise Web Application

Enterprise Application Development In Java with AJAX and ORM

1. Introduction What is Slice? Background Why Slice? Purpose of this Document Intended Audience...

Kony MobileFabric. Sync Windows Installation Manual - WebSphere. On-Premises. Release 6.5. Document Relevance and Accuracy

The Monitis Monitoring Agent ver. 1.2

TDAQ Analytics Dashboard

Modeling Web Applications Using Java And XML Related Technologies

A standards-based approach to application integration

Dell One Identity Cloud Access Manager How to Develop OpenID Connect Apps

Revolution R Enterprise DeployR 7.1 Installation Guide for Windows

Nix: A Safe and Policy-Free System for Software Deployment

Rally Installation Guide

White Paper: Why Upgrade from WebSphere Application Server (WAS) v7 to v8.x?

Migration and Building of Data Centers in IBM SoftLayer with the RackWare Management Module

Usage Tracking for IBM InfoSphere Business Glossary

JAMF Software Server Installation and Configuration Guide for Linux. Version 9.2

G-Monitor: Gridbus web portal for monitoring and steering application execution on global grids

Course Descriptions. preparation.

Web Services for Management Perl Library VMware ESX Server 3.5, VMware ESX Server 3i version 3.5, and VMware VirtualCenter 2.5

8912A: Configuration & Customization in Microsoft Dynamics CRM 4.0

How To Understand The Architecture Of An Ulteo Virtual Desktop Server Farm

SharePoint 2013 PerformancePoint Services

LAMP [Linux. Apache. MySQL. PHP] Industrial Implementations Module Description

SharePoint 2013 Business Intelligence

Course: SharePoint 2013 Business Intelligence

USE OF PYTHON AS A SATELLITE OPERATIONS AND TESTING AUTOMATION LANGUAGE

Detailed Design Report

App Central: Developer's Guide. For APKG 2.0

How To Write A Web Server In Javascript

Oracle EXAM - 1Z Oracle Weblogic Server 11g: System Administration I. Buy Full Product.

How To Monitor A Server With Zabbix

*Described in the Release Notes. Generally this step will be performed by the admin end-users.

ITG Software Engineering

JAMF Software Server Installation and Configuration Guide for OS X. Version 9.2

Installation documentation for Ulteo Open Virtual Desktop

SharePoint 2013 PerformancePoint Services Course 55057; 3 Days

Course MS55003A Microsoft SharePoint 2010 Business Intelligence Services

DreamFactory & Modus Create Case Study

COMPASS Database Work in 2014/15

Ulteo Open Virtual Desktop Installation

Evaluation. Chapter 1: An Overview Of Ruby Rails. Copy. 6) Static Pages Within a Rails Application

Developers Guide for the Traffic Measurement Data Visualization Tool

Service Computing: Basics Monica Scannapieco

A Case Study in Integrated Quality Assurance for Performance Management Systems

AngularJS, Javascript, Prototype-based OO concept, RESTful Design Pattern, GWT, HTML5, Database.

JAMF Software Server Installation and Configuration Guide for OS X. Version 9.0

Computer Science Course Descriptions Page 1

Automatic Configuration of Slave Nameservers (BIND only)

OpenPaaS Le réseau social d'entreprise

Operations and Monitoring with Spring

visual interface dependency or relationship model of systems workflow engine comparator function poller

INTRODUCTION TO CLOUD COMPUTING CEN483 PARALLEL AND DISTRIBUTED SYSTEMS

OBIEE Cloning. Cloning the OBIEE 11g database migration to a new host. Ashok Thiyagarajan ADVANS MARLBOROUGH, MA AND CHENNAI, INDIA

Release notes. Symantec Event Manager for Firewall. What s new. System requirements

Transcription:

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

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

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

Service Development Support System (SDS2)

Service Development Support System (SDS2) 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

SDS2: Utilisation Service

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

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

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

SDS2: Distribution

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

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

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

Challenges We do not exactly know what the dependencies of a service are: Difficult to upgrade reliably Difficult to upgrade efficiently

Challenges Upgrading is not atomic: A user can observe that the system is changing While upgrading certain features may become inaccessible

Challenges Deploying in heterogeneous networks is even more complex.

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

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

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

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"; };... }

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.

Distribution model {infrastructure}: { mobileeventlogs = [ infrastructure.test1 ]; MELogService = [ infrastructure.test2 ]; SDS2AssetTracker = [ infrastructure.test1 infrastructure.test2 ];... } Maps services to machines

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

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

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

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

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

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

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

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

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)

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)

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

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

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

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