• No results found

SUBSYSTEMS IN THE WILD

N/A
N/A
Protected

Academic year: 2021

Share "SUBSYSTEMS IN THE WILD"

Copied!
24
0
0

Loading.... (view fulltext now)

Full text

(1)

SUBSYSTEMS IN THE WILD

Graham Charters

Senior Technical Staff Member IBM

(2)

Contents

• Motivation

• Subsystems Overview

• Use case “In the Wild”

(3)

Motivation

• Many Enterprise Java platforms offer bundle collections

• Apache Aries – Applications • Apache Karaf – Features • Eclipse Virgo – Plans, PARs

• WebSphere – OSGi Applications,

Composite, Features

• Oracle GlassFish – Applications

• Paremus Service Fabric – System Parts • Standardization enables

• Portability

• Tools

(4)

Subsystem Concepts

• A Grouping Resources (Bundles)

• An Identity

• Scoping for visibility

• Group Management

(5)

Subsystem Types

• Subsystem types aligned with common sharing policies

Type Sharing Policy

Feature Share everything

Application Share everything in, share

nothing out

(6)

Feature Subsystems

• A grouping of related artefacts • Simplifies re-use &

provisioning

• Raw resources in the runtime

• Useful for frameworks & libraries

Bundle A Bundle B

Bundle C Bundle D

(7)

Feature A

Application Subsystems

• Isolated group of related artefacts

• Share nothing out • Implicitly share all in

• Useful for independent

applications in same process • cheap/weak multi-tenancy

• Can share common

infrastructure

• e.g. frameworks or libraries

Bundle A Bundle B

Bundle C Bundle D

Application A Application B

(8)

Composite Subsystems

• Isolated group of related artefacts

• Explicitly share in • Explicitly share out • Useful for controlling

coupling of “subsytems” (hide internals) Feature A Bundle A Bundle B Bundle C Bundle D Composite A Composite B ✘ ✘

(9)

Nesting

• Subsystems can be nested

• All subsystems are

descendants of the “Root Subsystem”

• Enables runtime subsystem

‘sharing’

• Enables logical groupings

Feature Bundle A Bundle B Bundle D Application Root Bundle C

(10)

Definition

• Subsystem manifest format

• Jar manifest without the annoying restrictions • Familiar to bundle programmers

• Configuration by exception

• Can be left out altogether

• Version ranges enabled deployment flexibility

Subsystem-ManifestVersion: 1.0

Subsystem-Name: HttpService

Subsystem-Description: This feature enables the http service

Subsystem-SymbolicName: com.acme.httpService

Subsystem-Version: 1.0.0

Subsystem-Type: osgi.subsystem.feature

Subsystem-Content: httpServiceWab;version="1.0.0",

org.eclipse.equinox.http.servlet;version="1.1.200", org.eclipse.osgi.services;version="3.3.0"

(11)

Packaging

• Zip file with .esa extension • Optionally contains resources

(bundles) for provisioning • duplicates binaries

• bloats deployment • inhibits update

• does not influence runtime sharing

• uses repositories if not • Optionally contains Subsystem manifest • defaulted if not Subsystem.esa Bundle A Bundle C Bundle B Bundle D Subsystem.MF

(12)

Management

• Subsystem service • Introspection of subsystem • Lifecycle management of subsystem • Management of child subsystems (e.g. install)

• Roots subsystem – solves

the bootstrap problem • Really only for systems

programmers – runtimes

should simplify management capabilities Feature A Bundle A Bundle B Bundle C Bundle D Application A Application B Root

(13)

Repositories

• Repositories represent collections of resources considered during

provisioning

• The Subsystem archive

contents

• Simplifies operations, bloats deployment

• The visible set of installed things

• Configured repository services

• Enables single binary for install and service

• Fits well with ‘continuous delivery’

Bundle A Bundle C Bundle B Bundle D Subsystem.MF Feature Bundle A Bundle B Bundle D Application Bundle C Bundle A Bundle B

(14)

Dependency Management

• Installs missing dependencies • Removes redundant dependencies • Dependency installation maximises runtime sharing

• Dependency types

• Package

• Services via declarative models (optional) • Require-Capability Bundle A Bundle B Feature Bundle C Bundle D Application Composite

(15)

From Test to Production

• Product deployment

resolution uncertainty

• Deployment manifests lock

down deployment

• Repository and install

governance necessary for

guarantees Subsystem.esa

Bundle A Bundle B

Subsystem.MF Deployment.MF

(16)

Extenders and whiteboards

• Extender & whiteboard patterns commonplace

• Rely on visibility of bundle & service lifecycle events

• Subsystem scoping can hide these events from extenders

• The System Bundle is your friend • Sees all events

• Can be found by any bundle using its location string

• Use this to register trackers

Bundle Service

Bundle systemBundle =

(17)

Demo

httpservice: http service whiteboard • greenWeb, redWeb: register http services • wab-1.0: web container wab-1.0 WebContainer Impl WebContainer API Root greenWab greenWeb redWab redWeb httpservice httpServiceWab http.servlet osgi.services “User”

(18)

In the Wild

(19)

Reuse/release equivalence principle

• The unit of reuse is the unit of release

• A matter of perspective; jar, library, framework, product • Higher levels take on ‘product’ qualities

• Licensing

• Documentation • Install

• Subsystems 1.1 adds many headers for product qualities

(20)

Use Case

• Decomposition of a product into re-usable capabilities • Independent release of product capabilities

• Users care about capabilities, not implementation

• Users want to consume capabilities piecemeal

• ‘Stack’ products re-use subset of capabilities • ‘Stack’ products add their own capabilities

(21)

Subsystem Asset Life-cycle

Dev, build, test Provision Feature A Bundle A Bundle B Bundle C Bundle D Application A Application B Root In sta ll W.esa X.esa Y.esa Z.esa Repository & Resolver Services Z.esa Y.esa X.esa Release Repository X.esa

Doc, license, icon, etc

Repository & Resolver Services

(22)
(23)

Summary

• The standard way to manage groups of resources

• Subsystem ‘types’ defines sharing for most common use

cases

• Deployment resolution enables sharing of runtime

resources

• Repositories-based resolution enables sharing of binaries

• New 1.1 features enable more ‘product’ and

(24)

Find out more

• Reference Implementation: • Subsystems 1.0 https://svn.apache.org/repos/asf/aries/trunk/subsystem/ • Subsystems 1.1 https://svn.apache.org/repos/asf/aries/branches/subsystemsR6/subsystem/

• New Early Draft Specification of OSGi Enterprise Release 6

• http://www.osgi.org/Specifications/Drafts

• New OSGi Core Release 6 Specification

• http://www.osgi.org/Specifications/HomePage

• OSGi Alliance Design Documents

References

Related documents

department head to confirm whether the employee will be released. 4) The employee is advised of the decision. If the decision is to allow the employee to participate in TLOS, the

Sequential Function Chart is a visual programming language that makes it possible to coordinate the sequential execution of different program sections and steps..

To control for the independent impact of the Evaporcool™ retrofit, the trends in Figure 2 were used together with trends for cooling load as a function of outside air tem- perature

Platinum Premium Travel and Austrian Airlines — Raiffeisenbank MasterCard ® World Black Edition credit cards in Russian rubles; the opportunity to get cards for other accounts

It is therefore prudent to consider OpenStack as a software-based operations ecosystem that requires a sufficiently large team of operators to design, deploy, operate,

Radiofrequency catheter ablation of typical atrial flutter and the atrioventricular junction via the superior vena caval approach in a patient with a congenital absence of an

be employed to enhance the user experience in mapping applications, where, for each place instance, the related place semantics are displayed alongside the current method used in

motor, perceptual, affective, default mode and striatal circuits. Notably, treatment-related changes in the iFC of nodes of the DMN emerged across several analyses. Further,