Presented at JAX London 2013
Public, private, and hybrid; software, platform, and infrastructure. This talk will discuss the current state of the Platform-as-a-Service space, and why the keys to success lie in enabling developer productivity, and providing openness and choice. We'll do this by considering the success of Open Source in general, look at the Cloud Foundry project, and find out why Cloud Foundry-based PaaSes are the best places to host your applications written in Java and other JVM-based languages.
3. Developer Advocate @ Cloud Foundry
social web enthusiast
maker, educator, LEGO fan
OSS contributor
Eclipse Project Lead (Paho / MQTT)
excited by âwhatâs nextâ, Internet of Things, etc.
!
!
@andypiper
apiper@gopivotal.com
a few things about me
9. From: torvalds@klaava.Helsinki.FI
Newsgroups: comp.os.minix
Date: 25 Aug 91 20:57:08 GMT
Organization: University of Helsinki
1991
An important year in software
Hello everybody out
there using minix !
Iâm doing a (free)
operating system
(just a hobby,
wonât be big and
professional like
gnu) for 386(486)
AT clones.
16. Cloud Foundry - the Open PaaS
Public&
Clouds
Private&
Clouds
CUSTOM â¨
RUNTIMES
Micro&
Clouds
CUSTOM â¨
SERVICES
Open Source
17. â⌠we believe that
the best solution
should be available
on top of any cloud
and not just be
locked into EC2â
!
- Mike Soby in JAX Magazine
Special Edition
18. All the pieces to make
your own!
âif you canât open it, you
donât own itâ (OâReilly MAKE)
24. From VM-centric to Application Centric
App
App
App
App
Dev Framework
Dev Framework
Dev Framework
Configurations
Configurations
Manifests, Automations
JVM
JVM
App Server
App Server
VM
VM
Infrastructureâ¨
One
Infrastructureâ¨
Two
Container 1
JVM
Container 2
JVM
App Server
App Server
Infrastructureâ¨
One
Infrastructureâ¨
Two
25. Buildpacks
Buildpacks are responsible for preparing the
machine image for an application
Application
Buildpack
Container
Libraries
DEA
Runtime
Operating System
}
Droplet
26. Compatibility
Cloud Foundry buildpacks follow the â¨
Heroku buildpack design
Cloud Foundry and Heroku buildpacks are compatibleâ¨
(if you take care to make them compatible)
!
Other PaaS providers are adopting the â¨
buildpack design - emerging convention
29. Java Buildpack
Supports a variety of JVM languages, containers,
and frameworks with a modular, conďŹgurable, and
extensible design
30. âThe primary objective of the Java buildpack is to be
the easiest way to run a Java application. The word
easiest can mean a lot of things, but to me it means
that a developer can push an application and have an
âit just worksâ˘â experience.â
!
- Ben Hale, Java buildpack engineer
http://blog.cloudfoundry.com/2013/09/06/introducing-the-cloud-foundry-java-buildpack/
32. Container Detection Criteria
Java main()
META-INF/MANIFEST.MF exists
with Main-class attribute set
Tomcat
WEB-INF directory exists
Groovy
.groovy ďŹle with a main() method, or!
.groovy ďŹle with no classes, or!
.groovy ďŹle with a shebang (#!) declaration
Spring Boot CLI
one or more POGO .groovy ďŹles
with no main() method, and
no WEB-INF directory
Play
start and lib/play.play_*.jar
exist
Choose zero or one
33. Framework Detection Criteria
Spring
spring-core*.jar exists
Play conďŹg
Play application detected
Play JPA conďŹg
play-java-jpa plugin exists in app
New Relic
New Relic service bound to app
Choose all that apply
34. Customization
Two ways to customize the Java buildpack
ConďŹgure artifacts used by standard
JREs, Containers, and Frameworks
Extend the buildpack with your own JREs,
Containers, and Frameworks
Customization is done by
forking the buildpack
â
35. Choice!
⢠IBM donated WebSphere Liberty Buildpackâ¨
http://blog.cloudfoundry.com/2013/09/09/ibm-websphereliberty-buildpack-contributed-to-cloud-foundry/
⢠Other forks add additional containers and frameworks Jonas, Dropwizard, Karaf, etc
42. Spring and the Cloud
⢠Goal: deploy Spring apps to the cloud without
changing a single line of code
⢠Cloud Foundry automatically re-conďŹgures bean
deďŹnitions to bind to cloud services
⢠Works with Spring and Grails