Applica'on Development in the Cloud Era
Adrian Colyer CTO, SpringSource -‐ VMware
Everything changes
90’s = web rush 10’s = ?
• The New Requirements
• The New Applica'on Architecture • The New PlaLorm
mobile first
user centric
web-‐app & browser
users & services
in real-‐'me
what happened last month?
what’s happening now?
on modern infrastructure
SSD
SaaS App
SaaS App
SaaS App
IaaS
PaaS
PaaS
Corporate Data Centers
SaaS App
SaaS App
SaaS App
IaaS
PaaS
PaaS
Corporate Data Centers
SaaS App
SaaS App
SaaS App
IaaS
PaaS
PaaS
Corporate Data Centers
Apps Data
THE NEW APPLICATION ARCHITECTURE
Building apps in the 2010s:
Client
Server
View Genera'on Controllers
Service Layer
Repositories Channels RDBMS
CRUD
Applica'on Server
Browser
Browser-‐based HTML Rendering (progressive enhancement)
HTML HTTP
Browser-‐based HTML Rendering (progressive enhancement)
Client
Server
Controllers View Genera'on
Service Layer
Repositories Channels RDBMS
CRUD
Applica'on Server
Browser
HTML HTTP
Client
Server
Service Layer
Repositories Channels RDBMS
CRUD
Browser app or embedded in na've
JSON HTTP & websockets
HTML5 & JS Engine
Controllers DOM
Client-‐side model
events &
no'fica'ons
web stg
Client
PaaS
Service Layer
Repositories Channels RDBMS
CRUD
Browser app or embedded in na've
JSON HTTP & websockets
HTML5 & JS Engine
Controllers DOM
Client-‐side model
events &
no'fica'ons
web stg
Service Service Service business / domain services
Client
PaaS CRUD
Repositories Channels RDBMS
Browser app or embedded in na've
JSON HTTP & websockets
HTML5 & JS Engine
Controllers DOM
Client-‐side model
events &
no'fica'ons
web stg
Service Service Service business / domain services
Client
PaaS
Browser app or embedded in na've
JSON HTTP & websockets
HTML5 & JS Engine
Controllers DOM
Client-‐side model
events &
no'fica'ons
web stg
Service Service Service business / domain services
Service Service Service plaLorm services, web APIs
SQL NoSQL Other
HTML5 (& na've)
PaaS
JSON HTTP & websockets
HTML5 & JS Engine
events &
no'fica'ons
Applica'ons
Services
Follow the user…
wire.js
Fabrics extend to the client
“this is a great 'me to be a server-‐side developer :)”
grails-app/conf/UrlMappings.groovy static mappings = { "/product/$id?" (resource:"product") }
Method Ac6on GET show PUT update POST save DELETE delete
C reated R eplicated A ppended P rocessed
credit: Charles Fan, VMware
The New Data…
CRAP data
Ingest touch stream
logs
ac'vity Batch
Analy'cs
Spring Data Hadoop
• MapReduce, Hive, Pig • HDFS and Hbase
• Integra'on into Spring Batch • Spring Integra'on adapters
Spring Hadoop
CRAP data
Ingest touch stream
logs
ac'vity Batch
Analy'cs
service instance
service instance
service instance
IMDG IMDG IMDG
CEP
THE NEW PLATFORM Deploying apps in the 2010s:
applica'on server
service plaLorm (aaS)
Private Clouds
Public Clouds
Data Services
Other Services
Msg Services
Micro Clouds
Grails STS Spring Roo
CONCLUDING REMARKS
The New Applica'on Architecture
• Mobile first, real-‐'me, contextual • Applica'ons and Services • Alchemy (CRAP -‐> Gold) • PlaLorm as a Service
THANK YOU Adrian Colyer, CTO SpringSource -‐ VMware