SlideShare a Scribd company logo
©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

More Related Content

Viewers also liked

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 Code
GR8Conf
 
Metaprogramming with Groovy
Metaprogramming with GroovyMetaprogramming with Groovy
Metaprogramming with Groovy
GR8Conf
 
Azure app services API apps
Azure app services API appsAzure app services API apps
Azure app services API apps
Panagiotis Tsilopoulos
 
Groovy on Android
Groovy on AndroidGroovy on Android
Groovy on Android
Alexey Zhokhov
 
Metaprogramming with Groovy
Metaprogramming with GroovyMetaprogramming with Groovy
Metaprogramming with Groovy
Ali Tanwir
 
Groovy in the Cloud
Groovy in the CloudGroovy in the Cloud
Groovy in the Cloud
Daniel Woods
 
Ci for-android-apps
Ci for-android-appsCi for-android-apps
Ci for-android-apps
Anthony Dahanne
 
Kotlin, smarter development for the jvm
Kotlin, smarter development for the jvmKotlin, smarter development for the jvm
Kotlin, smarter development for the jvm
Arnaud 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 awakens
RichardWarburton
 
Groovy for java developers
Groovy for java developersGroovy for java developers
Groovy for java developers
Puneet 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 Groovy
Steve Pember
 
Be More Productive with Kotlin
Be More Productive with KotlinBe More Productive with Kotlin
Be More Productive with Kotlin
Brandon 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 Groovy
jgcloudbees
 
Java 8 and 9 in Anger
Java 8 and 9 in AngerJava 8 and 9 in Anger
Java 8 and 9 in Anger
Trisha 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 ecosystem
Kostas Saidis
 
Kotlin for Android - Vali Iorgu - mRready
Kotlin for Android - Vali Iorgu - mRreadyKotlin for Android - Vali Iorgu - mRready
Kotlin for Android - Vali Iorgu - mRready
MobileAcademy
 
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Groovyscriptingformanualandautomationtestingusingrobotframework 141221014703-...
Bhaskara Reddy Sannapureddy
 

Viewers also liked (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-...
 

Similar to 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 bullet
imevs
 
Node JS reverse shell
Node JS reverse shellNode JS reverse shell
Node JS reverse shell
Madhu Akula
 
Vaadin & Web Components
Vaadin & Web ComponentsVaadin & Web Components
Vaadin & Web Components
Joonas Lehtinen
 
"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
Vando Batista
 
Polyglot Alchemy : JSR 223 In Action
Polyglot Alchemy : JSR 223 In ActionPolyglot Alchemy : JSR 223 In Action
Polyglot Alchemy : JSR 223 In Action
fabricematrat
 
JAX London 2015: Java vs Nodejs
JAX London 2015: Java vs NodejsJAX London 2015: Java vs Nodejs
JAX London 2015: Java vs Nodejs
Chris 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 Bailey
JAXLondon_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 kumar
owaspindia
 
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
QAware 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 roll
David 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.pdf
lubnayasminsebl
 
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
Alberto 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 AWS
MongoDB
 
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
Capgemini
 
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 Conference
Timur Shemsedinov
 
Pivorak.javascript.global domination
Pivorak.javascript.global dominationPivorak.javascript.global domination
Pivorak.javascript.global domination
Андрей Вандакуров
 
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
 
Node azure
Node azureNode azure
Node azure
Emanuele DelBono
 

Similar to 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
 
Pivorak.javascript.global domination
Pivorak.javascript.global dominationPivorak.javascript.global domination
Pivorak.javascript.global domination
 
Andriy Vandakurov about "Frontend. Global domination"
Andriy Vandakurov about  "Frontend. Global domination" Andriy Vandakurov about  "Frontend. Global domination"
Andriy Vandakurov about "Frontend. Global domination"
 
Node azure
Node azureNode azure
Node azure
 

Recently uploaded

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
Product School
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
DianaGray10
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
Product School
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
Cheryl Hung
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
Laura Byrne
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
Prayukth K V
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Jeffrey Haguewood
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
RTTS
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
ThousandEyes
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
Product School
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
Product School
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
Fwdays
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
Abida Shariff
 

Recently uploaded (20)

FIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdfFIDO Alliance Osaka Seminar: Overview.pdf
FIDO Alliance Osaka Seminar: Overview.pdf
 
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
De-mystifying Zero to One: Design Informed Techniques for Greenfield Innovati...
 
UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4UiPath Test Automation using UiPath Test Suite series, part 4
UiPath Test Automation using UiPath Test Suite series, part 4
 
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdfFIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
FIDO Alliance Osaka Seminar: FIDO Security Aspects.pdf
 
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
From Daily Decisions to Bottom Line: Connecting Product Work to Revenue by VP...
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Key Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdfKey Trends Shaping the Future of Infrastructure.pdf
Key Trends Shaping the Future of Infrastructure.pdf
 
The Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and SalesThe Art of the Pitch: WordPress Relationships and Sales
The Art of the Pitch: WordPress Relationships and Sales
 
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 previewState of ICS and IoT Cyber Threat Landscape Report 2024 preview
State of ICS and IoT Cyber Threat Landscape Report 2024 preview
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
 
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdfFIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
FIDO Alliance Osaka Seminar: Passkeys and the Road Ahead.pdf
 
JMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and GrafanaJMeter webinar - integration with InfluxDB and Grafana
JMeter webinar - integration with InfluxDB and Grafana
 
Assuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyesAssuring Contact Center Experiences for Your Customers With ThousandEyes
Assuring Contact Center Experiences for Your Customers With ThousandEyes
 
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
From Siloed Products to Connected Ecosystem: Building a Sustainable and Scala...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
AI for Every Business: Unlocking Your Product's Universal Potential by VP of ...
 
"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi"Impact of front-end architecture on development cost", Viktor Turskyi
"Impact of front-end architecture on development cost", Viktor Turskyi
 
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptxIOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
IOS-PENTESTING-BEGINNERS-PRACTICAL-GUIDE-.pptx
 

Spring one 2012 Groovy as a weapon of maas PaaSification