SlideShare a Scribd company logo
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
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
IBM Software Group
3
http://tuscany.apache.org
Cloud Computing
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
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?
IBM Software Group
6
http://tuscany.apache.org
What is SCA ?
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
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
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
- …
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>
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);
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;
}
…
}
IBM Software Group
13
http://tuscany.apache.org
SCA – if you like to click around
• Eclipse STP Tools project provides SCA tooling
IBM Software Group
14
http://tuscany.apache.org
SCA – Typical Scenarios
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
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
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>
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
IBM Software Group
19
http://tuscany.apache.org
Apache Tuscany
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
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!
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
IBM Software Group
23
http://tuscany.apache.org
Apache Nuvem
Components for the Cloud
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!
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?
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
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
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
IBM Software Group
29
http://tuscany.apache.org
Cloud Components
 What's your wish list?
IBM Software Group
30
http://tuscany.apache.org
Getting Involved
with Apache Tuscany
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
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
IBM Software Group
33
http://tuscany.apache.org
Getting Involved
with Apache Nuvem
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
IBM Software Group
35
http://tuscany.apache.org
Thank You !!!

More Related Content

PDF
Laravel tutorial
PDF
SCA Reaches the Cloud
PPTX
Getting started with laravel
PPTX
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
PPT
Lamp
PPTX
Laravel Tutorial PPT
PPTX
Phalcon 2 High Performance APIs - DevWeekPOA 2015
PPTX
Laravel overview
Laravel tutorial
SCA Reaches the Cloud
Getting started with laravel
Laravel development (Laravel History, Environment Setup & Laravel Installatio...
Lamp
Laravel Tutorial PPT
Phalcon 2 High Performance APIs - DevWeekPOA 2015
Laravel overview

What's hot (18)

PPTX
Introduction to laravel framework
PDF
Laravel 5.4
PDF
Installing and Getting Started with Alfresco
ODP
Projects In Laravel : Learn Laravel Building 10 Projects
PPT
Php Asp Net Interoperability Rc Jao
PPTX
Laravel ppt
PDF
Flows for APEX
PDF
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
PDF
AWS Observability Made Simple
PPTX
A introduction to Laravel framework
ODP
Jazoon2010 - Edgar Silva - Open source SOA on Steroids
PDF
What is LAMP?
PPTX
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
PDF
APEX richtig installieren und konfigurieren
PDF
Native REST Web Services with Oracle 11g
PPTX
API Development with Laravel
PDF
FOSSASIA 2015: MySQL Group Replication
PDF
Spring In Alfresco Ecm
Introduction to laravel framework
Laravel 5.4
Installing and Getting Started with Alfresco
Projects In Laravel : Learn Laravel Building 10 Projects
Php Asp Net Interoperability Rc Jao
Laravel ppt
Flows for APEX
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
AWS Observability Made Simple
A introduction to Laravel framework
Jazoon2010 - Edgar Silva - Open source SOA on Steroids
What is LAMP?
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
APEX richtig installieren und konfigurieren
Native REST Web Services with Oracle 11g
API Development with Laravel
FOSSASIA 2015: MySQL Group Replication
Spring In Alfresco Ecm
Ad

Viewers also liked (20)

PDF
03 leitor
PPTX
Presentation1
PDF
ApacheCon NA 2010 - High Performance Cloud-enabled SCA Runtimes
PDF
ApacheCon NA 2010 - Building Apps with Apache Tuscany
PDF
GRALHA AZUL no. 57 - JANEIRO 2016
PPT
Job analysis
PPT
аксіоми стереометрії та наслідки з них 10 кл.додаток
PPT
алгебра 8 кл.
PPT
PPT
++++опис досвіду роботи
PPT
вислови про математику
PPT
геометричн ф_гури-завдання
DOC
урок узагальнення по темі - геометричні фігури
PPS
симетрія(додаток до уроку в 9 кл.)
PPT
розвязування задач і вправ з теми вписані і описані чотирикутники,8кл.
DOCX
нетрадиційні форми організації занять з иатематики
DOCX
цикл уроків з теми перпендикулярність прямих і площин
PPT
метеоритний дощ
PDF
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
PDF
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
03 leitor
Presentation1
ApacheCon NA 2010 - High Performance Cloud-enabled SCA Runtimes
ApacheCon NA 2010 - Building Apps with Apache Tuscany
GRALHA AZUL no. 57 - JANEIRO 2016
Job analysis
аксіоми стереометрії та наслідки з них 10 кл.додаток
алгебра 8 кл.
++++опис досвіду роботи
вислови про математику
геометричн ф_гури-завдання
урок узагальнення по темі - геометричні фігури
симетрія(додаток до уроку в 9 кл.)
розвязування задач і вправ з теми вписані і описані чотирикутники,8кл.
нетрадиційні форми організації занять з иатематики
цикл уроків з теми перпендикулярність прямих і площин
метеоритний дощ
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Ad

Similar to ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany (20)

PDF
Building apps with tuscany
PDF
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
PDF
Building RESTful services using SCA and JAX-RS
PPT
Building SOA solutions with Apache Tuscany
PDF
Download full ebook of Tuscany SCA in Action Simon Laws instant download pdf
PPT
FraSCAti Adaptive and Reflective Middleware of Middleware
PDF
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
PDF
Open Source Tools
PDF
Understanding the WSO2 Platform and Technology
PDF
Reconfigurable Service-Oriented Architectures
PPTX
PDF
Roadmap to the Clouds - How to Easily Migrate to the Cloud Platform Using WSO...
PDF
Getting Started with jClouds: Multi Cloud Framework
PDF
Getting started with jClouds
PDF
Java in the Cloud : PaaS Platforms in Comparison
PDF
Java in the Cloud : PaaS Platforms in Comparison
PPTX
Modern application development with oracle cloud sangam17
PDF
Anish Karmakar S C A
PDF
OSGi Cloud Ecosystems (EclipseCon 2013)
PDF
WSO2 Quarterly Technical Update
Building apps with tuscany
S314011 - Developing Composite Applications for the Cloud with Apache Tuscany
Building RESTful services using SCA and JAX-RS
Building SOA solutions with Apache Tuscany
Download full ebook of Tuscany SCA in Action Simon Laws instant download pdf
FraSCAti Adaptive and Reflective Middleware of Middleware
Current State of Affairs – Cloud Computing - Indicthreads Cloud Computing Con...
Open Source Tools
Understanding the WSO2 Platform and Technology
Reconfigurable Service-Oriented Architectures
Roadmap to the Clouds - How to Easily Migrate to the Cloud Platform Using WSO...
Getting Started with jClouds: Multi Cloud Framework
Getting started with jClouds
Java in the Cloud : PaaS Platforms in Comparison
Java in the Cloud : PaaS Platforms in Comparison
Modern application development with oracle cloud sangam17
Anish Karmakar S C A
OSGi Cloud Ecosystems (EclipseCon 2013)
WSO2 Quarterly Technical Update

Recently uploaded (20)

PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
PDF
Encapsulation theory and applications.pdf
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Electronic commerce courselecture one. Pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Approach and Philosophy of On baking technology
PDF
Spectral efficient network and resource selection model in 5G networks
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PDF
Unlocking AI with Model Context Protocol (MCP)
PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
The Rise and Fall of 3GPP – Time for a Sabbatical?
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
PPTX
Understanding_Digital_Forensics_Presentation.pptx
PDF
Chapter 3 Spatial Domain Image Processing.pdf
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
Encapsulation theory and applications.pdf
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Advanced methodologies resolving dimensionality complications for autism neur...
Electronic commerce courselecture one. Pdf
Network Security Unit 5.pdf for BCA BBA.
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Approach and Philosophy of On baking technology
Spectral efficient network and resource selection model in 5G networks
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Unlocking AI with Model Context Protocol (MCP)
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
Digital-Transformation-Roadmap-for-Companies.pptx
The Rise and Fall of 3GPP – Time for a Sabbatical?
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Big Data Technologies - Introduction.pptx
7 ChatGPT Prompts to Help You Define Your Ideal Customer Profile.pdf
Understanding_Digital_Forensics_Presentation.pptx
Chapter 3 Spatial Domain Image Processing.pdf

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

  • 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
  • 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?
  • 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
  • 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
  • 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
  • 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
  • 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
  • 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