SOA/SCA FraScAti

29
Fractal & FraSCAti Fractal & FraSCAti An Open SOA/SCA Platform An Open SOA/SCA Platform fOSSa Conference fOSSa Conference fOSSa Conference fOSSa Conference Lionel Seinturier University of Lille & INRIA, France University of Lille & INRIA, France Lionel Seinturier 1 November 18, 2009

description

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.

Transcript of SOA/SCA FraScAti

Page 1: SOA/SCA FraScAti

Fractal & FraSCAtiFractal & FraSCAti

An Open SOA/SCA PlatformAn Open SOA/SCA Platform

fOSSa ConferencefOSSa ConferencefOSSa ConferencefOSSa Conference

Lionel SeinturierUniversity of Lille & INRIA, FranceUniversity of Lille & INRIA, France

Lionel Seinturier 1 November 18, 2009

Page 2: SOA/SCA FraScAti

Outline

1. SCA in a nutshell2 Motivation & principles2. Motivation & principles3. Architecture4 Positioning wrt other platforms4. Positioning wrt other platforms5. Conclusion

Lionel Seinturier 2 November 18, 2009

Page 3: SOA/SCA FraScAti

SCA in a Nutshell

SCA (Service Component Architecture)– a component model for SOA– 11/2005

Hosted by the Open SOA consortiumHosted by the Open SOA consortium– http://www.osoa.org

Standardised by OASIS– http://www.oasis-opencsa.org

Platform pro idersPlatform providers– 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

Page 4: SOA/SCA FraScAti

SCA in a Nutshell

SCA Business Components & Assemblies

Lionel Seinturier 4 November 18, 2009

Page 5: SOA/SCA FraScAti

<composite xmlns="http://www.osoa.org/xmlns/sca/1.0""bi b k t it " >

<service name="AccountService" promote="AccountServiceComponent"><interface.java interface="services.account.AccountService"/><binding.ws port="http://www.example.org/AccountService#

name="bigbank.accountcomposite" >

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><property name currency >EURO</property>

</component>

<component name="AccountDataServiceComponent"><implementation.bpel process=“QName"/>

StockQuotebigbank.accountcomposite

AccountServiceComponentService

AccountService

ReferenceStockQuoteService

AccountDataServiceComponent

ReferenceStockQuoteService

<service name="AccountDataService"><interface.java interface="services.accountdata.AccountDataService"/>

</service></component>

Component

<reference name=“StockQuoteService" promote="AccountServiceComponent/StockQuoteService"><interface.java interface="services.stockquote.StockQuoteService"/><binding.ws port="http://example.org/StockQuoteService#

wsdl endpoint(StockQuoteService/StockQuoteServiceSOAP)"/>

OpenCSA Member Section – Service Component Architecture 5OpenCSA Member Section – Service Component Architecture 5

wsdl.endpoint(StockQuoteService/StockQuoteServiceSOAP) /></reference>

</composite>

Page 6: SOA/SCA FraScAti

Java Implementation ExampleJava Implementation Example

package org.example.services.account;p g g p

import org.osoa.sca.annotations.*;

@Service(interfaces = AccountService.class)

Annotation for the service offered by this class

public class AccountServiceImpl implements AccountService {

private String currency = "USD";private AccountDataService accountDataService;

Constructor with annotations for p

private StockQuoteService stockQuoteService;

public AccountServiceImpl( @Property("currency") String currency,

injected property and references

@Reference("accountDataService") AccountDataService dataService,@Reference("stockQuoteService") StockQuoteService stockService) {

this.currency = currency;this.accountDataService = dataService;this.stockQuoteService = stockService;

}

OpenCSA Member Section – Service Component Architecture 6OpenCSA Member Section – Service Component Architecture 6

Page 7: SOA/SCA FraScAti

Outline

••• SCA in a nutshellSCA in a nutshellSCA in a nutshell••• SCA in a nutshellSCA in a nutshellSCA in a nutshell• Motivation & principles for FraSCAti••• ArchitectureArchitectureArchitecture••• ArchitectureArchitectureArchitecture••• Positioning wrt other platformsPositioning wrt other platformsPositioning wrt other platforms••• ConclusionConclusionConclusion••• ConclusionConclusionConclusion

Lionel Seinturier 7 November 18, 2009

Page 8: SOA/SCA FraScAti

FraSCAti = SCA++

Dynamic deployment & configuration– Distributed deployment with FDF/DeployWareDistributed deployment with FDF/DeployWare

Runtime adaptation & reconfigurationp g– Introspection & reconfiguration support via Fractal– Reconfiguration of SCA components & FraSCAti itself

Reflective SCA platformLi ht i ht ffi i t di t bl l bl– Lightweight, efficient, predictable, scalable

Lionel Seinturier 8 November 18, 2009

Page 9: SOA/SCA FraScAti

FraSCAti Principles

Designed with adaptability/extensibility/flexibility in mind

Component-based architecture to support protocols and implementationsp 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 services developed as regular SCA componentsNon 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– 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

Page 10: SOA/SCA FraScAti

FraSCAti Features

SCA component implementation– Java POJO and SCA annotations– Spring– Fractal

SCA bi diSCA binding– Web Services via Apache CXF– Java RMI

Under development– OSGi implementation and binding– JMS, JSONRPC

Lionel Seinturier 10 November 18, 2009

Page 11: SOA/SCA FraScAti

FraSCAti and SCA Spec.

SCA SpecificationFraSCAti

State ComponentSCA A bl M d l ( 1 0) ! A bl F tSCA Assembly Model (v1.0) ! Assembly Factory

SCA Policy Framework (v1.0) ! / " Assembly Factory

SCA Transaction Policy (v1.0) ! Transaction Servicey ( ) !

SCA Java Common Annotations & APIs (v1.0) ! Tinfi

SCA Java Component Implementation (v1.0) ! Tinfi

SCA Web Services Binding (v1.0) ! Binding Factory

! = supported ! / " = under development

Lionel Seinturier 11 November 18, 2009

pp p

Page 12: SOA/SCA FraScAti

FraSCAti and SCA Spec.

SCA SpecificationFraSCAti

State ComponentsState ComponentsSCA Spring Component Implementation (v1.0) ! / " Plug-in Assembly Factory

SCA BPEL Client & Implementation (v1.0) " " Plug-in Assembly FactorySCA C++ Client & Implementation (v1.0) " " "

SCA C Client & Implementation (v1.0) " " "

SCA COBOL Client & Implementation (v1 0) " " "SCA COBOL Client & Implementation (v1.0) " " "

SCA JMS Binding (v1.0) " " Plug-in Binding FactorySCA EJB Session Bean Binding (v1.0) " " Plug-in Binding FactorySCA JCA Binding (v1.0) " " " Plug-in Binding FactorySCA Java EE Integration (v0.9) " " "

Lionel Seinturier 12 November 18, 2009

Page 13: SOA/SCA FraScAti

Outline

••• SCA in a nutshellSCA in a nutshellSCA in a nutshell••• SCA in a nutshellSCA in a nutshellSCA in a nutshell••• Motivation & principles for FraSCAtiMotivation & principles for FraSCAtiMotivation & principles for FraSCAti• Architecture• Architecture••• Positioning wrt other platformsPositioning wrt other platformsPositioning wrt other platforms••• ConclusionConclusionConclusion••• ConclusionConclusionConclusion

Lionel Seinturier 13 November 18, 2009

Page 14: SOA/SCA FraScAti

Platform Architecture

Modular (plugin like) architecture to support variation points• implementation types• implementation types

– Java 5, Java POJO, Spring, OSGi, Java supported scripting languages, Scala

• binding types– SOAP, RMI, OSGi, REST, JBI

Lionel Seinturier 14 November 18, 2009

Page 15: SOA/SCA FraScAti

Container Architecture

Component container architecture• host a business logic instance which provides the• host a business logic instance which provides the

component services• generalize the notion of a meta-levelgeneralize the notion of a meta level• decomposed in some fine-grained services

Lionel Seinturier 15 November 18, 2009

Page 16: SOA/SCA FraScAti

Non Functional Services

Support for non-functional (NF) services

• SCA Policy Framework provides some metada– @Confidentiality, @Integrity, @Authentication

general purpose: @Intent @Requires– general purpose: @Intent, @Requires

• NF services implemented as SCA tSCA components

• NF wiring between business components and NF pcomponents

• API for dynamic management

Lionel Seinturier 16 November 18, 2009

Page 17: SOA/SCA FraScAti

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 implementationInterceptors

– lifecycle management– component instantiation policy

i t t di t h– intent dispatch

Lionel Seinturier 17 November 18, 2009

Page 18: SOA/SCA FraScAti

FraSCAti Tooling

Eclipse STP/SCA modeler– http://www eclipse org/stp/sca/http://www.eclipse.org/stp/sca/

Lionel Seinturier 18 November 18, 2009

Page 19: SOA/SCA FraScAti

FraSCAti Tooling

FraSCAti Explorer

Lionel Seinturier 19 November 18, 2009

Page 20: SOA/SCA FraScAti

Outline

••• SCA in a nutshellSCA in a nutshellSCA in a nutshell••• SCA in a nutshellSCA in a nutshellSCA in a nutshell••• Motivation & principles for FraSCAtiMotivation & principles for FraSCAtiMotivation & principles for FraSCAti••• ArchitectureArchitectureArchitecture••• ArchitectureArchitectureArchitecture• Positioning wrt other platforms••• ConclusionConclusionConclusion••• ConclusionConclusionConclusion

Lionel Seinturier 20 November 18, 2009

Page 21: SOA/SCA FraScAti

FraSCAti vs Tuscany

" Less SCA features supported– Less implementation languages and binding protocols

" Smaller ecosystem– Less sponsoring companies, developers, and users

! Better contin m from SCA tooling to r ntime platform! Better continuum from SCA tooling to runtime platform– Share the same SCA metamodel with Eclipse STP SCA project

! Better footprint to target embedded systemsp g y– Smaller disk and memory footprints

! Ready for dynamic runtime reconfigurationB d OW2 F t l t d l d i t d t l– Based on OW2 Fractal component model and associated tools

Lionel Seinturier 21 November 18, 2009

Page 22: SOA/SCA FraScAti

FraSCAti vs Tuscany

Performance Evaluation: Instantiation Time

20000

25000FraSCAti

Tuscany

15000

20000

on T

ime (

ms)

5000

10000

Inst

antia

tio

010 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

Page 23: SOA/SCA FraScAti

FraSCAti vs Tuscany

Performance Evaluation: Invocation Time

350

400

450

s)

FraSCAti

Tuscany

150

200

250

300

catio

n Ti

me

(m

0

50

100

10 50 100 250 500 1000 2000 3000 4000 5000 6000 7000 8000 9000 10000 11000 12000 13000

Invo

c

Number of Components

Lionel Seinturier 23 November 18, 2009

Page 24: SOA/SCA FraScAti

FraSCAti vs Tuscany

Performance Evaluation: Memory Consumption

50

60

70

Byt

es)

30

40

50

nsum

ptio

n (M

B

10

20

Mem

ory

Con

FraSCAti

Tuscany

010 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

Page 25: SOA/SCA FraScAti

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 support for SCA Java annotations" No Web Service binding

• The Mule Project - MuleSCA activity! Some Web pages! Some Web pages" No open source code currently available

Lionel Seinturier 25 November 18, 2009

Page 26: SOA/SCA FraScAti

Outline

••• SCA in a nutshellSCA in a nutshellSCA in a nutshell••• SCA in a nutshellSCA in a nutshellSCA in a nutshell••• Motivation & principles for FraSCAtiMotivation & principles for FraSCAtiMotivation & principles for FraSCAti••• ArchitectureArchitectureArchitecture••• ArchitectureArchitectureArchitecture••• Positioning wrt other platformsPositioning wrt other platformsPositioning wrt other platforms• Conclusion• Conclusion

Lionel Seinturier 26 November 18, 2009

Page 27: SOA/SCA FraScAti

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– based on OW2 code blocks

Lionel Seinturier 27 November 18, 2009

Page 28: SOA/SCA FraScAti

Contact

Web site– http://frascati.ow2.org

Project heads– Philippe Merle: [email protected]– Lionel Seinturier: [email protected]@

Development team– INRIA ADAM & SARDES

• Pierre Carton, Christophe Demarey, Nicolas Dolet, Damien Fournier, Philippe Merle, Nicolas Pessemier, Valerio Schiavoni, Lionel Seinturier

AcknowledgementsAcknowledgements– 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

Page 29: SOA/SCA FraScAti

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.htmlp g– Fabric3 http://xircles.codehaus.org/projects/fabric3– FraSCAti http://frascati.ow2.org

SCA ResourcesSCA 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