What’s happening with applications today?
Frameworks are what really matter
• Developer productivity and innovation
• Reduce time to market
New application types
• Mobile, Social, SaaS
• Apps released early and often
Data intensive
• Emerging requirements: elasticity, multi-cloud
• Web orientation drives exponential data volumes
Deployed on virtual and cloud infrastructures
• Virtualization, Cloud, PaaS
2
The Open
Platform as a Service
Deploy and scale applications in
seconds, without locking yourself
into a single cloud
Open,
ple, ble
Sim , Scala
lexible
F
Choice of frameworks, services & clouds
OSS community
e!
on
al
a nd
St
+
vFabric
Postgres
Ap
p
Data
lica
Services
'o
n *S
vFabric
erv
RabbitMQTM Msg
ice
Services
*In
ter
fac
e*
Other
Services
Additional partners
services …
5
Choice of frameworks, services & clouds
OSS community
ne!
lo
da
an
St
+
vFabric
Postgres
Ap
e(
Private((
p
fac
Data
lica
Services
Clouds((
ter
'o
r(In
n *S
vFabric
ide
erv
RabbitMQTM Public(
ov
Msg
ice
(Pr
Services
Clouds( Partners(
*In
ud
ter
Cl o
fac
.COM
Micro(
e*
Other
Services Clouds(
Additional partners
services …
A void
Lo ck-in
6
Real choice of provider
Choice of Private Choice of Public Choice of Cloud
Cloud Distributions Cloud Providers Infrastructure
.COM
Bare metal
7
Developer Perspective
• Program to standard APIs
– SQL drivers
– Mongo client libraries
– ...
• Connection settings from VCAP_SERVICES environment
variable
10
When you’re ready to deploy...
!
!
!$!vmc!target!<any!cloud>!
!!
!$!vmc!push!<my6app>!
!
!!!>!bind!services?!Yes!
!
!$!vmc!instances!<my6app>!+100!!
!
!
! That’s all folks!
11
The sample application
• http://grails.org
• Built with Grails
– JVM web framework
– Spring MVC under the hood
– Groovy as the main development language
12
Architecture
HTTP
Controller View
Twitter
Service REST
Async Plugin
Update
GORM/Hibernate
Database
Forum
+ Jobs
17
Single instance
Cache
Search
Job
indices
App
Node
Local, embedded ehcache
18
Single instance
Cache
Search
Job
indices
App
Node
Local Lucene indexes
19
Single instance
Cache
Search
Job
indices
App
Node
Single job of each type
20
Multi-instance
Cache Cache Cache
Search Search Search
Job Job Job
indices indices indices
App App App
Node Node Node
3. Return 2. Return 3. Return
1. Update
stale data latest stale data
21
Multi-instance
Cache Cache Cache
Search Search Search
Job Job Job
indices indices indices
App App App
Node Node Node
Mail Job Mail Job Mail Job
Jobs are executed three times?
22
Jobs
Pros Cons
Efficient in-JVM Extra burden on web
processing server
Quartz Tried & tested
Relatively simple
Use right language for Counts against your
the job quota
Workers Distribute the workload
33
Search
• Compass 2.0
– Lucene indexes on local file system
– Indexes database data
• > 1 node == stale indexes
• Search as a service
– Solr
– Elastic Search
– Index Tank
– Amazon Cloud Search
– Not on Cloud Foundry (yet)
• Synchronise indexes across nodes!
– Eventual consistency is good enough
34
Synchronisation with an event bus
Distribute Distribute
Distribute
Initiate
event
Event Event Event
bus bus bus
35
Local filesystem
There’s a file in here!
Does the file exist or not?
37
Ephemeral file system
• VMs are created and destroyed
– => application file system created and destroyed
– You can write to the local file system...
– ...but you will probably lose that data at some point
• Don’t store persistent data on local FS!
– File uploads
38
Wiki images
Blob store
GridFS
Controller
Upload
User
39
Logging
• View logs with `vmc logs`
• What if the application instance is restarted?
– Logs are gone
• What about multiple application instances?
– `vmc logs --instance 1` or `vmc logs --all`
– but 30 days after deployment?
40
Data
How do we load initial data?
Perform data migrations?
Back data up?
46
Access your services
Mongo Client
vmc tunnel
(SSH Tunnel)
Cloud Foundry
MongoDB
service
47
Import/export
Import == mysql < data.sql
Export == mysqldump
48
Application (WIP*)
Source https://github.com/grails-samples/grails-website
Live http://grails-website.cloudfoundry.com/
* Work in Progress
49
Summary
• PaaS is the application platform for the Cloud era
• PaaS will change the way you write apps
– Design for horizontal scalability
– Account for ephemeral file system
– Rich set of services
– Go polyglot!
• Tools & libraries are important
– Spring for the win!
• Can use Redis in place of RabbitMQ for some patterns
50
What’s next?
• Sign up - www.cloudfoundry.com
• Get the source code - www.cloudfoundry.org
• Download your Micro Cloud Foundry –
my.cloudfoundry.com/micro
• Learn more on the Cloud Foundry blog -
blog.cloudfoundry.com
• Follow us - @cloudfoundry
51