SlideShare a Scribd company logo
1 of 26
Download to read offline
IBM Software Group
1
http://tuscany.apache.org
High Performance Cloud-enabled SCA
Runtimes
Luciano Resende
lresende@apache.org
http://lresende.blogspot.com
Jean-Sebastien Delfino
jsdelfino@apache.org
http://jsdelfino.blogspot.com
IBM Software Group
2
http://tuscany.apache.org
Agenda
 SCA – Not just one Runtime
 Apache Tuscany and Sub-Projects
 SCA C++ Runtime
– Usage Scenarios
– How It Works
– Utility Components
– Demo
 SCA Python Runtime
 Usage Scenarios
 How It Works
 Demo
 Getting Involved
IBM Software Group
3
http://tuscany.apache.org
SCA – Not Just One Monolithic Runtime
IBM Software Group
4
http://tuscany.apache.org
Assembly
Implementation
Languages
Policy Framework Bindings
Java Java EE
Spring
C++
BPEL
Security
RM
Transactions
Web services
JMS
JCA
SCA Specifications
• SCA is going through a formal standardization process at
OASIS OpenCSA (http://www.oasis-opencsa.org)
IBM Software Group
5
http://tuscany.apache.org
OASIS Open CSA - http://www.oasis-opencsa.org/
IBM Software Group
6
http://tuscany.apache.org
SCA Assembly Model
Composite A
Component
AService
Service Binding
Web Service
JMS
SLSB
Rest
JSONRPC
JCA
…
Reference Binding
Web Service
JMS
SLSB
Rest
JSONRPC
JCA
…
Component
B
Service Interface
- Java
- WSDL
Reference Interface
Reference
property setting
Property
promotepromote wire
Implementation
Java
BPEL
PHP
SCA composite
Spring
EJB module
C
C++
Python
...
- Java
- WSDL
IBM Software Group
7
http://tuscany.apache.org
SCA Domain
A common assembly model
A distributed deployment
of the assembly
SCA nodes can use different
specialized runtimes, optimized
for specific component types
Java
JEE
BPEL
C / C++
Python
PHP
etc
IBM Software Group
8
http://tuscany.apache.org
Apache Tuscany
 Apache Tuscany provides a component based programming model
which simplifies development, assembly and deployment and
management of composite applications.
 Apache Tuscany implements SCA standards defined by OASIS
OpenCSA + extensions based on community feedback.
8
IBM Software Group
9
http://tuscany.apache.org
Tuscany SCA Native - C++ Runtime
IBM Software Group
10
http://tuscany.apache.org
SCA Native Runtime – Usage Scenarios
• Components written in Python or C++
• Integrated with HTTPD
• High Throughput and Scalable
– Stateless components
– Load balancing (mod_proxy_balancer)
• Small disk and memory footprint
– no JVM, not a lot of code, most dependencies optional
• Built-in Security
– HTTPS, OpenID, Oauth 1+2, mod_auth*
• HTTP-based Protocol Bindings
– JSON-RPC, ATOM + RSS
• Easy install + configuration + reconfiguration
• Multi-tenant
– currently using HTTPD mass dynamic virtual hosting
IBM Software Group
11
http://tuscany.apache.org
A Useful Subset of SCA
• Subset of SCA
– Simple one level assembly (no recursive composition)
– Simple wiring (no autowiring, no multiplicity)
– String-only properties
– No Policies
– No SCDL Includes
– No SCDL validation
– Stateless components, parameter injection only
– One SCA contribution directory per Runtime Instance
• Still Useful and Usable
– Runs apps similar to Tuscany Store / ShoppingCart Tutorial
– Same Python components run on
• Tuscany / Java
• Tuscany / C++
• Tuscany / Python
IBM Software Group
12
http://tuscany.apache.org
Sample Online Store App
Store
Catalog
Currency
Converter
currencyCode=USD
jsonrpc
ShoppingCart
atom
jsonrpc
Cart
Total
IBM Software Group
13
http://tuscany.apache.org
Sample Composite
<composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" … >
...
<component name="Catalog">
<t:implementation.python script="fruits-catalog.py"/>
<property name="currencyCode">USD</property>
<service name="Catalog">
<t:binding.jsonrpc uri="catalog"/>
</service>
<reference name="currencyConverter" target="CurrencyConverter"/>
</component>
<component name="ShoppingCart">
<t:implementation.python script="shopping-cart.py"/>
<service name="ShoppingCart">
<t:binding.atom uri="shoppingCart"/>
</service>
<service name="Total">
<t:binding.jsonrpc uri="total"/>
</service>
<reference name="cache" target="Cache"/>
</component>
<component name="CurrencyConverter">
<t:implementation.python script="currency-converter.py"/>
<service name="CurrencyConverter">
<t:binding.jsonrpc uri="currencyConverter"/>
</service>
</component>
</composite>
IBM Software Group
14
http://tuscany.apache.org
Sample Python Components
fruits-catalog.py
def items(converter, currency):
def convert(price):
return converter.convert("USD", currency, price)
symbol = converter.symbol(currency)
return (
(("'name", "Mango"), ("'currency", currency), ("'currencySymbol", symbol), ("'price", convert(2.99))),
(("'name", "Passion"), ("'currency", currency), ("'currencySymbol", symbol), ("'price", convert(3.55))),
(("'name", "Kiwi"), ("'currency", currency), ("'currencySymbol", symbol), ("'price", convert(1.55))))
store.py
def getall(catalog, shoppingCart, shoppingTotal):
return shoppingCart.getall()
def get(id, catalog, shoppingCart, shoppingTotal):
return shoppingCart.get(id)
def items(catalog, shoppingCart, shoppingTotal):
return catalog.items()
def total(catalog, shoppingCart, shoppingTotal):
return shoppingCart.gettotal()
IBM Software Group
15
http://tuscany.apache.org
How It Works
HTTPD
mod_wiring
mod_eval_cpp
mod_eval_python
curl
libxml2
apr json
oauth
openid
Store
Catalog
Currency
Converter
http
currencyCode=USD
jsonrpc
ShoppingCart
atom
jsonrpc
Collection
Total
IBM Software Group
16
http://tuscany.apache.org
Utility Components
• All these components are optional
• You just drop them in your SCA assembly as needed
• Simpler than having more built-in stuff in core SCA?
• Cache component using Memcached
• Log component using Facebook Scribe
• Queue component using Apache Qpid/C
• SQL DB component using PostgreSQL
• Web Service component using Axis2/C
• Key / value store component
• XMPP Chat component
• ...
IBM Software Group
17
http://tuscany.apache.org
Demo
• SCA Native Project Layout
• Samples
– C++ Store / Shopping Cart app
– Python Store / Shopping Cart app
– Multi-tenant app
IBM Software Group
18
http://tuscany.apache.org
SCA Python Runtime – Usage Scenarios
• Components written in Python
• Run on Google AppEngine
• Run on a Python WSGI Server
• Lightweight with very little code
• Stateless
• JSON-RPC, ATOM, RSS Bindings
• Same Programming Model as SCA Native runtime
IBM Software Group
19
http://tuscany.apache.org
How It Works
Google AppEngine
wiring eval httplib
xml etree
jsonusers
Store
Catalog
Currency
Converter
http
currencyCode=USD
jsonrpc
ShoppingCart
atom
jsonrpc
Collection
Total
Python WSGI
IBM Software Group
20
http://tuscany.apache.org
Demo
• Store / Shopping Cart app on Google AppEngine
IBM Software Group
21
http://tuscany.apache.org
Getting Involved
with Apache Tuscany
IBM Software Group
22
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
23
http://tuscany.apache.org
Apache Tuscany Resources
 Apache Tuscany
 http://tuscany.apache.org
 Getting Involved
 http://tuscany.apache.org/getting-involved.html
 Tuscany Dashboard
 http://tuscany.apache.org/tuscany-dashboard.html
IBM Software Group
24
http://tuscany.apache.org
Getting Involved
with Apache Nuvem
IBM Software Group
25
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
26
http://tuscany.apache.org
Thank You !!!

More Related Content

What's hot

Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015Jackson F. de A. Mafra
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel frameworkAhmad Fatoni
 
Installing and Getting Started with Alfresco
Installing and Getting Started with AlfrescoInstalling and Getting Started with Alfresco
Installing and Getting Started with AlfrescoWildan Maulana
 
Php Asp Net Interoperability Rc Jao
Php Asp Net Interoperability Rc JaoPhp Asp Net Interoperability Rc Jao
Php Asp Net Interoperability Rc Jaojedt
 
Projects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 ProjectsProjects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 ProjectsSam Dias
 
AWS Observability Made Simple
AWS Observability Made SimpleAWS Observability Made Simple
AWS Observability Made SimpleLuciano Mammino
 
A introduction to Laravel framework
A introduction to Laravel frameworkA introduction to Laravel framework
A introduction to Laravel frameworkPhu Luong Trong
 
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)ssuser337865
 
Jazoon2010 - Edgar Silva - Open source SOA on Steroids
Jazoon2010 - Edgar Silva - Open source SOA on SteroidsJazoon2010 - Edgar Silva - Open source SOA on Steroids
Jazoon2010 - Edgar Silva - Open source SOA on SteroidsEdgar Silva
 
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)My own sweet home!
 
API Development with Laravel
API Development with LaravelAPI Development with Laravel
API Development with LaravelMichael Peacock
 
APEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurierenAPEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurierenOliver Lemm
 
Native REST Web Services with Oracle 11g
Native REST Web Services with Oracle 11gNative REST Web Services with Oracle 11g
Native REST Web Services with Oracle 11gMarcelo Ochoa
 
Laravel and CodeIgniter: pros & cons
Laravel and CodeIgniter: pros & consLaravel and CodeIgniter: pros & cons
Laravel and CodeIgniter: pros & consElenorWisozk
 

What's hot (20)

Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015Phalcon 2 High Performance APIs - DevWeekPOA 2015
Phalcon 2 High Performance APIs - DevWeekPOA 2015
 
Laravel overview
Laravel overviewLaravel overview
Laravel overview
 
Introduction to laravel framework
Introduction to laravel frameworkIntroduction to laravel framework
Introduction to laravel framework
 
Laravel 5.4
Laravel 5.4 Laravel 5.4
Laravel 5.4
 
Installing and Getting Started with Alfresco
Installing and Getting Started with AlfrescoInstalling and Getting Started with Alfresco
Installing and Getting Started with Alfresco
 
Php Asp Net Interoperability Rc Jao
Php Asp Net Interoperability Rc JaoPhp Asp Net Interoperability Rc Jao
Php Asp Net Interoperability Rc Jao
 
Projects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 ProjectsProjects In Laravel : Learn Laravel Building 10 Projects
Projects In Laravel : Learn Laravel Building 10 Projects
 
Laravel ppt
Laravel pptLaravel ppt
Laravel ppt
 
Flows for APEX
Flows for APEXFlows for APEX
Flows for APEX
 
AWS Observability Made Simple
AWS Observability Made SimpleAWS Observability Made Simple
AWS Observability Made Simple
 
A introduction to Laravel framework
A introduction to Laravel frameworkA introduction to Laravel framework
A introduction to Laravel framework
 
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
Laravel (8) php_framework_handbook__start_from_zer_18604872_(z-lib.org)
 
Jazoon2010 - Edgar Silva - Open source SOA on Steroids
Jazoon2010 - Edgar Silva - Open source SOA on SteroidsJazoon2010 - Edgar Silva - Open source SOA on Steroids
Jazoon2010 - Edgar Silva - Open source SOA on Steroids
 
What is LAMP?
What is LAMP?What is LAMP?
What is LAMP?
 
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)開放原始碼 Ch1.2   intro - oss - apahce foundry (ver 2.0)
開放原始碼 Ch1.2 intro - oss - apahce foundry (ver 2.0)
 
Spring In Alfresco Ecm
Spring In Alfresco EcmSpring In Alfresco Ecm
Spring In Alfresco Ecm
 
API Development with Laravel
API Development with LaravelAPI Development with Laravel
API Development with Laravel
 
APEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurierenAPEX richtig installieren und konfigurieren
APEX richtig installieren und konfigurieren
 
Native REST Web Services with Oracle 11g
Native REST Web Services with Oracle 11gNative REST Web Services with Oracle 11g
Native REST Web Services with Oracle 11g
 
Laravel and CodeIgniter: pros & cons
Laravel and CodeIgniter: pros & consLaravel and CodeIgniter: pros & cons
Laravel and CodeIgniter: pros & cons
 

Viewers also liked

Presentation1
Presentation1Presentation1
Presentation1118247
 
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyJean-Sebastien Delfino
 
GRALHA AZUL no. 57 - JANEIRO 2016
GRALHA AZUL no. 57 - JANEIRO 2016GRALHA AZUL no. 57 - JANEIRO 2016
GRALHA AZUL no. 57 - JANEIRO 2016Sérgio Pitaki
 
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldabaux singapore
 

Viewers also liked (7)

Presentation1
Presentation1Presentation1
Presentation1
 
03 leitor
03 leitor03 leitor
03 leitor
 
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache TuscanyApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
ApacheCon NA 2010 - Developing Composite Apps for the Cloud with Apache Tuscany
 
GRALHA AZUL no. 57 - JANEIRO 2016
GRALHA AZUL no. 57 - JANEIRO 2016GRALHA AZUL no. 57 - JANEIRO 2016
GRALHA AZUL no. 57 - JANEIRO 2016
 
Job analysis
Job analysisJob analysis
Job analysis
 
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
Succession “Losers”: What Happens to Executives Passed Over for the CEO Job? Succession “Losers”: What Happens to Executives Passed Over for the CEO Job?
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
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika AldabaLightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
Lightning Talk #9: How UX and Data Storytelling Can Shape Policy by Mika Aldaba
 

Similar to ApacheCon NA 2010 - High Performance Cloud-enabled SCA Runtimes

Extending Piwik At R7.com
Extending Piwik At R7.comExtending Piwik At R7.com
Extending Piwik At R7.comLeo Lorieri
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassPaul Withers
 
AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09Chris Purrington
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)Geekstone
 
Data Summer Conf 2018, “Building unified Batch and Stream processing pipeline...
Data Summer Conf 2018, “Building unified Batch and Stream processing pipeline...Data Summer Conf 2018, “Building unified Batch and Stream processing pipeline...
Data Summer Conf 2018, “Building unified Batch and Stream processing pipeline...Provectus
 
Google Cloud Platform, Compute Engine, and App Engine
Google Cloud Platform, Compute Engine, and App EngineGoogle Cloud Platform, Compute Engine, and App Engine
Google Cloud Platform, Compute Engine, and App EngineCsaba Toth
 
High Performance Web Sites
High Performance Web SitesHigh Performance Web Sites
High Performance Web SitesRavi Raj
 
Dark launching with Consul at Hootsuite - Bill Monkman
Dark launching with Consul at Hootsuite - Bill MonkmanDark launching with Consul at Hootsuite - Bill Monkman
Dark launching with Consul at Hootsuite - Bill MonkmanAmbassador Labs
 
Building RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RSBuilding RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RSLuciano Resende
 
Cloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and CloudCloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and CloudEberhard Wolff
 
Containerdays Intro to Habitat
Containerdays Intro to HabitatContainerdays Intro to Habitat
Containerdays Intro to HabitatMandi Walls
 
"Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?""Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?"Volker Linz
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Tatsuhiko Miyagawa
 
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan GoksuSpring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan GoksuVMware Tanzu
 
Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Pavel Chunyayev
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013aspyker
 
muCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless ApplicationsmuCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless ApplicationsChris Munns
 
Google app-engine-cloudcamplagos2011
Google app-engine-cloudcamplagos2011Google app-engine-cloudcamplagos2011
Google app-engine-cloudcamplagos2011Opevel
 

Similar to ApacheCon NA 2010 - High Performance Cloud-enabled SCA Runtimes (20)

Extending Piwik At R7.com
Extending Piwik At R7.comExtending Piwik At R7.com
Extending Piwik At R7.com
 
IBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClassIBM Think Session 8598 Domino and JavaScript Development MasterClass
IBM Think Session 8598 Domino and JavaScript Development MasterClass
 
AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09AWS (Hadoop) Meetup 30.04.09
AWS (Hadoop) Meetup 30.04.09
 
The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)The next step from Microsoft - Vnext (Srdjan Poznic)
The next step from Microsoft - Vnext (Srdjan Poznic)
 
Data Summer Conf 2018, “Building unified Batch and Stream processing pipeline...
Data Summer Conf 2018, “Building unified Batch and Stream processing pipeline...Data Summer Conf 2018, “Building unified Batch and Stream processing pipeline...
Data Summer Conf 2018, “Building unified Batch and Stream processing pipeline...
 
Google Cloud Platform, Compute Engine, and App Engine
Google Cloud Platform, Compute Engine, and App EngineGoogle Cloud Platform, Compute Engine, and App Engine
Google Cloud Platform, Compute Engine, and App Engine
 
High Performance Web Sites
High Performance Web SitesHigh Performance Web Sites
High Performance Web Sites
 
Dark launching with Consul at Hootsuite - Bill Monkman
Dark launching with Consul at Hootsuite - Bill MonkmanDark launching with Consul at Hootsuite - Bill Monkman
Dark launching with Consul at Hootsuite - Bill Monkman
 
Building RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RSBuilding RESTful services using SCA and JAX-RS
Building RESTful services using SCA and JAX-RS
 
Cloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and CloudCloudy in Indonesia: Java and Cloud
Cloudy in Indonesia: Java and Cloud
 
Meetup callback
Meetup callbackMeetup callback
Meetup callback
 
Containerdays Intro to Habitat
Containerdays Intro to HabitatContainerdays Intro to Habitat
Containerdays Intro to Habitat
 
"Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?""Wie passen Serverless & Autonomous zusammen?"
"Wie passen Serverless & Autonomous zusammen?"
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
 
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan GoksuSpring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
 
Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015Ansible benelux meetup - Amsterdam 27-5-2015
Ansible benelux meetup - Amsterdam 27-5-2015
 
Introducción al SharePoint Framework SPFx
Introducción al SharePoint Framework SPFxIntroducción al SharePoint Framework SPFx
Introducción al SharePoint Framework SPFx
 
NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013NetflixOSS for Triangle Devops Oct 2013
NetflixOSS for Triangle Devops Oct 2013
 
muCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless ApplicationsmuCon 2017 - 12 Factor Serverless Applications
muCon 2017 - 12 Factor Serverless Applications
 
Google app-engine-cloudcamplagos2011
Google app-engine-cloudcamplagos2011Google app-engine-cloudcamplagos2011
Google app-engine-cloudcamplagos2011
 

Recently uploaded

Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXTarek Kalaji
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxGDSC PJATK
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...DianaGray10
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesDavid Newbury
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfinfogdgmi
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureEric D. Schabell
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 

Recently uploaded (20)

Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
VoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBXVoIP Service and Marketing using Odoo and Asterisk PBX
VoIP Service and Marketing using Odoo and Asterisk PBX
 
Cybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptxCybersecurity Workshop #1.pptx
Cybersecurity Workshop #1.pptx
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
Connector Corner: Extending LLM automation use cases with UiPath GenAI connec...
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
20150722 - AGV
20150722 - AGV20150722 - AGV
20150722 - AGV
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Linked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond OntologiesLinked Data in Production: Moving Beyond Ontologies
Linked Data in Production: Moving Beyond Ontologies
 
Videogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdfVideogame localization & technology_ how to enhance the power of translation.pdf
Videogame localization & technology_ how to enhance the power of translation.pdf
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
20230104 - machine vision
20230104 - machine vision20230104 - machine vision
20230104 - machine vision
 
OpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability AdventureOpenShift Commons Paris - Choose Your Own Observability Adventure
OpenShift Commons Paris - Choose Your Own Observability Adventure
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 

ApacheCon NA 2010 - High Performance Cloud-enabled SCA Runtimes

  • 1. IBM Software Group 1 http://tuscany.apache.org High Performance Cloud-enabled SCA Runtimes Luciano Resende lresende@apache.org http://lresende.blogspot.com Jean-Sebastien Delfino jsdelfino@apache.org http://jsdelfino.blogspot.com
  • 2. IBM Software Group 2 http://tuscany.apache.org Agenda  SCA – Not just one Runtime  Apache Tuscany and Sub-Projects  SCA C++ Runtime – Usage Scenarios – How It Works – Utility Components – Demo  SCA Python Runtime  Usage Scenarios  How It Works  Demo  Getting Involved
  • 3. IBM Software Group 3 http://tuscany.apache.org SCA – Not Just One Monolithic Runtime
  • 4. IBM Software Group 4 http://tuscany.apache.org Assembly Implementation Languages Policy Framework Bindings Java Java EE Spring C++ BPEL Security RM Transactions Web services JMS JCA SCA Specifications • SCA is going through a formal standardization process at OASIS OpenCSA (http://www.oasis-opencsa.org)
  • 5. IBM Software Group 5 http://tuscany.apache.org OASIS Open CSA - http://www.oasis-opencsa.org/
  • 6. IBM Software Group 6 http://tuscany.apache.org SCA Assembly Model Composite A Component AService Service Binding Web Service JMS SLSB Rest JSONRPC JCA … Reference Binding Web Service JMS SLSB Rest JSONRPC JCA … Component B Service Interface - Java - WSDL Reference Interface Reference property setting Property promotepromote wire Implementation Java BPEL PHP SCA composite Spring EJB module C C++ Python ... - Java - WSDL
  • 7. IBM Software Group 7 http://tuscany.apache.org SCA Domain A common assembly model A distributed deployment of the assembly SCA nodes can use different specialized runtimes, optimized for specific component types Java JEE BPEL C / C++ Python PHP etc
  • 8. IBM Software Group 8 http://tuscany.apache.org Apache Tuscany  Apache Tuscany provides a component based programming model which simplifies development, assembly and deployment and management of composite applications.  Apache Tuscany implements SCA standards defined by OASIS OpenCSA + extensions based on community feedback. 8
  • 10. IBM Software Group 10 http://tuscany.apache.org SCA Native Runtime – Usage Scenarios • Components written in Python or C++ • Integrated with HTTPD • High Throughput and Scalable – Stateless components – Load balancing (mod_proxy_balancer) • Small disk and memory footprint – no JVM, not a lot of code, most dependencies optional • Built-in Security – HTTPS, OpenID, Oauth 1+2, mod_auth* • HTTP-based Protocol Bindings – JSON-RPC, ATOM + RSS • Easy install + configuration + reconfiguration • Multi-tenant – currently using HTTPD mass dynamic virtual hosting
  • 11. IBM Software Group 11 http://tuscany.apache.org A Useful Subset of SCA • Subset of SCA – Simple one level assembly (no recursive composition) – Simple wiring (no autowiring, no multiplicity) – String-only properties – No Policies – No SCDL Includes – No SCDL validation – Stateless components, parameter injection only – One SCA contribution directory per Runtime Instance • Still Useful and Usable – Runs apps similar to Tuscany Store / ShoppingCart Tutorial – Same Python components run on • Tuscany / Java • Tuscany / C++ • Tuscany / Python
  • 12. IBM Software Group 12 http://tuscany.apache.org Sample Online Store App Store Catalog Currency Converter currencyCode=USD jsonrpc ShoppingCart atom jsonrpc Cart Total
  • 13. IBM Software Group 13 http://tuscany.apache.org Sample Composite <composite xmlns="http://docs.oasis-open.org/ns/opencsa/sca/200912" … > ... <component name="Catalog"> <t:implementation.python script="fruits-catalog.py"/> <property name="currencyCode">USD</property> <service name="Catalog"> <t:binding.jsonrpc uri="catalog"/> </service> <reference name="currencyConverter" target="CurrencyConverter"/> </component> <component name="ShoppingCart"> <t:implementation.python script="shopping-cart.py"/> <service name="ShoppingCart"> <t:binding.atom uri="shoppingCart"/> </service> <service name="Total"> <t:binding.jsonrpc uri="total"/> </service> <reference name="cache" target="Cache"/> </component> <component name="CurrencyConverter"> <t:implementation.python script="currency-converter.py"/> <service name="CurrencyConverter"> <t:binding.jsonrpc uri="currencyConverter"/> </service> </component> </composite>
  • 14. IBM Software Group 14 http://tuscany.apache.org Sample Python Components fruits-catalog.py def items(converter, currency): def convert(price): return converter.convert("USD", currency, price) symbol = converter.symbol(currency) return ( (("'name", "Mango"), ("'currency", currency), ("'currencySymbol", symbol), ("'price", convert(2.99))), (("'name", "Passion"), ("'currency", currency), ("'currencySymbol", symbol), ("'price", convert(3.55))), (("'name", "Kiwi"), ("'currency", currency), ("'currencySymbol", symbol), ("'price", convert(1.55)))) store.py def getall(catalog, shoppingCart, shoppingTotal): return shoppingCart.getall() def get(id, catalog, shoppingCart, shoppingTotal): return shoppingCart.get(id) def items(catalog, shoppingCart, shoppingTotal): return catalog.items() def total(catalog, shoppingCart, shoppingTotal): return shoppingCart.gettotal()
  • 15. IBM Software Group 15 http://tuscany.apache.org How It Works HTTPD mod_wiring mod_eval_cpp mod_eval_python curl libxml2 apr json oauth openid Store Catalog Currency Converter http currencyCode=USD jsonrpc ShoppingCart atom jsonrpc Collection Total
  • 16. IBM Software Group 16 http://tuscany.apache.org Utility Components • All these components are optional • You just drop them in your SCA assembly as needed • Simpler than having more built-in stuff in core SCA? • Cache component using Memcached • Log component using Facebook Scribe • Queue component using Apache Qpid/C • SQL DB component using PostgreSQL • Web Service component using Axis2/C • Key / value store component • XMPP Chat component • ...
  • 17. IBM Software Group 17 http://tuscany.apache.org Demo • SCA Native Project Layout • Samples – C++ Store / Shopping Cart app – Python Store / Shopping Cart app – Multi-tenant app
  • 18. IBM Software Group 18 http://tuscany.apache.org SCA Python Runtime – Usage Scenarios • Components written in Python • Run on Google AppEngine • Run on a Python WSGI Server • Lightweight with very little code • Stateless • JSON-RPC, ATOM, RSS Bindings • Same Programming Model as SCA Native runtime
  • 19. IBM Software Group 19 http://tuscany.apache.org How It Works Google AppEngine wiring eval httplib xml etree jsonusers Store Catalog Currency Converter http currencyCode=USD jsonrpc ShoppingCart atom jsonrpc Collection Total Python WSGI
  • 20. IBM Software Group 20 http://tuscany.apache.org Demo • Store / Shopping Cart app on Google AppEngine
  • 22. IBM Software Group 22 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
  • 23. IBM Software Group 23 http://tuscany.apache.org Apache Tuscany Resources  Apache Tuscany  http://tuscany.apache.org  Getting Involved  http://tuscany.apache.org/getting-involved.html  Tuscany Dashboard  http://tuscany.apache.org/tuscany-dashboard.html
  • 25. IBM Software Group 25 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