A Formal Framework for Component Deployment Y. David Liu Scott F. Smith Johns Hopkins University OOPSLA'06, Portland, Oregon
A Menagerie of Deployment Systems CLI Assemblies InstallShield JSR 277 OSGi RPM Dpkg EJB Manifests Portage Bazaar CORBA D&C RubyGems CTAN CPAN
Foundations? CLI Assemblies InstallShield JSR 277 OSGi RPM ? Dpkg EJB Manifests Portage Bazaar CORBA D&C RubyGems CTAN CPAN
An Analogy: Programming Languages Fortran Pascal Smalltalk Java Lisp Perl C++ Scala C# Scheme C Haskel ML
An Analogy: Foundations of Languages Fortran Pascal Smalltalk Java Lisp λ Calculus Object Calculi Perl C++ etc. Scala C# Scheme C Haskel ML
This Work CLI Assemblies InstallShield JSR 277 OSGi RPM Application Buildbox Dpkg EJB Manifests Portage Bazaar CORBA D&C RubyGems CTAN CPAN
This Work An abstract, platform-independent, vendor- independent study of component deployment ● Designing components as deployment units ● Formalizing the entire deployment lifecycle ● Proving deployment invariants Design objectives: simple (capturing recurring themes) and expressive
This Work An abstract, platform-independent, vendor- independent study of component deployment ● Designing components as deployment units ● Formalizing the entire deployment lifecycle ● Proving deployment invariants Design objectives: simple (capturing recurring themes) and expressive
This Work An abstract, platform-independent, vendor- independent study of component deployment ● Designing components as deployment units ● Formalizing the entire deployment lifecycle ● Proving deployment invariants Design objectives: simple (capturing recurring themes) and expressive
1690 5233 1690 NetLib NetLib Browser 5233 5429 5429 Browser NetLib NetLib update remove install 5233 1690 5429 3265 Browser NetLib NetLib Flash 5233 5429 5429 execute Browser NetLib NetLib 4423 Flash 5233 5429 5233 Browser NetLib Browser hot update 3265 Flash 5233 3265 5429 hot deploy Browser Flash NetLib
5429 5233 Browser NetLib ship build execute 1690 (testing) NetLib 5233 Browser 5233 Browser 5429 Browser NetLib
This Work An abstract, platform-independent, vendor- independent study of component deployment ● Designing components as deployment units ● Formalizing the entire deployment lifecycle ● Proving deployment invariants ● Deployment ''never goes wrong'' ● Version compatibility Design objectives: simple (capturing recurring themes) and expressive
This Work An abstract, platform-independent, vendor- independent study of component deployment ● Designing components as deployment units ● Formalizing the entire deployment lifecycle ● Proving deployment invariants Design objectives: simple (capturing recurring themes) and expressive
Why Foundations? ● Fosters next-generation deployment systems – Elucidates subtle issues – More features proposed from academic research community – Deployment systems with provably correct properties ● Complements modularity research – when and where of linking
Why Foundations? ● Fosters next-generation deployment systems – Elucidates subtle issues – More features proposed from academic research community – Deployment systems with provably correct properties ● Complements modularity research – when and where of linking
Basics
Application Buildbox 1690 5233 NetLib Browser 5429 NetLib An imaginary box where an application ''hatches'' throughout the deployment lifecycle
Deployment Unit: Assemblage Net 5233 Plugins send readfile Browser timeout start ● Real-world analogues: JAR, C .so library, DLL, CLI Assembly ● Assemblages were first developed in [Liu and Smith, ECOOP'04], but without deployment
Version Identifiers Net 5233 Plugins send readfile Browser timeout start ● Globally Unique ● Real-world analogues: COM+ GUID, CLI Assembly strong names
Side-by-Side Deployment 1690 5233 NetLib Browser 5429 NetLib Two versions of the NetLib are deployed in the same buildbox
Basic Construct: Assemblage Interfaces Net Plugins 5233 send readfile Browser start timeout Real-world analogues: Manifest files, Deployment Descriptors
Two Kinds of Assemblage Interfaces Net Plugins 5233 send readfile Browser start timeout Mixers: regular dependency Pluggers: hot deployment dependency
Interfaces are Bi-directional: Imports, Exports Net Plugins 5233 send readfile Browser start timeout
Multiple Interfaces Net Plugins 5233 send readfile Browser start timeout GUI initGraphics draw ● Name management is crucial for deployment. ● Avoid global name clashes
Interface: Unit of Versioning Dependencies 5233 Net Plugins Browser GUI draw initGraphics initGraphics draw GUILib 0872
What is NOT Possible... 5233 Net Plugins Browser GUI draw initGraphics initGraphics draw initGraphics draw GUILib GUILib 0872 5422
Assemblages in Shipped Form Net Plugins 5233 send readfile Browser start timeout Net -> NetLib.1690.Socket version constraint
Component Wiring: Mixing 1690 5233 Socket Plugins Net send NetLib Browser timeout Net -> NetLib.1690.Socket ● Between a pair of mixers ● Matching of functionalities ● Matching of version constraints
Component Wiring: Plugging 5233 3265 Plugins Main readFile Browser Flash start Main -> Browser.5233.Plugins ● Wiring at hot deployment time ● Between a plugger and a mixer ● Matching of functionalities ● Matching of version constraints
Compatibility Set 1690 5233 Socket Plugins Net NetLib Browser Net -> NetLib.1690.Socket 3370 < : 1690 ● Subversioning: a partial order ● We do not hardcode the strategy on how two versions are semantically compatible
Act 2: Component Deployment Lifecycle
Deployment 1690 5233 1690 Site NetLib NetLib Browser Transitions 5233 5429 5429 Browser NetLib NetLib update remove install 5233 1690 5429 3265 Browser NetLib NetLib Flash 5233 5429 5429 execute Browser NetLib NetLib 4423 Flash 5233 5429 5233 Browser NetLib Browser hot update 3265 Flash 5233 3265 5429 hot deploy Browser Flash NetLib
1690 5233 1690 NetLib NetLib Browser 5233 5429 5429 Browser NetLib NetLib update remove install 5233 1690 5429 3265 Browser NetLib NetLib Flash 5233 5429 5429 execute Browser NetLib NetLib 4423 Flash 5233 5429 5233 Browser NetLib Browser hot update 3265 Flash 5233 3265 5429 hot deploy Browser Flash NetLib
1690 5233 1690 NetLib NetLib Browser 5233 5429 5429 Browser NetLib NetLib update remove install 5233 1690 5429 3265 Browser NetLib NetLib Flash 5233 5429 5429 execute Browser NetLib NetLib 4423 Flash 5233 5429 5233 Browser NetLib Browser hot update 3265 Flash 5233 3265 5429 hot deploy Browser Flash NetLib
1690 5233 1690 NetLib NetLib Browser 5233 5429 5429 Browser NetLib NetLib update remove install 5233 1690 5429 3265 Browser NetLib NetLib Flash 5233 5429 5429 execute Browser NetLib NetLib 4423 Flash 5233 5429 5233 Browser NetLib Browser hot update 3265 Flash 5233 3265 5429 hot deploy Browser Flash NetLib
1690 5233 1690 NetLib NetLib Browser 5233 5429 5429 Browser NetLib NetLib update remove install 5233 1690 5429 3265 Browser NetLib NetLib Flash 5233 5429 5429 execute Browser NetLib NetLib 4423 Flash 5233 5429 5233 Browser NetLib Browser hot update 3265 Flash 5233 3265 5429 hot deploy Browser Flash NetLib
1690 5233 1690 NetLib NetLib Browser 5233 5429 5429 Browser NetLib NetLib update remove install 5233 1690 5429 3265 Browser NetLib NetLib Flash 5233 5429 5429 execute Browser NetLib NetLib 4423 Flash 5233 5429 5233 Browser NetLib Browser hot update 3265 Flash 5429 5233 3265 hot deploy Browser Flash NetLib
1690 5233 1690 NetLib NetLib Browser 5233 5429 5429 Browser NetLib NetLib update remove install 5233 1690 5429 3265 Browser NetLib NetLib Flash 5233 5429 5429 execute Browser NetLib NetLib 4423 Flash 5233 5429 5233 Browser NetLib Browser hot update 3265 Flash 5233 3265 5429 hot deploy Browser Flash NetLib
Development Site Transitions 5429 5233 Browser NetLib ship build execute 1690 (testing) NetLib 5233 Browser 5233 Browser 5429 Browser NetLib
5429 5233 Browser NetLib ship build execute 1690 (testing) NetLib 5233 Browser 5233 Browser 5429 Browser NetLib
5429 5233 Browser NetLib ship build execute 1690 (testing) NetLib 5233 Browser 5233 Browser 5429 Browser NetLib
5429 5233 Browser NetLib ship build execute 1690 (testing) NetLib 5233 Browser 5233 Browser 5429 Browser NetLib
Formalism Choice ● Labelled Transition System (LTS) for deployment operations – Each transition step is an application buildbox evolution step – Labels are ''commands'' which deployment system users can trigger ● Run-time behaviors captured via a minimalistic programming language
Recommend
More recommend