Your SlideShare is downloading. ×
  • Like
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

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

  • 1,162 views
Published

 

Published 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

Views

Total Views
1,162
On SlideShare
0
From Embeds
0
Number of Embeds
7

Actions

Shares
Downloads
29
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. IBM Software Group 1 http://tuscany.apache.org Luciano Resende lresende@apache.org http://lresende.blogspot.com Jean-Sebastien Delfino jsdelfino@apache.org http://jsdelfino.blogspot.com SCA Reaches the Cloud Developing Composite Applications for the Cloud with Apache Tuscany
  • 2. IBM Software Group 2 http://tuscany.apache.org 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
  • 3. IBM Software Group 3 http://tuscany.apache.org Cloud Computing
  • 4. IBM Software Group 4 http://tuscany.apache.org Cloud Computing – Some Goals  Up and running in seconds  Cheap  Scale up and down  Agile, reconfigure applications as business evolves
  • 5. IBM Software Group 5 http://tuscany.apache.org 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?
  • 6. IBM Software Group 6 http://tuscany.apache.org What is SCA ?
  • 7. IBM Software Group 7 http://tuscany.apache.org 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
  • 8. IBM Software Group 8 http://tuscany.apache.org 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
  • 9. IBM Software Group 9 http://tuscany.apache.org SCA – Assembly Model Composite A Component AService Service Binding - Web Service - JMS - JCA - SLSB - HTTP - JSONRPC - ATOM - … Reference Binding Component B Service Interface - Java - WSDL Reference Interface - Java interface - WSDL PortType Reference property setting Property promotepromote wire Implementation - Web Service - JMS - JCA - SLSB - HTTP - JSONRPC - ATOM - … - Java - BPEL - SCA Composite - Spring - JEE - Scripting: Groovy, JScript, PHP, Python, Ruby, … - XQuery - …
  • 10. IBM Software Group 10 http://tuscany.apache.org SCA – Example assembly Store Catalog Currency Converter http currencyCode=USD jsonrpc ShoppingCart atom jsonrpc Collection Total <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"> <component name="Store"> <t:implementation.widget location="uiservices/store.html"/> <service name="Widget"> <t:binding.http uri="/store"/> </service> <reference name="catalog" target="Catalog"/> <reference name="shoppingCart" target="ShoppingCart/Cart"/> <reference name="shoppingTotal" target="ShoppingCart/Total"/> </component> <component name="Catalog"> <implementation.java class="services.FruitsCatalogImpl"/> <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>
  • 11. IBM Software Group 11 http://tuscany.apache.org 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);
  • 12. IBM Software Group 12 http://tuscany.apache.org SCA – if you like Java annotations Component Account Service implmentation @Remotable public interface AccountService { AccountReport getAccountReport(String customerID); } 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; } … }
  • 13. IBM Software Group 13 http://tuscany.apache.org SCA – if you like to click around • Eclipse STP Tools project provides SCA tooling
  • 14. IBM Software Group 14 http://tuscany.apache.org SCA – Typical Scenarios
  • 15. IBM Software Group 15 http://tuscany.apache.org 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"> <component name="Store"> <t:implementation.widget location="uiservices/store.html"/> <service name="Widget"> <t:binding.http uri="/store"/> </service> <reference name="catalog" target="Catalog"/> <reference name="shoppingCart" target="ShoppingCart/Cart"/> <reference name="shoppingTotal" target="ShoppingCart/Total"/> </component> <component name="Catalog"> <implementation.java class="services.FruitsCatalogImpl"/> <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> Store Catalog Currency Converter currencyCode=USD jsonrpc ShoppingCart atom jsonrpc Collection Total
  • 16. IBM Software Group 16 http://tuscany.apache.org Gateway / Mediation Gateway jsonrpc Service <composite xmlns=http://docs.oasis- 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> </composite> Service ShoppingCart
  • 17. IBM Software Group 17 http://tuscany.apache.org Feed Aggregator / Converter ATOM Aggregator Sort RSS Aggregator RSS ATOM RSS ATOM <composite xmlns=http://docs.oasis-open.org/ns/opencsa/sca/200903 xmlns:t=http://tuscany.apache.org/xmlns/sca/1.1 targetNamespace=http://store name=”feedAgregator"> <component name="AtomAggregator"> <implementation.java class="feed.AggregatorImpl"/> <reference name="sort" target="Sort"/> <reference name="atomFeed1"> <tuscany:binding.atom uri="http://apache-tuscany.blogspot.com/feeds/posts/default"/> </reference> <reference name="atomFeed2"> <tuscany:binding.atom uri="http://feeds.feedburner.com/blogspot/Dcni?format=xml"/> </reference> <property name="feedTitle">Atom Aggregator Sample</property> </component> <component name="Sort"> <implementation.java class="feed.SortImpl"/> <property name="newFirst">true</property> </component> </composite>
  • 18. IBM Software Group 18 http://tuscany.apache.org Business Integration – Travel Booking Process JEE Components POJOs Spring Assemblies Scripting Components BPEL Processes T u s c a n y S C A T o u r s U I T r a v e l C a t a l o g T r i p B o o k i n g H o t e l P a r t n e r F l i g h t P a r t n e r C a r P a r t n e r C u r r e n c y C o n v e r t e r T r i p P a r t n e r J a v a J a v a J a v a J a v a W i d g e t 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 8 4 )f u l l a p p - p a c k a g e d t r i p ( 8 0 8 5 ) f u l l a p p - b e s p o k e t r i p ( 8 0 8 6 ) f u l l a p p - c u r r e n c y ( 8 0 8 3 ) E J B J a v a J a v a > l s - l s a S C A T o u r s J a v a 1 2 3 4 5 6 7 8 9
  • 19. IBM Software Group 19 http://tuscany.apache.org Apache Tuscany
  • 20. IBM Software Group 20 http://tuscany.apache.org 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
  • 21. IBM Software Group 21 http://tuscany.apache.org 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!
  • 22. IBM Software Group 22 http://tuscany.apache.org Tuscany Demo – SCA Component Wiring Currency Converter currencyCode=USD jsonrpc Catalog Fruit Catalog ((Python)) Fruit Catalog (Java) store Configuration Repository Fruit Catalog ((Native)) Tuscany Runtime Shell
  • 23. IBM Software Group 23 http://tuscany.apache.org Apache Nuvem Components for the Cloud
  • 24. IBM Software Group 24 http://tuscany.apache.org 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!
  • 25. IBM Software Group 25 http://tuscany.apache.org 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?
  • 26. IBM Software Group 26 http://tuscany.apache.org 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
  • 27. IBM Software Group 27 http://tuscany.apache.org Nuvem Demo – Technical Components Currency Converter currencyCode=USD jsonrpc Catalog Vegetables Catalog store ShoppingCart Manager User MapDocument Service MapDocument Service
  • 28. IBM Software Group 28 http://tuscany.apache.org 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
  • 29. IBM Software Group 29 http://tuscany.apache.org Cloud Components  What's your wish list?
  • 30. IBM Software Group 30 http://tuscany.apache.org Getting Involved with Apache Tuscany
  • 31. IBM Software Group 31 http://tuscany.apache.org 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
  • 32. IBM Software Group 32 http://tuscany.apache.org 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
  • 33. IBM Software Group 33 http://tuscany.apache.org Getting Involved with Apache Nuvem
  • 34. IBM Software Group 34 http://tuscany.apache.org Apache Nuvem Resources  Apache Nuvem  http://incubator.apache.org/nuvem/  Getting Involved  http://incubator.apache.org/nuvem/nuvem-getting-involved.html
  • 35. IBM Software Group 35 http://tuscany.apache.org Thank You !!!