72
1 © Copyright 2011 INRIA/ADAM From SOA to SCA with FraSCAti Christophe Demarey, Philippe Merle INRIA ADAM RivieraDev, Sophia Antipolis, France, 20th October 2011

FraSCAti@rivieradev

  • Upload
    demarey

  • View
    925

  • Download
    0

Embed Size (px)

DESCRIPTION

SOA to SCA with OW2 FraSCAti.Talk @ rivieradev 2011, Sophia, France

Citation preview

Page 1: FraSCAti@rivieradev

1

© Copyright 2011 INRIA/ADAM

From SOA to SCA with FraSCAti

Christophe Demarey, Philippe Merle INRIA ADAM

RivieraDev, Sophia Antipolis, France, 20th October 2011

Page 2: FraSCAti@rivieradev

2

© Copyright 2011 INRIA/ADAM

About

•  Adaptive Distributed Applications and Middleware •  SPL, FOD, MDE, CBSE, AOSD, SOA, CAC, reflective middleware

•  Joint project-team between U. Lille 1, CNRS and INRIA •  Created in 2008 •  2 prof + 1 CR + 2 MdC •  2 postdocs + 10 PhD + 7 engineers + 2 students

•  Research activities •  CALICO •  CAPucine •  FraSCAti •  …

•  http://adam.lille.inria.fr

Page 3: FraSCAti@rivieradev

3

© Copyright 2011 INRIA/ADAM

About me •  Research engineer at INRIA since 2004

•  Engineer at U. Lille 1 (2002 - 2004)

•  Background •  Component models and frameworks

–  OMG CCM – OpenCCM –  OW2 Fractal and FraSCAti

•  JVM for embedded-systems –  JITS (Pops team)

•  Model Driven Engineering •  Software tools & pratices

–  Build tools, forge, continuous integration, code analysis, …

Page 4: FraSCAti@rivieradev

4

© Copyright 2011 INRIA/ADAM

About you

•  Who knows SOA?

•  Who applies SOA?

•  Who would like to apply SOA?

•  Who knows SCA?

•  Who uses SCA?

•  Who would like to use SCA?

•  Who knows FraSCAti?

•  Who uses FraSCAti?

•  Who would like to use FraSCAti?

Page 5: FraSCAti@rivieradev

5

© Copyright 2011 INRIA/ADAM

Outline

1.  Service-Oriented Architecture – SOA

2.  Service Component Architecture – SCA

3.  OW2 FraSCAti

Page 6: FraSCAti@rivieradev

6

From SOA…

Service-Oriented Architecture

Page 7: FraSCAti@rivieradev

7

© Copyright 2011 INRIA/ADAM

From SOA challenges…

•  IT architectures

•  Complexity •  Managing 10n lines of code

•  Monolithic •  Breaking application «silos»

•  Seldom evolvable •  Freeing systems from

immutable dependencies

•  SPL, MDE, CBSE, AOSD, …

Page 8: FraSCAti@rivieradev

8

© Copyright 2011 INRIA/ADAM

Software decomposition

Page 9: FraSCAti@rivieradev

9

© Copyright 2011 INRIA/ADAM

SOA and SPL, MDE, CBSE, AOSD, …

Page 10: FraSCAti@rivieradev

10

© Copyright 2011 INRIA/ADAM

Software composition

Page 11: FraSCAti@rivieradev

11

© Copyright 2011 INRIA/ADAM

Tools, skills or contexts?

Page 12: FraSCAti@rivieradev

12

© Copyright 2011 INRIA/ADAM

…to existing SOA, but…

SOA leverages complexity and promotes flexibility •  Loose coupling •  Service composition and orchestration •  Well defined and contractualized interfaces •  Standard tools and technologies

« This is the SOLUTION !!! » Source: oasis-open.org!

Page 13: FraSCAti@rivieradev

13

© Copyright 2011 INRIA/ADAM

Page 14: FraSCAti@rivieradev

14

© Copyright 2011 INRIA/ADAM

…Still a partial solution

Today's SOA need to be… •  Deployable in different environments •  Ensure security and reliability •  Adaptable to changing business needs

…and thus, SOA lack… •  Structured architectures

–  What is behind the scene? •  Reuse capabilities

–  Reuse the wheel when possible… •  Flexibility support

–  …Or tune it if not!

You want SCA! for your business

Page 15: FraSCAti@rivieradev

15

© Copyright 2011 INRIA/ADAM

Four challenges for SOA

•  Structuring reusable flexible architectures •  What is behind the scene? •  Reuse the wheel when possible… •  …Or tune it if not!

•  Interoperability •  Orchestrate heterogeneous services

–  The weather of the city where a Twitter user lives? –  REST Twitter user account + SOAP weather service

•  Integration •  Compose heterogeneous piece of software to build a new service

–  e.g., compose a BPEL process, an OSGi bundle and a Xquery script

•  Dynamically reconfigurable runtime architectures •  research challenge #1 in Service foundations [Papazoglou 07]

You want SCA and

FraSCAti!

Page 16: FraSCAti@rivieradev

16

Service Component Architecture SCA

Page 17: FraSCAti@rivieradev

17

© Copyright 2011 INRIA/ADAM

SCA in a Nutshell

SCA (Service Component Architecture) •  Aka a «Component Model for SOA» •  Since 11/2005

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

Standardised at OASIS •  http://www.oasis-opencsa.org

Existing platform providers •  Open Source (4): Apache Tuscany, Newton, Fabric3, FraSCAti •  Vendors (7): IBM WebSphere FP for SOA, TIBCO ActiveMatrix,

Covansys SCA Framework, Paremus, Rogue Wave HydraSCA, Oracle Fusion Middleware

Page 18: FraSCAti@rivieradev

18

© Copyright 2011 INRIA/ADAM

Service Component Architecture (SCA) An OASIS’s standard programming model for SOA

•  Technology-agnostic, adaptability, variability •  Interface languages (Java, WSDL, OMG IDL, etc.) •  Implementation languages (Java, Spring, OSGi, BPEL, C/C++, etc.) •  Binding protocols (WS, REST, JSON-RPC, Java RMI, CORBA, etc.) •  Non functional aspects, aka SCA intents and policies •  Packaging formats and deployment targets (JAR, JBI, WAR, OSGi, etc.)

Network!

Network!

Sec. Trans. log

Page 19: FraSCAti@rivieradev

19

© Copyright 2011 INRIA/ADAM

Warehouse Service

WarehouseComposite

Warehouse Broker

Component Warehouse Component

Order Processing

Service OrderProcessing

Component

Shipping Reference

External Warehouse Reference

Payments Component

Payment Service

AccountsComposite External Banking

Reference

Accounts Ledger

Component BPEL

Java EE

C++

SOAP/HTTP

JMS

RMI/IIOP

Mixed: - technologies - app locations

Multi-level composition

SCA in a Nutshell (cont’d)

Loosely coupled

Loosely coupled

Closely coupled

Entry Points

Entry Points

External Service

External Service

External Services Binding

Wire

Wire

Page 20: FraSCAti@rivieradev

20

© Copyright 2011 INRIA/ADAM

Modelling with Eclipse SCA Tools

Page 21: FraSCAti@rivieradev

21

© Copyright 2011 INRIA/ADAM

SCA Hello World Example

Page 22: FraSCAti@rivieradev

22

© Copyright 2011 INRIA/ADAM

SCA Hello World Example (cont’d)

Page 23: FraSCAti@rivieradev

23

© Copyright 2011 INRIA/ADAM

SCA Hello World Example (cont’d)

Page 24: FraSCAti@rivieradev

24

© Copyright 2011 INRIA/ADAM

SCA Hello World Example (cont’d)

Page 25: FraSCAti@rivieradev

25

© Copyright 2011 INRIA/ADAM

SCA Hello World Example (cont’d)

Page 26: FraSCAti@rivieradev

26

© Copyright 2011 INRIA/ADAM

SCA Hello World Example (cont’d)

Page 27: FraSCAti@rivieradev

27

© Copyright 2011 INRIA/ADAM

SCA Hello World Example (cont’d)

Page 28: FraSCAti@rivieradev

28

© Copyright 2011 INRIA/ADAM

SCA Hello World Example (cont’d)

Page 29: FraSCAti@rivieradev

29

© Copyright 2011 INRIA/ADAM

SCA Benefits A Component Model… •  Hierarchic compositions •  Configurable properties •  Provided/required ports •  Synchronous/asynchronous invocations •  Communication bindings •  Intent and policy supports

…for SOA •  OASIS standard •  Industry acceptance (Apache Tuscany, IBM, Eclipse, …)

4 degrees of flexibility / adaptability •  Implementation language (Java, C++, BPEL, etc.) •  Interface description language (Java, WSDL, etc.) •  Communication protocol (SOAP, IIOP, etc.) •  Non-functional properties (security, transactions, etc.)

Page 30: FraSCAti@rivieradev

30

© Copyright 2011 INRIA/ADAM

SCA Limitations

Static configuration & deployment •  XML file for describing composite components •  Lack of deployment API

No runtime adaptation & reconfiguration •  Lack of introspection API •  Lack of reconfiguration API

SCA is not a reflective component model

You want FraSCAti!

Page 31: FraSCAti@rivieradev

31

FraSCAti

Page 32: FraSCAti@rivieradev

32

© Copyright 2011 INRIA/ADAM

FraSCAti Overview

•  A framework for SOA interoperability and integration

•  A reflective SCA component model and framework •  Runtime adaptability •  Lightweight, efficient, predictable, scalable

•  Components everywhere •  Adaptability of all software layers

•  An open source SCA implementation •  LGPLv2 at http://frascati.ow2.org

Page 33: FraSCAti@rivieradev

33

© Copyright 2011 INRIA/ADAM

Middleware made from middleware

Middleware for integrating middleware

Apache CXF SOA stack

(WS, REST)

Spring Framework

OSGi Apache Felix

Equinox

OW2 PEtALS JBI ESB

Java RMI

JSON RPC

Java Script

Engines

Easy BPEL Engine

.

.

.

JMS JORAM

API

Interoperability Integration

Page 34: FraSCAti@rivieradev

34

© Copyright 2011 INRIA/ADAM

Interoperability with FraSCAti

•  Interoperability is supported by SCA bindings •  Web Service / SOAP / WSDL via Apache CXF •  JMS via OW2 JORAM

•  REST / WADL •  JSON-RPC •  UPnP •  Java RMI

Page 35: FraSCAti@rivieradev

35

© Copyright 2011 INRIA/ADAM

Integration with FraSCAti •  Integration is mainly supported by SCA implementations

•  SCA composite •  Java POJO and @SCA •  BPEL •  Spring

•  Fractal •  OSGi •  Script

–  BeanShell, Fscript, Groovy, JavaScript, Jython, Jruby, Xquery •  Scala

•  HTTP servlet binding

•  C interface/implementation/binding

•  JMX

Page 36: FraSCAti@rivieradev

36

© Copyright 2011 INRIA/ADAM

Multiple programming languages

•  FraSCAti is implemented in Java •  need a JVM at runtime

•  But not limited to Java only •  BPEL •  Spring •  BeanShell, Fscript, Groovy, JavaScript, Jython, JRuby, Xquery, … •  Scala •  C

Page 37: FraSCAti@rivieradev

37

© Copyright 2011 INRIA/ADAM

Adaptability, reconfiguration, reflective systems

•  Adaptability at runtime is reconfiguration •  Examine and modify running systems

•  “A system which can examine and modify its own state is said to be reflective” [google] •  Introspection is “examine” •  Intercession is “modify”

•  Reconfiguration is introspection then intercession on reflective systems

•  FraSCAti brings reflexivity and reconfiguration to SCA

Page 38: FraSCAti@rivieradev

38

© Copyright 2011 INRIA/ADAM

FraSCAti: The marriage of SCA and Fractal

Reflective SCA Applications SOA for Fractal

FraSCAti An open SCA runtime platform

built on top of OW2 Fractal

ANR 2007-2009

Page 39: FraSCAti@rivieradev

39

© Copyright 2011 INRIA/ADAM

An open reflective SCA platform

Reflective SCA component model

Middleware for integrating middleware

FraSCAti Explorer

Ad-hoc manual & anticipated scripted reconfiguration

FraSCAti FScript

Apache CXF SOA stack

(WS, REST)

Spring Framework

OSGi Apache Felix

Equinox

OW2 PEtALS JBI ESB

Java RMI

JSON RPC

Java Script

Engines

Easy BPEL Engine

.

.

.

JMS JORAM

API

Interoperability Integration

FraSCAti JMX

FraSCAti REST API

Page 40: FraSCAti@rivieradev

40

© Copyright 2011 INRIA/ADAM

FraSCAti Explorer - an SCA microscope

Page 41: FraSCAti@rivieradev

41

© Copyright 2011 INRIA/ADAM

FraSCAti Explorer more than just an SCA microscope

Page 42: FraSCAti@rivieradev

42

© Copyright 2011 INRIA/ADAM

FraSCAti Explorer Load SCA composites

Visualize, introspect, navigate within SCA composites •  Components •  Services / References / Bindings / Wires •  Properties •  Intents

Reconfiguration actions •  Start/stop SCA components •  Add/remove SCA components / wires / bindings / intents •  Update SCA properties / intents •  Update SCA bindings

–  Web service address –  Java RMI port and exported name

Page 43: FraSCAti@rivieradev

43

© Copyright 2011 INRIA/ADAM

FraSCAti JMX

Page 44: FraSCAti@rivieradev

44

© Copyright 2011 INRIA/ADAM

Reconfiguring SCA applications with FraSCAti

•  Interactively via FraSCAti Explorer or JMX

•  Programmatically via FraSCAti API or Fscript

Page 45: FraSCAti@rivieradev

45

© Copyright 2011 INRIA/ADAM

Fscript/Fpath for SCA

composite = $domain/scachild::MyComposite;

account = $composite/scachild::AccountFacade;

accountRef = $account/scareference::AccountData;

stop($account); // (1)

unwire($accountRef); // (2)

newAccountData = sca-new(«NewAccountDataServiceComponent»); // (3a)

add($composite, $newAccountData); // (3b)

wire($accountRef, $newAccountData/scaservice::Data); // (4)

start($account); // (5)

Page 46: FraSCAti@rivieradev

46

© Copyright 2011 INRIA/ADAM

FraSCAti Aspect Components (FAC)

•  Non functional concerns as shared & reflective FraSCAti composites

•  AOP for crosscutting concerns

Page 47: FraSCAti@rivieradev

47

© Copyright 2011 INRIA/ADAM

FraSCAti UML Diagram Sequence Aspect

Page 48: FraSCAti@rivieradev

48

OW2 FraSCAti SCA-based Architecture

Page 49: FraSCAti@rivieradev

49

© Copyright 2011 INRIA/ADAM

OW2 FraSCAti

•  Itself an SCA application

•  13 composites

•  91 components

•  Biggest SCA application to our knowledge

•  Most of features implemented by one SCA component

Page 50: FraSCAti@rivieradev

50

© Copyright 2011 INRIA/ADAM

Self-introspecting with FraSCAti Explorer

Page 51: FraSCAti@rivieradev

51

© Copyright 2011 INRIA/ADAM

Self-introspecting with FraSCAti JMX

Page 52: FraSCAti@rivieradev

52

© Copyright 2011 INRIA/ADAM

FraSCAti « à la carte »

•  Support the extensible nature of SCA •  <sca:implementation> •  <sca:interface> •  <sca:binding> •  SCA intents

•  Select the right subset of FraSCAti features to meet application requirements and system constraints

•  Add new application-specific FraSCAti features

•  FraSCAti is self implemented

Page 53: FraSCAti@rivieradev

53

© Copyright 2011 INRIA/ADAM

FraSCAti Extensible Architecture in SCA

Page 54: FraSCAti@rivieradev

54

© Copyright 2011 INRIA/ADAM

FraSCAti « à la carte » disk footprint

•  256Kb FraSCAti reflective kernel –  API + membrane controllers

•  500Kb + mininal FraSCAti architecture

•  2,4Mb + minimal FraSCAti architecture –  Around 2Mb for EMF & SCA MM

•  2,9Mb + membrane generation on the fly –  Using JDK6 compiler

•  6,9Mb + Eclipse Java compiler (JDT) –  Around 4Mb for JDT

•  … + FraSCAti features you need

•  40Mb All FraSCAti 1.4 features

Page 55: FraSCAti@rivieradev

55

Use

Cases

Page 56: FraSCAti@rivieradev

56

© Copyright 2011 INRIA/ADAM

FraSCAti industrial users

•  Demonstrators from SCOrWare, Cappucino, ITEmIS, SALTY, Macchiato, EasySOA, SocEDA projects

•  Embedded as a JBI Service Engine in OW2 PEtALS (EBM WS) •  Deploying SCA composites on PEtALS ESB

•  Embedded as an SOA library in OW2 Scarbo (Open Wide) •  FraSCAti as an SOA binding factory

•  Component framework for EasyVIPER, EasyBPEL and EasyESB (Petals Link) •  Easy* components implemented as FraSCAti components

Page 57: FraSCAti@rivieradev

57

© Copyright 2011 INRIA/ADAM

EasyViper

http://research.petalslink.org/display/easybpel

Page 58: FraSCAti@rivieradev

58

© Copyright 2011 INRIA/ADAM

FraSCAti and EasyBPEL

Page 59: FraSCAti@rivieradev

59

© Copyright 2011 INRIA/ADAM

EasyESB

http://research.petalslink.org/display/easyesb

Page 60: FraSCAti@rivieradev

60

Page 61: FraSCAti@rivieradev

61

© Copyright 2011 INRIA/ADAM

FraSCAti tooling

•  OW2 Forge (SVN, Mailing lists, releases distribution, web site)

•  OW2 Jira (bug tracker, tasks planner)

•  Jenkins (continuous integration)

•  Nexus (repository manager)

•  Sonar (code quality)

Page 62: FraSCAti@rivieradev

62

© Copyright 2011 INRIA/ADAM

FraSCAti tooling

Page 63: FraSCAti@rivieradev

63

Conclusion

Page 64: FraSCAti@rivieradev

64

© Copyright 2011 INRIA/ADAM

What you should keep in mind about

•  A framework for SOA interoperability and integration •  A middleware of middleware

•  A reflective component model for SOA •  FraSCAti = SCA + Fractal + FAC + ACO + CBM

•  Used at any software level •  SOA applications •  FraSCAti platform and its plugins •  Non functional crosscutting concerns, aka SCA intents •  Component-based reflective membranes •  New middleware, e.g., EasyBPEL/EasyViper

•  Visit the FraSCAti Web site: http://frascati.ow2.org •  Read [SCC’09] and [SPE’11]

Page 65: FraSCAti@rivieradev

65

© Copyright 2011 INRIA/ADAM

Large scale software systems need

•  Interoperability

•  Integration

•  Configuration

•  Deployment

•  Observation

•  Reconfiguration

•  . . .

•  Various forms of flexibility/adaptability

You want FraSCAti! for your business

Page 66: FraSCAti@rivieradev

66

© Copyright 2011 INRIA/ADAM

New features for OW2 FraSCAti 1.5

•  See http://jira.ow2.org/browse/FRASCATI

•  <implementation.osgi> with Concierge

•  <implementation.velocity> with Apache Velocity

•  <interface.wadl>

•  <binding.osgi>

•  <binding.jgroup>

•  Deployment on OSGi

•  Deployment on J2ME

•  Web-based FraSCAti Explorer

Page 67: FraSCAti@rivieradev

67

© Copyright 2011 INRIA/ADAM

FraSCAti Technical Perspectives

•  EasySOA FUI project •  FraSCAti running on OSGi •  SCA-based Web components and bindings •  Google RPC binding •  Data-oriented components with Talend •  Deployment from Jetty to GAE •  Improving scripting language support •  Web-based FraSCAti Explorer

•  Other projects within ADAM •  Security •  J2ME

Page 68: FraSCAti@rivieradev

68

Demonstration

FraSCAti @ cloudbees

Page 69: FraSCAti@rivieradev

69

© Copyright 2011 INRIA/ADAM

Thanks for your attention

•  Who would like to use SCA?

•  Who would like to try FraSCAti?

•  Any questions?

Page 70: FraSCAti@rivieradev

70

© Copyright 2011 INRIA/ADAM

FraSCAti everywhere, what else?

Visit http://frascati.ow2.org

Contact •  Philippe Merle: [email protected] •  Lionel Seinturier: [email protected]

Page 71: FraSCAti@rivieradev

71

© Copyright 2011 INRIA/ADAM

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 •  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://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

Page 72: FraSCAti@rivieradev

72

© Copyright 2011 INRIA/ADAM

Acknowledgements •  Slides from

•  Philippe Merle - INRIA •  Lionel Seinturier – University of Lille •  Romain Rouvoy – University of Lille •  Rémi Melisson – Orange Labs •  Rémi Druilhe – Orange Labs

•  All FraSCAti team members •  Christophe Demarey (INRIA), Michel Dirix (INRIA), Nicolas Dolet

(INRIA), Damiel Fournier (INRIA), Christophe Munilla (INRIA), Nicolas Petitprez (INRIA), Valerio Schiavoni (INRIA), Guillaume Surrel (ScalAgent)

•  Mahmoud Ben Hassine (INRIA), Pierre Carton (INRIA), Jonathan Labejof (Thalès), Adel Noureddine (INRIA), Russel Nzekwa (INRIA), Nicolas Pessemier (INRIA), Clément Quinton (INRIA), Daniel Romero (INRIA)

•  …