• Like


Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany

Uploaded on


More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads


Total Views
On Slideshare
From Embeds
Number of Embeds



Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

    No notes for slide


  • 1. IBM Software Group SCA Reaches the Cloud Developing Composite Applications for the Cloud with Apache Tuscany Luciano Resende lresende@apache.org http://lresende.blogspot.com Jean-Sebastien Delfino jsdelfino@apache.org http://jsdelfino.blogspot.com 1 http://tuscany.apache.org
  • 2. IBM Software Group Agenda  Cloud Computing – Goals and Challenges  SCA – Goals and Overview  SCA – Typical Scenarios  Apache Tuscany  Tuscany Demo – Rewiring Components in the Cloud  Apache Nuvem  Nuvem Demo – Cloud friendly Components  Your Wish list?  Getting Involved 2 http://tuscany.apache.org
  • 3. IBM Software Group Cloud Computing 3 http://tuscany.apache.org
  • 4. IBM Software Group Cloud Computing – Some Goals  Up and running in seconds  Cheap  Scale up and down  Agile, reconfigure applications as business evolves 4 http://tuscany.apache.org
  • 5. IBM Software Group Cloud Computing – Not so easy?  Different platforms and APIs (even languages) to learn... does my business logic need to know?  Am I getting OS images on demand? Infrastructure? an application platform?  Changing pricing models?  How do I integrate hybrid clouds, on premise + public cloud?  How do the various parts of my app communicate? Which protocols am I using?  How do I assemble / integrate them?  How do I configure the QOS I need?  How do I automate deployment?  Can I move some parts from one cloud to another? 5 http://tuscany.apache.org
  • 6. IBM Software Group What is SCA ? 6 http://tuscany.apache.org
  • 7. IBM Software Group SCA - Goals  Abstract out technical APIs, protocols, QOS  Allow me to focus on my business logic  Give me a structure for componentizing my app  Help me assemble, wire, rewire, move parts around  OASIS Standard (in progress)  Open Source implementations  Apache Tuscany  Fabric3  a few others  Product implementations  Initial target: SOA, Web Services, multi-language apps, application integration 7 http://tuscany.apache.org
  • 8. IBM Software Group Can SCA components help you in the cloud?  We've been using different clouds in our Apache Tuscany work and are starting to realize that SCA components can help there too!  Components that easily communicate over a network  Components that shield you from different infrastructures  A way to describe your app and how it's assembled / wired  and can be distributed in a cloud or multiple clouds  Move components around clouds and rewire your app 8 http://tuscany.apache.org
  • 9. IBM Software Group SCA – Assembly Model Service Interface Reference Interface - Java Property - Java interface - WSDL - WSDL PortType Composite A property setting Component Component Service A B Reference promote wire promote Service Binding Implementation Reference Binding - Web Service - Java - Web Service - JMS - BPEL - JMS - JCA - SCA Composite - JCA - SLSB - Spring - SLSB - HTTP - JEE - HTTP - JSONRPC - Scripting: Groovy, JScript, PHP, Python, Ruby, … - JSONRPC - ATOM - XQuery - ATOM -… -… -… 9 http://tuscany.apache.org
  • 10. IBM Software Group SCA – Example assembly <composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://store" Collection atom name="store"> ShoppingCart <component name="Store"> <t:implementation.widget location="uiservices/store.html"/> <service name="Widget"> Store <t:binding.http uri="/store"/> jsonrpc </service> Total <reference name="catalog" target="Catalog"/> <reference name="shoppingCart" target="ShoppingCart/Cart"/> currencyCode=USD <reference name="shoppingTotal" target="ShoppingCart/Total"/> http </component> jsonrpc Currency <component name="Catalog"> Catalog <implementation.java class="services.FruitsCatalogImpl"/> Converter <property name="currencyCode">USD</property> <service name="Catalog"> <t:binding.jsonrpc/> </service> <reference name="currencyConverter" target="CurrencyConverter"/> </component> <component name="ShoppingCart"> <implementation.java class="services.ShoppingCartImpl"/> <service name="Cart"> <t:binding.atom uri="/ShoppingCart/Cart"/> </service> <service name="Total"> <t:binding.jsonrpc/> </service> </component> <component name="CurrencyConverter"> <implementation.java class="services.CurrencyConverterImpl"/> </component> </composite> 10 http://tuscany.apache.org
  • 11. IBM Software Group SCA – if you don't like XML final Composite comp = build(composite("http://sample", "test", component("client-test", implementation(ClientTest.class, service(Client.class), reference("jello", Hello.class), reference("wello", Hello_wsdl)), reference("jello", "jello-test"), reference("wello", "wello-test")), component("wello-test", implementation(WelloTest.class, service(Hello_wsdl), reference("upper", Upper_wsdl)), reference("upper", "upper-test")), component("jello-test", implementation(JelloTest.class, service(Hello.class), reference("upper", Upper.class)), reference("upper", "upper-test")), component("upper-test", implementation(UpperTest.class, service(Upper.class)))), ec); 11 http://tuscany.apache.org
  • 12. IBM Software Group SCA – if you like Java annotations @Remotable Component public interface AccountService { Account Service AccountReport getAccountReport(String customerID); } implmentation public class AccountServiceImpl implements AccountService { … @Reference public void setAccountDataService(AccountDataService value) { accountDataService = value; } @Reference public void setStockQuoteService(StockQuoteService value) { stockQuoteService = value; } @Property public void setCurrency(String value) { currency = value; } … } 12 http://tuscany.apache.org
  • 13. IBM Software Group SCA – if you like to click around • Eclipse STP Tools project provides SCA tooling 13 http://tuscany.apache.org
  • 14. IBM Software Group SCA – Typical Scenarios 14 http://tuscany.apache.org
  • 15. IBM Software Group Online Store <composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" xmlns:t="http://tuscany.apache.org/xmlns/sca/1.1" targetNamespace="http://store" name="store"> Collection atom <component name="Store"> ShoppingCart <t:implementation.widget location="uiservices/store.html"/> <service name="Widget"> <t:binding.http uri="/store"/> Store </service> jsonrpc <reference name="catalog" target="Catalog"/> Total <reference name="shoppingCart" target="ShoppingCart/Cart"/> <reference name="shoppingTotal" target="ShoppingCart/Total"/> currencyCode=USD </component> <component name="Catalog"> jsonrpc <implementation.java class="services.FruitsCatalogImpl"/> Currency Catalog <property name="currencyCode">USD</property> Converter <service name="Catalog"> <t:binding.jsonrpc/> </service> <reference name="currencyConverter" target="CurrencyConverter"/> </component> <component name="ShoppingCart"> <implementation.java class="services.ShoppingCartImpl"/> <service name="Cart"> <t:binding.atom uri="/ShoppingCart/Cart"/> </service> <service name="Total"> <t:binding.jsonrpc/> </service> </component> <component name="CurrencyConverter"> <implementation.java class="services.CurrencyConverterImpl"/> </component> </composite> 15 http://tuscany.apache.org
  • 16. IBM Software Group Gateway / Mediation Service Gateway jsonrpc <composite xmlns=http://docs.oasis- ShoppingCart open.org/ns/opencsa/sca/200903 xmlns:t=http://tuscany.apache.org/xmlns/sca/1.1 targetNamespace=http://store name=”gateway"> <component name=”Gateway"> <implementation.java class="services.GatewayImpl"/> <service name=”A"> <t:binding.jsonrpc/> </service> <reference name=”refService”> <binding.x uri=“http://domain:8080/atomService”> </reference> </component> Service </composite> 16 http://tuscany.apache.org
  • 17. IBM Software Group Feed Aggregator / Converter <composite xmlns=http://docs.oasis-open.org/ns/opencsa/sca/200903 xmlns:t=http://tuscany.apache.org/xmlns/sca/1.1 RSS targetNamespace=http://store name=”feedAgregator"> RSS Aggregator <component name="AtomAggregator"> <implementation.java class="feed.AggregatorImpl"/> <reference name="sort" target="Sort"/> ATOM <reference name="atomFeed1"> Sort <tuscany:binding.atom uri="http://apache-tuscany.blogspot.com/feeds/posts/default"/> </reference> RSS <reference name="atomFeed2"> ATOM <tuscany:binding.atom Aggregator uri="http://feeds.feedburner.com/blogspot/Dcni?format=xml"/> </reference> <property name="feedTitle">Atom Aggregator Sample</property> ATOM </component> <component name="Sort"> <implementation.java class="feed.SortImpl"/> <property name="newFirst">true</property> </component> </composite> 17 http://tuscany.apache.org
  • 18. IBM Software Group Business Integration – Travel Booking Process f u l l a p p - u i ( 8 0 8 0 ) f u l l a p p - f r o n t e n d ( 8 0 f8 u 4 l l ) a p p - p a c k a g e d t r i p ( 8 0 8 5 ) T r i p T r a v e l C a t a l o g P a r t n e r J a v a T u s c a n y S C A T o u r s U I S C A T o u r s > l s - ls a J a v a f u l l a p p - b e s p o k e t r i p ( 8 0 8 6 ) H o t e l P a r t n e r T r i p B o o k i n g J a v a 1 2 3 4 5 6 F l i g h t 7 8 9 W i d g e t J a v a P a r t n e r J a v a JEE Components J a v a C a r POJOs Spring Assemblies P a r t n e r J a v a Scripting Components f u l l a p p - c u r r e n c y ( 8 0 8 3 BPEL Processes ) C u r r e n c y C o n v e r t e r E J B 18 http://tuscany.apache.org
  • 19. IBM Software Group Apache Tuscany 19 http://tuscany.apache.org
  • 20. IBM Software Group Apache Tuscany  Lightweight SCA runtimes  Leverage and integrate with the Apache platform  Active Open-Source community, started in 2005  “Release early release often”, many releases  Two release streams, 1.x (stable), 2.x (trunk)  Working on OASIS SCA compliance  Innovations beyond the SCA spec (JSON, REST, ATOM, Comet etc)  SCA Java runtime, standalone or on Google AppEngine / Java, supports Java, scripting, BPEL, Spring components, and many protocol bindings  SCA Python runtime on Google AppEngine / Python  SCA Native, supports C++ and Python components 20 http://tuscany.apache.org
  • 21. IBM Software Group Tuscany Demo – SCA Component Rewiring  SCA Java Application on EC2  Push one component out to Google AppEngine / Java  Rewrite it in Python and move it Google AppEngine / Python  Move it to a native SCA runtime on EC2  Easy runtime reconfiguration as you rewire the app  You've got choices, and can be agile! 21 http://tuscany.apache.org
  • 22. IBM Software Group Tuscany Demo – SCA Component Wiring Configuration Repository Fruit Catalog ((Native)) store Tuscany Runtime Currency Shell Converter Fruit Catalog currencyCode=USD ((Python)) Catalog jsonrpc Fruit Catalog (Java) 22 http://tuscany.apache.org
  • 23. IBM Software Group Apache Nuvem Components for the Cloud 23 http://tuscany.apache.org
  • 24. IBM Software Group Apache Nuvem - Overview  New project in the Apache incubator  Initial code contribution from Apache Tuscany  A few technical components already there  Running on Google AppEngine, today's demo also on EC2  Project is just starting so there's a lot of room for innovation! 24 http://tuscany.apache.org
  • 25. IBM Software Group Nuvem, REST, and Cloud friendly Components  With REST, components get a simple GET/POST/PUT/DELETE interface  More importantly it's a fixed interface  Making components easier to assemble and compose  Like Lego blocks!  Web apps are starting to favor a protocol short list  HTTP verbs with some format variations (XML, ATOM, RSS, JSON)  That helps too!  What if you had a palette of Cloud friendly components?  Accessible through a simple REST interface  To help simplify your apps and enable them to work on different clouds? 25 http://tuscany.apache.org
  • 26. IBM Software Group Nuvem Demo – Technical Components  SCA Java runtime on Google AppEngine / Java  Using different implementations of a simple datastore component  First using a HashMap  Second using Google's Memcached 26 http://tuscany.apache.org
  • 27. IBM Software Group Nuvem Demo – Technical Components store Currency Converter User currencyCode=USD Vegetables Catalog Catalog jsonrpc MapDocument Service ShoppingCart Manager MapDocument Service 27 http://tuscany.apache.org
  • 28. IBM Software Group Nuvem Components – Wish list  Simple data store cache  Hierarchical cache, which can delegate to another cache  Invocation cache, which caches responses to requests  Key/value datastore  Simple (S)QL datastore  Datastore that understands master/slave replication and sharding  XMPP chat  Message queue  Oauth 1.0/2.0 + OpenID  User profile 28 http://tuscany.apache.org
  • 29. IBM Software Group Cloud Components  What's your wish list? 29 http://tuscany.apache.org
  • 30. IBM Software Group Getting Involved with Apache Tuscany 30 http://tuscany.apache.org
  • 31. IBM Software Group SCA - Resources  Good introduction to SCA  http://www.davidchappell.com/articles/Introducing_SCA.pdf  OASIS Open CSA – http://www.oasis-opencsa.org  V1.1 level specs  http://www.oasis-opencsa.org/sca  Open CSA Technical Committees  http://www.oasis-opencsa.org/committees  OSOA  http://osoa.org/display/Main/Home  More information on that site  http://osoa.org/display/Main/SCA+Resources 31 http://tuscany.apache.org
  • 32. IBM Software Group Apache Tuscany Resources  Apache Tuscany  http://tuscany.apache.org  Getting Involved  http://tuscany.apache.org/getting-involved.html  Tuscany SCA Java Releases  http://tuscany.apache.org/sca-java-2x-releases.html  http://tuscany.apache.org/sca-java-releases.html  Tuscany SCA Java Documentation  http://tuscany.apache.org/java-sca-documentation-menu.html  Tuscany Dashboard  http://tuscany.apache.org/tuscany-dashboard.html 32 http://tuscany.apache.org
  • 33. IBM Software Group Getting Involved with Apache Nuvem 33 http://tuscany.apache.org
  • 34. IBM Software Group Apache Nuvem Resources  Apache Nuvem  http://incubator.apache.org/nuvem/  Getting Involved  http://incubator.apache.org/nuvem/nuvem-getting-involved.html 34 http://tuscany.apache.org
  • 35. IBM Software Group Thank You !!! 35 http://tuscany.apache.org