Fractal: This presentation introduces Fractal which is a modular, extensible and programming language agnostic component model that can be used to design, implement, deploy and reconfigure systems and applications, from operating systems to middleware platforms and to graphical user interfaces. The goal of Fractal is to reduce the development, deployment and maintenance costs of software systems in general, and of ObjectWeb projects in particular. The Fractal component model has the following important features: recursivity, reflectivity, component sharing, binding components, execution model independence, openness.
FraSCAti: The Service Component Architecture (SCA) is a technology agnostic standard for developing and deploying distributed service-oriented architectures (SOA). However, SCA does not define standard means for runtime manageability (including introspection and reconfiguration) of SOA applications and of their supporting environment. This presentation introduces the FraSCAti platform, which brings runtime management features to SCA, and discusses key principles in its design: the adoption of an extended SCA component model for the implementation of SOA applications and of the FraSCAti platform itself; the use of component-based interception techniques for dynamically weaving non-functional services such as transaction management with components.
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
SOA/SCA FraScAti
1. Fractal & FraSCAti
An Open SOA/SCA Platform
fOSSa Conference
Lionel Seinturier
University of Lille & INRIA, France
Lionel Seinturier 1 November 18, 2009
2. Outline
1. SCA in a nutshell
2.
2 Motivation & principles
3. Architecture
4.
4 Positioning wrt other platforms
5. Conclusion
Lionel Seinturier 2 November 18, 2009
3. SCA in a Nutshell
SCA (Service Component Architecture)
– a component model for SOA
– 11/2005
Hosted by the Open SOA consortium
– http://www.osoa.org
Standardised by OASIS
– http://www.oasis-opencsa.org
Platform providers
pro iders
– Open Source: Apache Tuscany, Fabric3, FraSCAti, Mule, Newton
– Vendors: IBM WebSphere FP for SOA, TIBCO ActiveMatrix, Covansys
SCA Framework, Paremus, Newton, Rogue Wave HydraSCA, Oracle
Fusion Middleware
Lionel Seinturier 3 November 18, 2009
4. SCA in a Nutshell
SCA Business Components & Assemblies
Lionel Seinturier 4 November 18, 2009
5. <composite xmlns="http://www.osoa.org/xmlns/sca/1.0"
name="bigbank.accountcomposite" >
"bi b k t it "
<service name="AccountService" promote="AccountServiceComponent">
<interface.java interface="services.account.AccountService"/>
<binding.ws port="http://www.example.org/AccountService#
binding.ws port http://www.example.org/AccountService#
wsdl.endpoint(AccountService/AccountServiceSOAP)"/>
</service>
<component name="AccountServiceComponent">
<implementation.java class="services.account.AccountServiceImpl"/>
<implementation java class "services account AccountServiceImpl"/>
<reference name="StockQuoteService"/>
<reference name="AccountDataService"
target="AccountDataServiceComponent/AccountDataService"/>
<property name="currency">EURO</property>
name currency >EURO</property>
bigbank.accountcomposite
StockQuote
</component>
Reference
StockQuote
Service
AccountService
<component name="AccountDataServiceComponent"> Service
AccountService Component
AccountData
<implementation.bpel process=“QName"/> Service
Component
<service name="AccountDataService">
<interface.java interface="services.accountdata.AccountDataService"/>
</service>
</component>
<reference name=“StockQuoteService" promote="AccountServiceComponent/StockQuoteService">
<interface.java interface="services.stockquote.StockQuoteService"/>
<binding.ws port="http://example.org/StockQuoteService#
wsdl.endpoint(StockQuoteService/StockQuoteServiceSOAP) />
wsdl endpoint(StockQuoteService/StockQuoteServiceSOAP)"/>
</reference>
</composite>
OpenCSA Member Section – Service Component Architecture 5
6. Java Implementation Example
p
package org.example.services.account;
g g p
Annotation for the
import org.osoa.sca.annotations.*; service offered by
this class
@Service(interfaces = AccountService.class)
public class AccountServiceImpl implements AccountService {
private String currency = "USD"; Constructor with
p
private AccountDataService accountDataService; annotations for
private StockQuoteService stockQuoteService; injected property
and references
public AccountServiceImpl(
@Property("currency") String currency,
@Reference("accountDataService") AccountDataService dataService,
@Reference("stockQuoteService") StockQuoteService stockService) {
this.currency = currency;
this.accountDataService = dataService;
this.stockQuoteService = stockService;
}
OpenCSA Member Section – Service Component Architecture 6
7. Outline
• SCA in a nutshell
• Motivation & principles for FraSCAti
• Architecture
• Positioning wrt other platforms
• Conclusion
Lionel Seinturier 7 November 18, 2009
8. FraSCAti = SCA++
Dynamic deployment & configuration
– Distributed deployment with FDF/DeployWare
Runtime adaptation & reconfiguration
p g
– Introspection & reconfiguration support via Fractal
– Reconfiguration of SCA components & FraSCAti itself
Reflective SCA platform
– Li ht i ht efficient, predictable, scalable
Lightweight, ffi i t di t bl l bl
Lionel Seinturier 8 November 18, 2009
9. FraSCAti Principles
Designed with adaptability/extensibility/flexibility in mind
Component-based architecture to support protocols and implementations
p pp p p
– Communication protocols plugged within a binding factory
– Component implementation languages encapsulated as platform components
AOP-based mechanism to integrate intents and policies
– Non functional
Non-functional services developed as regular SCA components
– Non-functional policies dynamically woven into the base architecture
Fractal-based runtime substrate (cf. http://fractal.ow2.org)
– Dynamic reconfiguration capabilities
– Java 5 @-based development style (dependency injection)
– XML-based architecture descriptors
– Structuring concepts (component personality, membrane, control interface, etc.)
2 execution modes for the FraSCAti platform
– Standalone application server (support for 2 backends)
– Integrated in the PEtALS JBI ESB (cf. http://petals.ow2.org)
Lionel Seinturier 9 November 18, 2009
10. FraSCAti Features
SCA component implementation
– Java POJO and SCA annotations
– Spring
– Fractal
SCA bi di
binding
– Web Services via Apache CXF
– Java RMI
Under development
– OSGi implementation and binding
– JMS, JSONRPC
Lionel Seinturier 10 November 18, 2009
11. FraSCAti and SCA Spec.
FraSCAti
SCA Specification
State Component
SCA A
Assembly Model (v1.0)
bl M d l ( 1 0) ! Assembly Factory
A bl F t
SCA Policy Framework (v1.0) !/" Assembly Factory
SCA Transaction Policy (v1.0)
y( ) ! Transaction Service
SCA Java Common Annotations & APIs (v1.0) ! Tinfi
SCA Java Component Implementation (v1.0) ! Tinfi
SCA Web Services Binding (v1.0) ! Binding Factory
! = supported
pp ! / " = under development
p
Lionel Seinturier 11 November 18, 2009
15. Container Architecture
Component container architecture
• host a business logic instance which provides the
component services
• generalize the notion of a meta level
meta-level
• decomposed in some fine-grained services
Lionel Seinturier 15 November 18, 2009
16. Non Functional Services
Support for non-functional (NF) services
• SCA Policy Framework provides some metada
– @Confidentiality, @Integrity, @Authentication
– general purpose: @Intent @Requires
@Intent,
• NF services implemented as
SCA components t
• NF wiring between business
components and NF
p
components
• API for dynamic management
Lionel Seinturier 16 November 18, 2009
17. FraSCAti Tinfi
Fractal architecturing principles for the implementation of the container (control
membranes)
6 controllers
– SCAComponent : component identity dedicated interface (ComponentContext) and
implementation
– SCAContentController : component instantiation policy
dedicated implementation, private interface (no need to export it)
– SCAIntentController : intent handlers management
– SCAPropertyController : component properties management
– SCALifeCycleController : component initialization (@EagerInit)
same interface as Fractal LC, dedicated implementation
– SCABindingController : component bindings
same interface as Fractal BC, dedicated implementation
Interceptors
– lifecycle management
– component instantiation policy
– i t t di
intent dispatch
t h
Lionel Seinturier 17 November 18, 2009
20. Outline
• SCA in a nutshell
• Motivation & principles for FraSCAti
• Architecture
• Positioning wrt other platforms
• Conclusion
Lionel Seinturier 20 November 18, 2009
21. FraSCAti vs Tuscany
" Less SCA features supported
– Less implementation languages and binding protocols
" Smaller ecosystem
– Less sponsoring companies, developers, and users
! Better continuum from SCA tooling to runtime platform
contin m r ntime
– Share the same SCA metamodel with Eclipse STP SCA project
! Better footprint to target embedded systems
p g y
– Smaller disk and memory footprints
! Ready for dynamic runtime reconfiguration
– B
Based on OW2 F t l component model and associated t l
d Fractal t d l d i t d tools
Lionel Seinturier 21 November 18, 2009
22. FraSCAti vs Tuscany
Performance Evaluation: Instantiation Time
25000
FraSCAti
Tuscany
20000
Instantiatio Time( ms)
15000
on
10000
5000
0
10 50 100 250 500 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 12000 13000
Number of Components
Lionel Seinturier 22 November 18, 2009
23. FraSCAti vs Tuscany
Performance Evaluation: Invocation Time
450
400 FraSCAti
350 Tuscany
cation Time (ms)
300
250
200
150
Invoc
100
50
0
10 50 100 250 500 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 12000 13000
Number of Components
Lionel Seinturier 23 November 18, 2009
24. FraSCAti vs Tuscany
Performance Evaluation: Memory Consumption
70
60
Bytes)
50
nsumption (MB
40
30
Memory Con
FraSCAti
20
Tuscany
10
0
10 50 100 250 500 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 12000 13000
Number of Components
Lionel Seinturier 24 November 18, 2009
25. Other OSS Competitors
• Fabric3
"/! Fork from the Apache Tuscany project
" Developed by fewer contributors
• The Newton Project
! Distributed runtime framework based on OSGi, Jini, and SCA
! SCA bindings for OSGi and Jini
" Does not target a fully-compliant SCA framework
" No support for SCA Java annotations
" No Web Service binding
• The Mule Project - MuleSCA activity
! Some Web pages
" No open source code currently available
Lionel Seinturier 25 November 18, 2009
26. Outline
• SCA in a nutshell
• Motivation & principles for FraSCAti
• Architecture
• Positioning wrt other platforms
• Conclusion
Lionel Seinturier 26 November 18, 2009
27. Conclusion
FraSCAti
– an open and extensible implementation of the SCA
specifications
• continuum from tooling to runtime (common SCA metamodel shared
with STP)
• reconfigurable SCA applications
• lightweight version for embedded devices currently being developed
– based on OW2 code blocks
Lionel Seinturier 27 November 18, 2009
28. Contact
Web site
– http://frascati.ow2.org
Project heads
– Philippe Merle: Philippe.Merle@inria.fr
– Lionel Seinturier: Lionel.Seinturier@univ-lille1.fr
@
Development team
– INRIA ADAM & SARDES
• Pierre Carton, Christophe Demarey, Nicolas Dolet, Damien Fournier, Philippe Merle,
Nicolas Pessemier, Valerio Schiavoni, Lionel Seinturier
Acknowledgements
– Vivien Quéma, Jean-Bernard Stefani, Alain Boulze, Adrian Mos, Adrien Louis, Stéphane Bagnier, Daniel
Hagimont, Etienne Juliot, Gaël Blondelle, Jean-Pierre Lorre, Marc Dutoo, Marc Pantel, Mickael Istria,
Mohammed Eljai, Nicolas Salatge, Samir Tata, Roland Naudin, Samuel Quaireau, Stéphane Drapeau,
Thomas Darbois
Lionel Seinturier 28 November 18, 2009
29. SCA References
SCA Specifications
– OpenSOA http://www.osoa.org
– OASIS OpenSCA http://www.oasis-opencsa.org
OSS Implementations
– Tuscany http://tuscany.apache.org
– Newton http://newton.codecauldron.org/site/index.html
p g
– Fabric3 http://xircles.codehaus.org/projects/fabric3
– FraSCAti http://frascati.ow2.org
SCA Resources
– http://www.osoa.org/display/Main/SCA+Resources
– http://www-128.ibm.com/developerworks/library/specification/ws-sca
– http://www.davidchappell.com/articles/Introducing_SCA.pdf
– http://www-128.ibm.com/developerworks/websphere/techjournal/0510_brent/0509_brent.html
http://www-128 ibm com/developerworks/websphere/techjournal/0510 brent/0509 brent html
– http://events.oasis-open.org/home/sites/events.oasis-
open.org.home/files/Flexible_Agile_Composition_01.ppt [Mike Edwards]
– http://www.osoa.org/download/attachments/250/Power_Combination_SCA_Spring_OSGi.pdf
?version=3
Lionel Seinturier 29 November 18, 2009