SlideShare une entreprise Scribd logo
1  sur  70
©2012AmadeusITGroupSA©2012AmadeusITGroupSA
Groovy as a weapon of
massive PaaSification
Nenad Bogojevic
October 2012
©2012AmadeusITGroupSA
Context ?aaS
Why
Groovy?
Groovy,
Java, JSR
Security API
DSL IDE Conclusion
©2012AmadeusITGroupSA
Me
 Nenad Bogojević
 Software Architect at Amadeus
 e-Commerce platforms
 nbogojevic@amadeus.com
 @NenadBo
©2012AmadeusITGroupSA
Context ?aaS
Why
Groovy?
Groovy,
Java, JSR
Security API
DSL IDE Conclusion
©2012AmadeusITGroupSA
Amadeus
The leading
provider of IT
solutions to tourism
and travel industry
Provides transaction
processing power
and technology for
travel providers and
travel agencies
Global distribution
system
©2012AmadeusITGroupSA
Travel ecosystem
Airlines
Hotels
Cruises/ Ferries
Tour Operators
Car Rentals
Rail
Airlines own distribution
Airports, ticket offices,
web sites, call centers
Providers
Travel Agencies
TMCs
Traditional agencies
Online agencies
• Travel
Shopping
• Reservation
• Ticketing
• Post Sales
• Customer
Profiles
• Destination
Content
• …
Global
Distribution
System
Leisure
Business
End
consumers
©2012AmadeusITGroupSA
Toronto
Boston
Miami
London
Antwerp Frankfurt
SydneySophia Antipolis Bangalore
Development Footprint
Warsaw
Bogota
Bangkok
Beijing
Tucson
©2012AmadeusITGroupSA
Amadeus Locations
©2012AmadeusITGroupSA
Amadeus Locations
©2012AmadeusITGroupSA
Groovy, Java talents are welcome
http://www.amadeus.com/careers
©2012AmadeusITGroupSA
Amadeus System Constraints
• 600+ millions bookings, 1 billion billable
transactions per year.
Huge Volumes
• 24x7 99.99%
• 4:20 minute coffee pause per month
High Availability
• 20 000 transaction per second - average < 200ms
• 65 000 external messages per second
Fast Performance
©2012AmadeusITGroupSA
Amadeus SaaS Services
 Booking
 Inventory
 Departure control
 Travel IT
 e-Commerce
 Point-of-sale
©2012AmadeusITGroupSA
e-Commerce and point-of-sale platform
 One platform
Multiple products
 Consumers
 Professionals
 Integrators Common
platform
E-Commerce
Corporations
Travel
Agents
©2012AmadeusITGroupSA
Common platform
Web-based
Common
hardware
Common code
Java, JEE,
JavaScript
©2012AmadeusITGroupSA
Airline web site
 Any browser
 Any device
 Specific UI
 Specific logic
 1 billion hits/month
 500 million visitors
 $40 billion in turnover
©2012AmadeusITGroupSA
Corporate travel site
 RIA
 Guided flow
 Integrates with
 3rd party services
 Corporate IS
©2012AmadeusITGroupSA
Travel-agency POS
 Mission critical
 Dual UI
 Terminal, RIA
 Free-flow
 Custimizable UI
 Needs automation
 450,000 terminals
 2,000 TPS
©2012AmadeusITGroupSA
Existing customization technology
 Windows, COM based
 VB, .NET, C#, rudimentary scripting language
 “Shell script” with terminal
©2012AmadeusITGroupSA
Types of extensions
UI change
Guided work-flow
Automate tasks
Add business logic
Batch processing
©2012AmadeusITGroupSA
Three types of developers
 Corporate (airlines, travel agency chains)
 Observe “rules and regulations”
 IT Services (small-medium shops)
 Agile, know their tools, hack
 Travel Agents
 Non-technical, read a book or two
Karin Dalziel, Michael Lokner , Creative Commons
©2012AmadeusITGroupSA
Context ?aaS
Why
Groovy?
Groovy,
Java, JSR
Security API
DSL IDE Conclusion
©2012AmadeusITGroupSA
Alphabet soup
IaaS
• Virtualized
hardware
• EC2, Azure
PaaS
• Virtualized
runtime
• AppEngine,
CloudFoundry
• elastic
beanstalk,
Azure
SaaS
• Virtualized
application
• Salesforce,
Google Apps
• Office 365
©2012AmadeusITGroupSA
SaaS platform
Application code
Middleware
Presentation
Transaction Processing Facility
©2012AmadeusITGroupSA
SaaS Scenario
Search flights
Results
©2012AmadeusITGroupSA
PaaS Scenario
Search flights
Results
Customer’s code
©2012AmadeusITGroupSA
PaaS platform
Application code
Middleware
Script execution
environment
A
P
I
Presentation
Customization code
& resources
UI Customization
Transaction processing facility
©2012AmadeusITGroupSA
Context ?aaS
Why
Groovy?
Groovy,
Java, JSR
Security API
DSL IDE Conclusion
©2012AmadeusITGroupSA
Language choice?
Executes in
JVM
Dynamic,
scripting
language
A language
with future and
community
Extensions are
often small
pieces of code
Developers
have varying
level of skills
©2012AmadeusITGroupSA
Scripting/dynamic language
Easy Productive
Dynamic
loading
©2012AmadeusITGroupSA
Language choice
4 candidates
JavaScript (Rhino)
Ruby (JRuby)
Python (jython)
Groovy
3 measures
Popularity
Language features
Performance
©2012AmadeusITGroupSA
Some code examples
def keyboard = new Scanner(System.in)
def number = new Random().nextInt(10) + 1
def guess = 0
while (number != guess) {
println "Guess the number which is between 1 and 10: "
guess = keyboard.nextInt()
}
println"Hurray! You guessed correctly!"
function guessNumber() {
// Get a random integer from 1 to 10 inclusive
var num = Math.ceil(Math.random() * 10);
var guess;
while (guess != num) {
guess = prompt('Guess the number between 1 and
10 inclusive');
}
alert('Congratulations!nThe number was ' + num);
}
guessNumber();
import random
target, guess = random.randint(1, 10), 0
while target != guess:
guess = int(input('Guess my number between 1 and 10 until you get it right: '))
print('Thats right!')
n = rand( 10 ) + 1
puts 'Guess the number: '
puts 'Wrong! Guess again: ' until gets.to_i == n
puts 'Well guessed!'
source: http://rosettacode.com
©2012AmadeusITGroupSA
Why Groovy?
Fastest
~10% in our
benchmark
Least
memory
20%-75%
better then
average
On top of
Java
Double eco-
system
Language
itself
Java code
is valid
code
Groovy
proper for
.NET crowd
©2012AmadeusITGroupSA
So, next…
Platform for 10
million users
“powered by
Groovy”
500.000 users
writing Groovy
code
©2012AmadeusITGroupSA
Context ?aaS
Why
Groovy?
Groovy,
Java, JSR
Security API
DSL IDE Conclusion
©2012AmadeusITGroupSA
Embedding scripting engine
Groovy offers everything you need to
add it as scripting language
We have our platform and we can plug
it in
But what if we need to support another
scripting or templating language
• Freemarker, javascript
©2012AmadeusITGroupSA
JSR-223
Framework for embedding scripts into Java applications
Independent from language
Scripts can be run inside or outside JVM
Part of JDK 6+. JDK comes with Rhino/Nashorn
javax.script
©2012AmadeusITGroupSA
JSR 223 Services
Script Execution: executing stream of characters in script language
• ScriptEngine
Binding: exposing Java objects to script programs as named
variables
• Bindings, ScriptContext
Compilation: generating intermediate code from script source
• Compilable, CompiledScript
Invocation: reusing intermediate code
• Invocable
©2012AmadeusITGroupSA
Groovy vs. JSR
GroovyShell shell = new GroovyShell();
shell.evaluate(
"println 'Hello World!'; x = 123; return foo * 10");
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine groovyEngine = mgr.getEngineByName(“groovy");
try {
groovyEngine.eval(
"println 'Hello World!'; x = 123; return foo * 10");
} catch (ScriptException ex) {
ex.printStackTrace();
}
©2012AmadeusITGroupSA
Groovy vs. JSR
Binding binding = new Binding();
binding.setVariable("foo", new Integer(2));
GroovyShell shell = new GroovyShell(binding);
shell.evaluate("println 'Hello World!'; x = 123; return foo * 10");
ScriptEngineManager mgr = new ScriptEngineManager();
ScriptEngine groovyEngine = mgr.getEngineByName(“groovy");
Bindigs bindings = groovyEngine.createBindings();
bindings.put("foo", new Integer(2));
try {
groovyEngine.eval(
"println 'Hello World!'; x = 123; return foo * 10 “, bindings);
} catch (ScriptException ex) {
ex.printStackTrace();
}
©2012AmadeusITGroupSA
JSR 223 Interfacing with Java
 Invocable
groovyEngine.eval(
"def hello(s) { println 'Hello ${s}!';}");
Invocable obj = (Invocable) groovyEngine;
inv.invokeMethod(obj, "hello", "Groovy!!" );
 Invocable with interface
groovyEngine.eval(
"def hello(s) { println 'Hello ${s}!';}");
Invocable inv = (Invocable) groovyEngine;
Runnable r = inv.getInterface(Runnable.class);
r.run();
©2012AmadeusITGroupSA
JSR 223 Interfacing with Java
 Invocable
jsEngine.eval(
"function hello(s) { log('Hello ' + s); }");
Invocable obj = (Invocable) groovyEngine;
inv.invokeMethod(obj, "hello", "JavaScript!!" );
 Invocable with interface
jsEngine.eval(
"function hello(s) { log('Hello ' + s); }");
Invocable inv = (Invocable) groovyEngine;
Runnable r = inv.getInterface(Runnable.class);
r.run();
©2012AmadeusITGroupSA
When JSR 223
Multiple
script
technologies
Middleware
services
Common
API
Access to
scripting
resources
©2012AmadeusITGroupSA
Limitations
javax.script is for interfacing with Java code
Exposure of script services is limited
Concrete security is script engine dependent
Works for dynamic typed languages only
©2012AmadeusITGroupSA
Context ?aaS
Why
Groovy?
Groovy,
Java, JSR
Security API
DSL IDE Conclusion
©2012AmadeusITGroupSA
PaaSification
©2012AmadeusITGroupSA
PaaSification
©2012AmadeusITGroupSA
Pacification
 We are executing in JVM, sharing the platform
and resources
 What can you do in JVM?
 Consume resources (CPU, disk, threads)
 Spy around:
 Amadeus code,
 Other customers’ code
 Even worse, other customers’ data
©2012AmadeusITGroupSA
Approaches
• One JVM per user,
150K concurrent users
Sandbox
JVM
• Use AOP, instrument
everything
Sandbox
Code
• Replace all classes
with sanitized one
Sandbox
API
©2012AmadeusITGroupSA
AST visiting
 Check every node in AST at compile time
org.codehaus.groovy.control.customizers.CompilationCustomizer
org.codehaus.groovy.ast.GroovyCodeVisitor
 Sandbox API
 Whitelist
 API that you can call
 Blacklist
 java.lang.Object, java.lang.reflect
 Methods in whitelisted classes
©2012AmadeusITGroupSA
AST modification (for stability)
 Timeout scripts
groovy.transform.TimedInterrupt
@TimedInterrupt(value = 10L, unit = TimeUnit.SECONDS)
 Allow interrupting script thread
groovy.transform.ThreadInterrupt
 Allow custom interrupting
groovy.transform.ConditionalInterrupt
@ConditionalInterrupt({++counter<10})
©2012AmadeusITGroupSA
Context ?aaS
Why
Groovy?
Groovy,
Java, JSR
Security API
DSL IDE Conclusion
©2012AmadeusITGroupSA
Extension points, where?
 Web service endpoints
 Well documented (xml schemas), public,
 Internal application hooks
 Well…
©2012AmadeusITGroupSA
API on Top of Existing Code
 Web service
 Documented (xml schemas), public
 XML easily integrates with groovy
©2012AmadeusITGroupSA
DOM-like object
 SaaS services communicate using
DOM-like object with Map interface
 groovy.util.Node
 Adding support for groovy
constructs (e.g. closures)
 groovy.lang.DelegatingMetaClass
Marshall
object on
java side
Unmarshall
(parse) on
groovy
©2012AmadeusITGroupSA
UI API
 Depends on UI techology
 XUL, AriaTemplates
©2012AmadeusITGroupSA
New Services
 Build for Scripting
©2012AmadeusITGroupSA
Context ?aaS
Why
Groovy?
Groovy,
Java, JSR
Security API
DSL IDE Conclusion
©2012AmadeusITGroupSA
DSL challenges
 Groovy is great for DSL
 But, can we build a great DSL?
 The one that is really used?
 Know the users
 Learn from history
©2012AmadeusITGroupSA
DSL for macros
 Simple
 Send terminal command
 Prompt user
 Variable
 Loops?
 Conditions?
ask “Customer phone?" assign to phone
send “AP ${phone}"
ask “Customer account?" assign to account
send "RM ACC-${account}"
©2012AmadeusITGroupSA
DSL for macros
Run macro
User entry
Prompt user
Continue script
Run script
User entry
Prompt user
©2012AmadeusITGroupSA
Context ?aaS
Why
Groovy?
Groovy,
Java, JSR
Security API
DSL IDE Conclusion
©2012AmadeusITGroupSA
What kind of IDE
DSL
• For end users
• Integrated in application itself
UI templating
• Text editor or Web based
• Ace, Eclipse Orion
• Graphical
Groovy
• For professionals only
• Eclipse today
©2012AmadeusITGroupSA
Development environment
 Customers are writing code running …
 … hosted in the Amadeus Data Center
Customization Server
Aria Templates
Groovy
©2012AmadeusITGroupSA
Extend eclipse plugin
©2012AmadeusITGroupSA
How to test
 Develop locally, execute on remotely hosted
platform
 Install platform locally
 Works for Google App Engine,
Azure, Cloud Foundry
 Mock platform locally
©2012AmadeusITGroupSA
Context ?aaS
Why
Groovy?
Groovy,
Java, JSR
Security API
DSL IDE Conclusion
©2012AmadeusITGroupSA
Where we are now
In production
Tens of thousands of
LOCs of Groovy
Rolling out to 20,000
users
©2012AmadeusITGroupSA
Challenges
Expand API
Polyglot
IDE & Testing
Resource management
©2012AmadeusITGroupSA
Open Source
 We know the value is in community
 We have contributed to groovy,
 We will keep contributing
 http://www.amadeus.com/blog/17/09/open-for-
business/
 Open sourcing UI http://ariatemplates.com/
©2012AmadeusITGroupSA
THE END
Special thanks
SSE Team
Vincent Bersin, Tiago Fernandez, Mathieu Bruyen,
Sebastien Blanc, Guillaume Cernier (@cernier,
http://linkedin.com/in/cernierg), Vincent Malley, Marco Funaro, Pascal
Cohen, Vincent Gerard, Nicola Rondelle, Bruno Bongiovanni,
Francesco Uliana, Emanuel Dore, Geoffrey Van Staen
Architecture group
Marc Campora, Christophe Allexandre, Fabrice Matrat
Amadeus e-Travel Management and Selling Platform Connect
teams for creating products that are shown here
Wikipedia for images of French Riviera
rosetta.org for code examples
Smartflow DSL slides inspired by
http://dslprez.cloudfoundry.com/DSLPresentation.html by
Corinne Krych, Sebastien Blanc

Contenu connexe

En vedette

Commerce as a Service with Cloud Foundry (Cloud Foundry Summit 2014)
Commerce as a Service with Cloud Foundry (Cloud Foundry Summit 2014)Commerce as a Service with Cloud Foundry (Cloud Foundry Summit 2014)
Commerce as a Service with Cloud Foundry (Cloud Foundry Summit 2014)VMware Tanzu
 
Groovy Powered Clean Code
Groovy Powered Clean CodeGroovy Powered Clean Code
Groovy Powered Clean CodeGR8Conf
 
Metaprogramming with Groovy
Metaprogramming with GroovyMetaprogramming with Groovy
Metaprogramming with GroovyGR8Conf
 
Metaprogramming with Groovy
Metaprogramming with GroovyMetaprogramming with Groovy
Metaprogramming with GroovyAli Tanwir
 
Groovy in the Cloud
Groovy in the CloudGroovy in the Cloud
Groovy in the CloudDaniel Woods
 
Kotlin, smarter development for the jvm
Kotlin, smarter development for the jvmKotlin, smarter development for the jvm
Kotlin, smarter development for the jvmArnaud Giuliani
 
We thought we were doing continuous delivery and then...
We thought we were doing continuous delivery and then... We thought we were doing continuous delivery and then...
We thought we were doing continuous delivery and then... Suzie Prince
 
Java collections the force awakens
Java collections  the force awakensJava collections  the force awakens
Java collections the force awakensRichardWarburton
 
Groovy for java developers
Groovy for java developersGroovy for java developers
Groovy for java developersPuneet Behl
 
Reactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of GroovyReactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of GroovySteve Pember
 
Be More Productive with Kotlin
Be More Productive with KotlinBe More Productive with Kotlin
Be More Productive with KotlinBrandon Wever
 
Groovy on Android (as of 2016)
Groovy on Android (as of 2016)Groovy on Android (as of 2016)
Groovy on Android (as of 2016)Kevin H.A. Tan
 
Building an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache GroovyBuilding an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache Groovyjgcloudbees
 
Java 8 and 9 in Anger
Java 8 and 9 in AngerJava 8 and 9 in Anger
Java 8 and 9 in AngerTrisha Gee
 
Apache Groovy: the language and the ecosystem
Apache Groovy: the language and the ecosystemApache Groovy: the language and the ecosystem
Apache Groovy: the language and the ecosystemKostas Saidis
 
Kotlin for Android - Vali Iorgu - mRready
Kotlin for Android - Vali Iorgu - mRreadyKotlin for Android - Vali Iorgu - mRready
Kotlin for Android - Vali Iorgu - mRreadyMobileAcademy
 
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...Bhaskara Reddy Sannapureddy
 

En vedette (20)

Commerce as a Service with Cloud Foundry (Cloud Foundry Summit 2014)
Commerce as a Service with Cloud Foundry (Cloud Foundry Summit 2014)Commerce as a Service with Cloud Foundry (Cloud Foundry Summit 2014)
Commerce as a Service with Cloud Foundry (Cloud Foundry Summit 2014)
 
Groovy Powered Clean Code
Groovy Powered Clean CodeGroovy Powered Clean Code
Groovy Powered Clean Code
 
Metaprogramming with Groovy
Metaprogramming with GroovyMetaprogramming with Groovy
Metaprogramming with Groovy
 
Azure app services API apps
Azure app services API appsAzure app services API apps
Azure app services API apps
 
Groovy on Android
Groovy on AndroidGroovy on Android
Groovy on Android
 
Metaprogramming with Groovy
Metaprogramming with GroovyMetaprogramming with Groovy
Metaprogramming with Groovy
 
Groovy in the Cloud
Groovy in the CloudGroovy in the Cloud
Groovy in the Cloud
 
Ci for-android-apps
Ci for-android-appsCi for-android-apps
Ci for-android-apps
 
Kotlin, smarter development for the jvm
Kotlin, smarter development for the jvmKotlin, smarter development for the jvm
Kotlin, smarter development for the jvm
 
We thought we were doing continuous delivery and then...
We thought we were doing continuous delivery and then... We thought we were doing continuous delivery and then...
We thought we were doing continuous delivery and then...
 
Java collections the force awakens
Java collections  the force awakensJava collections  the force awakens
Java collections the force awakens
 
Groovy for java developers
Groovy for java developersGroovy for java developers
Groovy for java developers
 
Reactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of GroovyReactive Streams and the Wide World of Groovy
Reactive Streams and the Wide World of Groovy
 
Be More Productive with Kotlin
Be More Productive with KotlinBe More Productive with Kotlin
Be More Productive with Kotlin
 
Groovy on Android (as of 2016)
Groovy on Android (as of 2016)Groovy on Android (as of 2016)
Groovy on Android (as of 2016)
 
Building an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache GroovyBuilding an Extensible, Resumable DSL on Top of Apache Groovy
Building an Extensible, Resumable DSL on Top of Apache Groovy
 
Java 8 and 9 in Anger
Java 8 and 9 in AngerJava 8 and 9 in Anger
Java 8 and 9 in Anger
 
Apache Groovy: the language and the ecosystem
Apache Groovy: the language and the ecosystemApache Groovy: the language and the ecosystem
Apache Groovy: the language and the ecosystem
 
Kotlin for Android - Vali Iorgu - mRready
Kotlin for Android - Vali Iorgu - mRreadyKotlin for Android - Vali Iorgu - mRready
Kotlin for Android - Vali Iorgu - mRready
 
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
 

Similaire à Spring one 2012 Groovy as a weapon of maas PaaSification

Isomorphic JS - new silver bullet
Isomorphic JS - new silver bulletIsomorphic JS - new silver bullet
Isomorphic JS - new silver bulletimevs
 
Node JS reverse shell
Node JS reverse shellNode JS reverse shell
Node JS reverse shellMadhu Akula
 
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008Vando Batista
 
Polyglot Alchemy : JSR 223 In Action
Polyglot Alchemy : JSR 223 In ActionPolyglot Alchemy : JSR 223 In Action
Polyglot Alchemy : JSR 223 In Actionfabricematrat
 
JAX London 2015: Java vs Nodejs
JAX London 2015: Java vs NodejsJAX London 2015: Java vs Nodejs
JAX London 2015: Java vs NodejsChris Bailey
 
Java vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJava vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJAXLondon_Conference
 
The magic of passive web vulnerability analysis lava kumar
The magic of passive web vulnerability analysis   lava kumarThe magic of passive web vulnerability analysis   lava kumar
The magic of passive web vulnerability analysis lava kumarowaspindia
 
A Hitchhiker's Guide to Enterprise Microservices with Go
A Hitchhiker's Guide to Enterprise Microservices with GoA Hitchhiker's Guide to Enterprise Microservices with Go
A Hitchhiker's Guide to Enterprise Microservices with GoQAware GmbH
 
Cloud and azure and rock and roll
Cloud and azure and rock and rollCloud and azure and rock and roll
Cloud and azure and rock and rollDavid Giard
 
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdfNode.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdflubnayasminsebl
 
Gapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en AzureGapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en AzureAlberto Diaz Martin
 
Full-stack Web Development with MongoDB, Node.js and AWS
Full-stack Web Development with MongoDB, Node.js and AWSFull-stack Web Development with MongoDB, Node.js and AWS
Full-stack Web Development with MongoDB, Node.js and AWSMongoDB
 
Oracle Code Beijing/Sydney APIM & Microservices: A Match Made in Heaven
Oracle Code Beijing/Sydney   APIM & Microservices: A Match Made in HeavenOracle Code Beijing/Sydney   APIM & Microservices: A Match Made in Heaven
Oracle Code Beijing/Sydney APIM & Microservices: A Match Made in HeavenCapgemini
 
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...Amazon Web Services
 
Node.js for enterprise - JS Conference
Node.js for enterprise - JS ConferenceNode.js for enterprise - JS Conference
Node.js for enterprise - JS ConferenceTimur Shemsedinov
 
Andriy Vandakurov about "Frontend. Global domination"
Andriy Vandakurov about  "Frontend. Global domination" Andriy Vandakurov about  "Frontend. Global domination"
Andriy Vandakurov about "Frontend. Global domination" Pivorak MeetUp
 

Similaire à Spring one 2012 Groovy as a weapon of maas PaaSification (20)

Isomorphic JS - new silver bullet
Isomorphic JS - new silver bulletIsomorphic JS - new silver bullet
Isomorphic JS - new silver bullet
 
Node JS reverse shell
Node JS reverse shellNode JS reverse shell
Node JS reverse shell
 
Vaadin & Web Components
Vaadin & Web ComponentsVaadin & Web Components
Vaadin & Web Components
 
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008"JavaME + Android in action" CCT-CEJUG Dezembro 2008
"JavaME + Android in action" CCT-CEJUG Dezembro 2008
 
Polyglot Alchemy : JSR 223 In Action
Polyglot Alchemy : JSR 223 In ActionPolyglot Alchemy : JSR 223 In Action
Polyglot Alchemy : JSR 223 In Action
 
JAX London 2015: Java vs Nodejs
JAX London 2015: Java vs NodejsJAX London 2015: Java vs Nodejs
JAX London 2015: Java vs Nodejs
 
Java vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris BaileyJava vs. Java Script for enterprise web applications - Chris Bailey
Java vs. Java Script for enterprise web applications - Chris Bailey
 
The magic of passive web vulnerability analysis lava kumar
The magic of passive web vulnerability analysis   lava kumarThe magic of passive web vulnerability analysis   lava kumar
The magic of passive web vulnerability analysis lava kumar
 
A Hitchhiker's Guide to Enterprise Microservices with Go
A Hitchhiker's Guide to Enterprise Microservices with GoA Hitchhiker's Guide to Enterprise Microservices with Go
A Hitchhiker's Guide to Enterprise Microservices with Go
 
Cloud and azure and rock and roll
Cloud and azure and rock and rollCloud and azure and rock and roll
Cloud and azure and rock and roll
 
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdfNode.js and the MEAN Stack Building Full-Stack Web Applications.pdf
Node.js and the MEAN Stack Building Full-Stack Web Applications.pdf
 
Gapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en AzureGapand 2017 - Diseñando Arquitecturas Serverless en Azure
Gapand 2017 - Diseñando Arquitecturas Serverless en Azure
 
Full-stack Web Development with MongoDB, Node.js and AWS
Full-stack Web Development with MongoDB, Node.js and AWSFull-stack Web Development with MongoDB, Node.js and AWS
Full-stack Web Development with MongoDB, Node.js and AWS
 
Oracle Code Beijing/Sydney APIM & Microservices: A Match Made in Heaven
Oracle Code Beijing/Sydney   APIM & Microservices: A Match Made in HeavenOracle Code Beijing/Sydney   APIM & Microservices: A Match Made in Heaven
Oracle Code Beijing/Sydney APIM & Microservices: A Match Made in Heaven
 
GAURAV_MAKKAR
GAURAV_MAKKARGAURAV_MAKKAR
GAURAV_MAKKAR
 
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...
VMware Cloud on AWS: A World of Unique Integrations Between VMware and AWS - ...
 
Node.js for enterprise - JS Conference
Node.js for enterprise - JS ConferenceNode.js for enterprise - JS Conference
Node.js for enterprise - JS Conference
 
Andriy Vandakurov about "Frontend. Global domination"
Andriy Vandakurov about  "Frontend. Global domination" Andriy Vandakurov about  "Frontend. Global domination"
Andriy Vandakurov about "Frontend. Global domination"
 
Pivorak.javascript.global domination
Pivorak.javascript.global dominationPivorak.javascript.global domination
Pivorak.javascript.global domination
 
Node azure
Node azureNode azure
Node azure
 

Dernier

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Wonjun Hwang
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfRankYa
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostZilliz
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesZilliz
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfSeasiaInfotech2
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr LapshynFwdays
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 

Dernier (20)

"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptxE-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
E-Vehicle_Hacking_by_Parul Sharma_null_owasp.pptx
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
Bun (KitWorks Team Study 노별마루 발표 2024.4.22)
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Search Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdfSearch Engine Optimization SEO PDF for 2024.pdf
Search Engine Optimization SEO PDF for 2024.pdf
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage CostLeverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
Leverage Zilliz Serverless - Up to 50X Saving for Your Vector Storage Cost
 
Vector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector DatabasesVector Databases 101 - An introduction to the world of Vector Databases
Vector Databases 101 - An introduction to the world of Vector Databases
 
The Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdfThe Future of Software Development - Devin AI Innovative Approach.pdf
The Future of Software Development - Devin AI Innovative Approach.pdf
 
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
"Federated learning: out of reach no matter how close",Oleksandr Lapshyn
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 

Spring one 2012 Groovy as a weapon of maas PaaSification