• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
FraSCAti Adaptive and Reflective Middleware of Middleware
 

FraSCAti Adaptive and Reflective Middleware of Middleware

on

  • 1,194 views

Tutorial presented during ACM/IFIP/USENIX 12th International Middleware Conference, Lisbon, Portugal, 13th December 2011.

Tutorial presented during ACM/IFIP/USENIX 12th International Middleware Conference, Lisbon, Portugal, 13th December 2011.

Statistics

Views

Total Views
1,194
Views on SlideShare
1,194
Embed Views
0

Actions

Likes
0
Downloads
0
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    FraSCAti Adaptive and Reflective Middleware of Middleware FraSCAti Adaptive and Reflective Middleware of Middleware Presentation Transcript

    • FraSCAti Adaptive and Reflective Middleware of Middleware Philippe Merle (Inria), Romain Rouvoy (U. Lille), Lionel Seinturier (U. Lille) ACM/IFIP/USENIX 12th International Middleware Conference, Lisbon, Portugal, 13th December 2011
    • Outline
      • Towards Middleware of Middleware
      • Service Component Architecture – SCA
      • OW2 FraSCAti
      • Live demo and exercices
    • Towards Middleware of Middleware
    • Middleware Application Operating System Application Operating System Network Middleware © 2003-2008, S. Krakowiak High level API Low level API
    • Middleware
      • + High level abstractions and API
      • + Heterogeneity hidden
      • + Transparent distribution
      • + General purpose services
      Application Operating System Application Operating System Network Middleware © 2003-2008, S. Krakowiak High level API Low level API
    • But a phetora of middleware
      • CORBA
      • Web Services
      • REST
      Application Operating System Application Operating System Network Middleware © 2003-2008, S. Krakowiak High level API Low level API
    • CORBA middleware Application Operating System Application Operating System Network Middleware OMG IDL Low level API © 2003-2008, S. Krakowiak IIOP Components Objects
    • Web Services middleware Application Operating System Application Operating System Network Middleware WSDL Low level API © 2003-2008, S. Krakowiak SOAP Services
    • REST-based middleware Application Operating System Application Operating System Network Middleware URI CRUD Verbs MIME Low level API © 2003-2008, S. Krakowiak Mainly HTTP Resources
    • New operating systems Application Operating System Application Operating System Network Middleware © 2003-2008, S. Krakowiak IaaS PaaS High level API Low level API
    • Middleware of Middleware
      • There is no universal middleware
        • All applications don ’ t use a unique middleware
      • New middleware appears
        • How to integrate them?
      • Old middleware declines
        • How to migrate to other?
      • Applications require components, services, resources, etc.
        • How to combine different paradigms?
    • Four challenges
      • Structuring reusable flexible architectures
            • Combining different paradigms
            • Reusing existing and future middleware
      • Interoperability
        • Orchestrate heterogeneous applications
          • 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 application
          • 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!
    • Service Component Architecture
    • Service Component Architecture (SCA)
      • Technology- agnotic OASIS standard component-based programming model for SOA
      Network Network Sec. Trans. log
    • 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
    • SCA in a Nutshell (cont ’ d)
      • Component implements the business logic
      • Concepts
        • Service(s)
          • Interface type: Java , WSDL
        • Reference(s)
        • Property(s)
        • Implementation
        • Non functional property(s)
          • Intent & policy
      intent
    • SCA in a Nutshell (cont ’ d)
      • Assembly : ”Process of composing business applications by configuring and connecting components that provide service implementations” [SCA Whitepaper]
      • 2 Levels :
      • Module assembly
        • Closely coupled
        • See figure
      • System assembly
        • Loosely Coupled
    • SCA in a Nutshell (cont ’ d) 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 Loosely coupled Loosely coupled Closely coupled Entry Points Entry Points External Service External Service External Services Binding Wire Wire
    • Modelling with Eclipse SCA Tools
    • SCA Hello World Example
    • SCA Hello World Example (cont’d)
    • SCA Hello World Example (cont’d)
    • SCA Hello World Example (cont’d)
    • SCA Hello World Example (cont’d)
    • SCA Hello World Example (cont’d)
    • SCA Hello World Example (cont’d)
    • SCA Hello World Example (cont’d)
    • SCA Hello World Example (cont’d)
    • Crisis Management Orchestration BPEL script Java OSGi
    • SCA Benefits
      • A component model…
        • Hierarchical compositions
        • Configurable properties
        • Provided/required ports
        • Communication bindings
        • Intent and policy supports
        • Synchronous/asynchronous invocations
      • … for SOA
        • OASIS standard
        • Industry acceptance: Apache Tuscany, IBM WebSphere, Eclipse, …
      • 5 degrees of flexibility / adaptability
        • Implementation languages (Java, C++, BPEL, etc.)
        • Interface description languages (Java, WSDL, etc.)
        • Communication protocols (SOAP, IIOP, etc.)
        • Non-functional properties (security, transactions, etc.)
        • Packaging formats (ZIP, OSGi bundles, WAR, etc.)
    • SCA Limitations
      • Static configuration & deployment
        • XML file for describing composite applications
        • 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!
    • FraSCAti
    • FraSCAti Overview
      • A framework for interoperability and integration
        • SCA + extensions
      • A reflective SCA component model and framework
        • Runtime adaptability
      • A Software Product Line for SCA
        • Highly “ à la carte ” , on-demand, modular, configurable, extensible
      • Components everywhere
        • At any software granularity
      • An open source implementation
        • LGPLv2 at http://frascati.ow2.org
    • Interoperability and Integration
    • Interoperability with FraSCAti
      • SCA compliance
        • Web Service / SOAP / WSDL
          • via Apache CXF
        • JMS
          • via OW2 JORAM
      • Beyond SCA
        • REST / WADL
          • Via Apache CXF
        • JSON-RPC
        • UPnP
        • Java RMI
        • JGroups
    • Integration with FraSCAti
      • SCA compliance
        • SCA composite
        • Java POJO and @SCA
        • BPEL
        • Spring
      • Beyond SCA
        • Fractal
        • OSGi
        • Script
          • BeanShell, Fscript, Groovy, JavaScript, Jython, Jruby, Xquery
        • Scala
        • Velocity templates
        • HTTP servlet binding
        • C interface/implementation/binding
    • An open middleware of middleware framework 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 Interoperability Integration
    • Reflective Component Model
    • An open reflective SCA platform Reflective SCA component model Middleware for integrating middleware Ad-hoc manual & anticipated scripted reconfiguration 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 FraSCAti Explorer FraSCAti FScript
    • FraSCAti API & Runtime
      • API = SCA API + 100% Fractal API + 3 new controllers
        • SCA properties
        • SCA intents
        • SCA contents
        • See http://frascati.ow2.org/RECONF-API/
      • Tinfi = Julia - ASM + Juliac + new SCA membranes
        • FraSCAti components also Fractal/Julia components
        • Java source generation for membranes
    • FraSCAti Explorer - an SCA microscope
    • More than just an SCA microscope
    • FraSCAti JMX
    • FraSCAti REST EMF-based metamodel
    • REST-based introspection
    • Reconfiguring SCA applications with
      • Interactively via FraSCAti Explorer or JMX or REST
      • Programmatically via FraSCAti API or FScript/FPath [P.C. David PhD 2005]
    • 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)
    • Reflective SCA component model Middleware for integrating middleware Ad-hoc manual & anticipated scripted reconfiguration 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 FraSCAti Explorer FraSCAti FScript
    • FraSCAti Aspect Components (FAC)
      • Non functional concerns as shared & reflective FraSCAti composites
      • Dynamic AOP for crosscutting concerns
      • Reuse [N. Pessemier PhD 2007]
    • A FraSCAti Aspect Component
    • A FraSCAti Intent Implementation
      • public class MyIntentHandler implements org.ow2.frascati.tinfi.api. IntentHandler {
      • public Object invoke (org.ow2.frascati.tinfi.api. IntentJoinPoint ijp) throws Throwable
      • {
      • // Before the invocation.
      • Object ret = ijp.proceed ();
      • // After the invocation.
      • return ret;
      • } }
    • FraSCAti UML Diagram Sequence Aspect
    • FraSCAti UML Sequence Diagram Aspect Components
    • Software Product Line
    • OW2 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
    • OW2 FraSCAti SPL
      • Highly “ à la carte ” , on-demand, configurable, and extensible
          • Both application requirements and target system constraints
      • Design View
        • 63 features
          • 18 mandatory
          • 45 optional
      • Implementation View
        • 46+ Maven modules
          • Mandatory features grouped into few modules
          • One module by optional feature
      • Execution View
        • 13 composites and 91 components
      • 1 684 077 600 distinct configurations
      • Online at http://frascati.ow2.org/doc/1.4/ch12.htm
    • Various Features in OW2 FraSCAti
      • 33 for SCA developers
        • <implementation.bpel>, …
        • <interface.wsdl>, …
        • <binding.ws>, …
        • Property XML, …
      • 5 for FraSCAti users
        • Compiler/launcher
        • Tools: Explorer, FScript, JMX, Remote Management
      • 25 internals to FraSCAti
        • Supported metamodels
        • Membrane generators
        • Supported Java compilers
        • Membrane factories
    • OW2 FraSCAti Feature Diagram
    • OW2 FraSCAti at S.P.L.O.T.
    • OW2 FraSCAti Main Modules sca-parser.jar component-factory.jar assembly-factory.jar
    • All OW2 FraSCAti Modules Remote Management Binding REST Binding JSON-RPC Implementation Resource Binding Factory Implementation Fractal Binding Java RMI MM FraSCAti Fscript Sca Parser … Implementation FScript Implementation JavaScript Implementation JRuby Implementation Jython Knopflerfish Equinox Apache Felix Implementation Script Implementation OSGi MG + MF Implementation Spring Implementation Xquery Implementation BeanShell Implementation Groovy Interface Native JMX MF Julia MM Native Property JAXB Binding JNA Implementation BPEL Membrane Generation MM UPnP Binding UPnP Explorer MM Tuscany Binding WS Binding JMS Interface WSDL JDT JDK6 Component Factory … Assembly Factory … MG Tinfi Binding HTTP MF Tinfi
    • Root OW2 FraSCAti SCA Composite Assembly Factory Sca Parser Component Factory Binding Factory Explorer Fscript JMX Remote Management
    • OW2 FraSCAti Assembly Factory Assembly Factory Implementations Composite Java Fractal Spring OSGi Resource Script BPEL Interfaces Java WSDL Native Bindings SCA WS UPnP REST JSON-RPC JMS HTTP Java RMI JNA Java XSD JAXB Properties
    • Self-introspecting with FraSCAti Explorer
    • Self-introspecting with FraSCAti JMX
    • FraSCAti « à la carte » disk footprint
    • Use Case
    • EasyESB
      • http://research.petalslink.org/display/easyesb
    • EasyESB
      • http://research.petalslink.org/display/easyesb
      • http://research.petalslink.org/display/easyesb
      EasyESB
    • EasyBPEL http://research.petalslink.org/display/easybpel
    • EasyViper http://research.petalslink.org/display/easyviper
    • Reflective EasyBPEL
    • In the Clouds
    • A phethora of heterogeneous clouds
    • OW2 FraSCAti in the Clouds
      • IaaS supported
        • Amazon EC2
      • PaaS supported
        • Amazon Elastic Beanstalk
    • IaaS PaaS SaaS Amazon Elastic Beanstalk Peer-to-peer monitoring application EC2
    • OW2 FraSCAti Online Demonstration
      • Go to http://frascati.ow2.org
      • Click on « supported Cloud providers »
      • Click on « OW2 FraSCAti in … »
    • Conclusion
    • Component Reflection everywhere AOP SPL DSL for reconfiguration everywhere Fractal
    • What you should keep in mind about
      • A middleware of middleware
        • SOA interoperability and integration
      • A reflective component model for SOA [SCC’09, SPE’11]
        • FraSCAti = SCA + Fractal + FAC + CBM
      • A software product line for SCA
        • Highly “ à la carte ” , on-demand, modular, configurable and extensible
      • At any software granularity
        • SOA applications
        • Non functional crosscutting concerns, aka SCA intents
        • FraSCAti and its plugins
        • Component-based reflective membranes
        • New middleware, e.g., EasyESB/EasyBPEL/EasyViper
    • FraSCAti, what else?
      • Visit http://frascati.ow2.org
      • Contact
        • Philippe Merle: [email_address]
        • Romain Rouvoy [email_address]
        • Lionel Seinturier: [email_address]
    • 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
    • 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 )