15
1 A Flexible and Secure Deployment Framework for Distributed Applications Alan Dearle, Graham Kirby, Andrew McCarthy and Juan Carlos Diaz y Carballo School of Computer Science University of St Andrews, North Haugh, St Andrews, Fife KY16 9SS, Scotland {al, graham, ajm, jcd}@dcs.st-and.ac.uk

A Flexible and Secure Deployment Framework for Distributed Applications

Embed Size (px)

DESCRIPTION

A Flexible and Secure Deployment Framework for Distributed Applications. Alan Dearle, Graham Kirby, Andrew McCarthy and Juan Carlos Diaz y Carballo School of Computer Science University of St Andrews, North Haugh, St Andrews, Fife KY16 9SS, Scotland {al, graham, ajm, jcd}@dcs.st-and.ac.uk. - PowerPoint PPT Presentation

Citation preview

Page 1: A Flexible and Secure Deployment Framework for Distributed Applications

1

A Flexible and Secure Deployment Framework for

Distributed Applications

Alan Dearle, Graham Kirby, Andrew McCarthyand Juan Carlos Diaz y Carballo

School of Computer ScienceUniversity of St Andrews,North Haugh, St Andrews,Fife KY16 9SS, Scotland

{al, graham, ajm, jcd}@dcs.st-and.ac.uk

Page 2: A Flexible and Secure Deployment Framework for Distributed Applications

2

Overview

■ This paper describes an implemented system which is designed to support the deployment of applications offering distributed services, comprising a number of distributed components.

Page 3: A Flexible and Secure Deployment Framework for Distributed Applications

3

Requirements■ An architectural description of:

software components hosts Interconnections

■ The ability to enact the architectural description: the ability to install and execute code on remote hosts a security mechanism

■ Support for component implementation using standard programming languages and appropriate programming models

■ The ability for components to interface with off-the-shelf components already deployed

Page 4: A Flexible and Secure Deployment Framework for Distributed Applications

4

Cingal Computational ModelThe bundle is the only user-level entity that may be executed in Cingal

Bundles are passive, consisting of a closure of code and data and a set of bindings naming the data.

■Each bundle carries an authentication element with attributes entity and signature. The entity identifies the bundle using a globally unique identifier (GUID) implemented via an MD5 key.

Bundles are passive, consisting of a closure of code and data and a set of bindings naming the data.

The data section of a bundle, known as its payload, comprises data with each datum having a unique id attribute. In the example the bundle carries one datum named ToDoList

It is common for bundles to carry other bundles in their payload, in order to install bundles in the store or fire them in other machines.

What about these?Cingal supports asynchronous message-oriented inter-machine communication via channels.

The machine channel is used to communicate with the machine infrastructure

The default channel is used to communicate with the bundle running within the machine

Cingal also supports named channels between entitiesUsing named channels, individual executing bundles are isolated from the specifics of what components are connected to them

This isolation permits channels to be connected, disconnected and reconnected independently of the running program

The connection manager is responsible for the management of named channels. It maintains an associative mapping of names to channels

Page 5: A Flexible and Secure Deployment Framework for Distributed Applications

5

A Cingal Bundle<BUNDLE>

<AUTHENTICATION entity="19730129df7447eb91509" signature="DQoew3rasZ…9wu9ySLGU"/>

<CODE entry="uk.ac.stand.cingal.Runner" type="java"><CLASS name="uk.ac.stand.cingal.Runner">

MamF2YS9sYW5nL09ia…</CLASS>

</CODE><DATA><DATUM id="ToDoList">

<TODOLIST><TASK guid="urn:cingal:325444" type="RUN"><DATUM id="StoreGuid">Lvcxk3wnAIUN…</DATUM></TASK></TODOLIST>

</DATUM></DATA></BUNDLE>

Page 6: A Flexible and Secure Deployment Framework for Distributed Applications

6

Application Deployment

■ The Cingal system provides the infrastructure for deploying components on arbitrary suitably enabled hosts.

■ However, additional infrastructure is needed to:➔ describe distributed architectures, and➔ deploy components from the description

■ This infrastructure comprises a description language, a deployment engine, and various mobile code documents and tools.

Page 7: A Flexible and Secure Deployment Framework for Distributed Applications

7

Deployment Descriptor Documents■ The description language is an XML schema■ Each DDD contains an architectural description of an application,

comprising: a set of autonomous software components the hosts on which they are to execute the interconnections between them

■ The deployment engine takes a DDD as input■ It deploys the components described in the DDD on the appropriate hosts■ These application components are pushed to the hosts as Cingal bundles■ The deployment engine also pushes various tools to the hosts to carry out

local deployment tasks in situ■ These tools are also transferred as Cingal bundles.

Page 8: A Flexible and Secure Deployment Framework for Distributed Applications

8

A DDD<DDD name="ServerAndCacheApplication">

<BUNDLES><BUNDLE name="Server" source="file://C:\bundles\server.xml" /><BUNDLE name="Cache" source="file://C:\bundles\cache.xml" />

</BUNDLES><HOSTS>

<HOST id="A" address="129.127.8.34" /><HOST id="B" address ="129.127.8.35" />

</HOSTS><DEPLOYMENTS>

<DEPLOYMENT name="PrimaryServer“bundle="Server" target="A" /><DEPLOYMENT name="CachingServer“bundle="Cache" target="B" />

</DEPLOYMENTS><CONNECTIONS>

<CONNECTION><SOURCE deployment="PrimaryServer"channel="DownstreamCache" /><DESTINATION deployment="CachingServer"channel="UpstreamServer" /></CONNECTION>

</CONNECTIONS></DDD>

Page 9: A Flexible and Secure Deployment Framework for Distributed Applications

9

Tools■ The three primary tools are: installers, runners and

wirers. An installer installs an arbitrary number of payload

bundles into the store of the destination thin server. A runner starts the execution of a number of bundles

previously installed in the store. A wirer is responsible for making concrete connections

between pairs of components using the named channel mechanism.

Page 10: A Flexible and Secure Deployment Framework for Distributed Applications

10

State Transitions■ Under control of these tools, each application

component on a thin server moves between the following states:

installed: when the bundle has been installed into the store

running: when the bundle has been fired and started computation; any reads or writes on named channels will block since they are not connected

wired: when the bundle has started computation and all named channels have been connected to other components

Page 11: A Flexible and Secure Deployment Framework for Distributed Applications

11

Installing

DDD

Page 12: A Flexible and Secure Deployment Framework for Distributed Applications

12

Running

Page 13: A Flexible and Secure Deployment Framework for Distributed Applications

13

Wiring

Page 14: A Flexible and Secure Deployment Framework for Distributed Applications

14

Related work – Deladas & Autonomic constraintset randc = constraintset {

// 1 router or client per hostforall host h in deployment (

card(instancesof Router in h) = 1 orcard(instancesof Client in h) = 1

)// every client connects to at least 1 routerforall Client c in deployment (

exists Router r in deployment (c.out connectsto r.cinc.in connectsto r.cout

))// every router connects to at most 2 clientsforall Router r in deployment (

card(Client c connectedto r) <= 2)// every router connects to at least 1 other routerforall Router r1 in deployment (

exists Router r2 in deployment (r1.rout connectsto r2.rinr1.rin connectsto r2.routr1 != r2

))// routers are reachable from each otherforall Router r1,r2 in deployment (

reachable(r1, r2))

}

Page 15: A Flexible and Secure Deployment Framework for Distributed Applications

15

Conclusions■ The Cingal infrastructure permits bundles to be deployed in arbitrary geographic locations from

conventional machines■ The runtime infrastructure abstracts over host-specific differences yielding a homogeneous run-

time environment for deployed components■ The store and binder support content addressed storage which permits code and data to be

stored with no possibility of ambiguous retrieval■ Deployment Description Documents support the specification of distributed architectures■ The deployment engine technology combined with the thin server infrastructure permits

distributed deployments to be realised into running instances of component based architectures■ The process of deployment from specification through to having a connected collection of running

components on distributed hosts is totally automated.■ A number of novel evolution mechanisms are provided by the architecture:

the ability to remotely update components flexible binding between components distributed architectures may be re-arranged by unbinding and reconnecting named

channels■ The security mechanisms provided by Cingal prevent unauthorised entities from firing bundles on

hosts on which they do not have privilege