Composite Application Deployment with SCA Domain
The sample scenarios
A retail application is built using SCA. The application is developed and packaged as 3 contributions:
- Asset: The common interfaces such as Catalog, Cart, Total
- Store: The java implementation of Catalog, ShoppingCart and CurrencyConverter
- Store-Client: The store client implementation
Both Store and Store-Client have dependency (importing the interfaces) on Asset.
There are two deployable composites:
- StoreClient: It contains the StoreClient component with references to Catalog, Cart and Total
- Store: It contains the ShoppingCart, Catalog and CurrencyConverter components
The application will be deployed to different machines or JVMs:
- StoreClient: Run the store client
- Store: Run the store services
Illustration of an SCA domain
Deployment Steps
Steps |
Domain Services |
SPIs |
Tools |
Note |
---|---|---|---|---|
Add Assets, Store, and StoreClient contributions to the domain |
Install/Uninstall contributions |
Workspace |
Static:
|
We can build different ways to make contributions available to the SCA domain. |
Parse the contributions |
Contribution Processing |
ContributionScanner |
|
|
Resolve dependencies across contributions |
Import/Export resolution |
ContributionDependencyBuilder |
|
We need to find out a collection of contributions to support a composite application based on the import/export statements |
Find/Load/Resolve the composites from the contributions |
The assembly builders |
|
|
Deployable composites can be designated by the contributions. It's also possible that the assembler to define a deployment composite on the fly. |
Configure the nodes to the SCA domain |
implementation.node |
|
|
The node represents the computing capabilities in the SCA domain. |
Assign a deployment composite to a node |
Run the composite application by a node |
|
|
The deployable image of an SCA composite application to a node is the composite and a list of contributions to support the composite application. |
Monitor and control the services running on a node |
|
|
|
|