run your java code on cloud foundry
DESCRIPTION
Public, private, and hybrid; software, platform, and infrastructure. A discussion of 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. This presentation considers the success of Open Source in general, looks at the Cloud Foundry project, and explains why Cloud Foundry-based PaaSes are the best places to host your applications written in Java and other JVM-based languages. Presented at GOTO Aarhus 2013TRANSCRIPT
![Page 1: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/1.jpg)
RUN YOUR JAVA CODE ON CLOUD FOUNDRY
Andy Piper - @andypiperCloud Foundry Developer Advocate, Pivotal
![Page 2: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/2.jpg)
Hello I’m Andy
![Page 3: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/3.jpg)
a few things about me
Developer Advocate @ Cloud Foundrysocial web enthusiast
maker, educator, LEGO fanOSS contributor
Eclipse Project Lead (Paho / MQTT)excited by “what’s next”, Internet of Things, etc.
![Page 4: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/4.jpg)
Developer Advocate? hellz to the yeah!
![Page 5: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/5.jpg)
@andypiper[works on]
#cloudfoundry[at]
@gopivotal
![Page 6: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/6.jpg)
3 themes openness, cloud computing, and Java
![Page 7: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/7.jpg)
1. Why be / do / think Open?2. Why is an Open Cloud Platform important?3. Why run Java on an open cloud?
![Page 8: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/8.jpg)
1. Why be / do / think Open?
![Page 9: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/9.jpg)
An important year in software
1991
Hello everybody out there using minix -
I’m doing a (free) operating system (just a hobby, won’t be big andprofessional like gnu) for 386(486) AT clones.
From:&[email protected]:&comp.os.minixDate:&25&Aug&91&20:57:08&GMTOrganization:&University&of&Helsinki
![Page 10: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/10.jpg)
~21 years later: Linux has won
![Page 11: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/11.jpg)
Linux runs everywhere (even old versions, on crashy airline entertainment systems...)
#P0WN ALL TEH
GADGETZ !
![Page 12: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/12.jpg)
The Penguin is triumphant! (maybe not this one…)
![Page 13: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/13.jpg)
Linux is ubiquitous
(but often invisible)
![Page 14: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/14.jpg)
It works.
![Page 15: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/15.jpg)
2. What about Cloud?
![Page 16: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/16.jpg)
3 layers IaaS, PaaS, SaaS
Infrastructure
Platform
SoftwareGmail, Salesforce,
Flickr, Google Docs...
Amazon EC2, Google CE, OpenStack, vSphere, Joyent, Cloud Stack,
Eucalyptus...
Google AppEngine, Heroku, Cloud Foundry, EngineYard, Apprenda...
![Page 17: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/17.jpg)
How did we get here?
![Page 18: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/18.jpg)
Infrastructure Clouds - consumer web companies built out according to their own needs to support Software
![Page 19: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/19.jpg)
But - still need to build & manage Platform
![Page 20: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/20.jpg)
Why is it so hard...? A real deployment flow (!)
![Page 21: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/21.jpg)
An alternative approach... Cloud Foundry can make it simpler!
cf#iaas.yml
provision0<my0cloud>
add_capacity0<my0cloud>
target0<my0cloud>
push0<my0app>
create0<my0services>
bind0<my0services>
scale0<my0app>0+100
OPERATOR DEVELOPER
Cloud Deployment: 2-4 hours App Deployment: 30-90 seconds
![Page 22: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/22.jpg)
C L O U D F O U N D R Y
Demo
![Page 23: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/23.jpg)
Cloud Foundry - the Open PaaS
Open Source
Micro&Clouds
Private&Clouds
Public&Clouds
CUSTOM SERVICES
CUSTOM RUNTIMES
![Page 24: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/24.jpg)
All the pieces to make your own!
“if you can’t open it, you don’t own it” (O’Reilly MAKE)
![Page 25: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/25.jpg)
Open & public from the start Code all on Github
![Page 26: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/26.jpg)
Google AppEngine, Heroku, Cloud Foundry,
OpenShift, Stackato, Cloudbees, AppFog,
Elastic Beanstalk, anyNines, Apprenda...
![Page 27: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/27.jpg)
Not all PaaSes are created equal...
Run on: AWS, OpenStack, vSphere... more to come!
![Page 28: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/28.jpg)
All about Choice
Private Clouds
PublicClouds
MicroClouds
Build your own from github.com/cloudfoundry, buy from Pivotal, or run a compatible private version
Run in a local virtual machine with identical services and runtimes
(MCF, Vagrant)
At run.pivotal.io or any Cloud Foundry-
powered PaaS
![Page 29: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/29.jpg)
(pause)
![Page 30: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/30.jpg)
44 years since Mach 1
![Page 31: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/31.jpg)
3. What about Java and the JVM?
![Page 32: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/32.jpg)
From VM-centric to Application Centric
InfrastructureOne
JVM
VM
InfrastructureOne
InfrastructureTwo
App
Container 1
App Server
JVMContainer 2
App Server
JVM
Dev Framework Dev Framework
App Server
Configurations Manifests, Automations
InfrastructureTwo
JVM
VM
Dev Framework
App Server
Configurations
App App App
![Page 33: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/33.jpg)
Buildpacks
Buildpacks are responsible for preparing the machine image for an application
Application
Container
Runtime
Operating System
LibrariesDEA
Buildpack }Droplet
![Page 34: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/34.jpg)
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
![Page 35: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/35.jpg)
Built-in Buildpacks
→→→
![Page 36: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/36.jpg)
Tested Buildpackshttps://github.com/cloudfoundry-community/cf-docs-contrib/wiki/Buildpacks
LanguagesContainers
Haskell
![Page 37: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/37.jpg)
Java Buildpack
Supports a variety of JVM languages, containers, and frameworks with a modular, configurable, and extensible design
![Page 38: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/38.jpg)
Java Buildpack Concepts
Containers Frameworks
JREsOpenJDK, etc.
Java main()TomcatGroovy
Spring Boot CLIPlay
Spring configPlay config
Play JPA configNew Relic
![Page 39: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/39.jpg)
Container Detection Criteria
Java main() META-INF/MANIFEST.MF exists with Main-class attribute set
Tomcat WEB-INF directory exists
Groovy.groovy file with a main() method, or
.groovy file with no classes, or.groovy file with a shebang (#!) declaration
Spring Boot CLIone or more POGO .groovy files
with no main() method, andno WEB-INF directory
Play start and lib/play.play_*.jar exist
Choose zero or one
![Page 40: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/40.jpg)
Framework Detection Criteria
Spring spring-core*.jar exists
Play config Play application detected
Play JPA config play-java-jpa plugin exists in app
New Relic New Relic service bound to app
Choose all that apply
![Page 41: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/41.jpg)
Customization
Two ways to customize the Java buildpack
Configure 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 →
![Page 42: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/42.jpg)
Choice!
• IBM donated WebSphere Liberty Buildpack
• http://blog.cloudfoundry.com/2013/09/09/ibm-websphere-liberty-buildpack-contributed-to-cloud-foundry/
![Page 43: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/43.jpg)
the new Spring spring.io
![Page 44: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/44.jpg)
WEB
Controllers, REST,WebSocket
INTEGRATION
Channels, Adapters,Filters, Transformers
BATCH
Jobs, Steps,Readers, Writers
BIG DATA
Ingestion, Export,Orchestration, Hadoop
DATA
NON-RELATIONALRELATIONAL
CORE
GROOVYFRAMEWORK SECURITY REACTOR
GRAILS
Full-stack, Web
XD
Stream, Taps, Jobs
BOOT
Bootable, Minimal, Ops-Ready
![Page 45: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/45.jpg)
Groovy and Spring Boot
![Page 46: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/46.jpg)
Groovy and Spring Boot
![Page 47: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/47.jpg)
Groovy and Spring Boot
![Page 48: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/48.jpg)
Spring and the Cloud
• Goal: deploy Spring apps to the cloud without changing a single line of code
• Cloud Foundry automatically re-configures bean definitions to bind to cloud services
• Works with Spring and Grails
![Page 49: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/49.jpg)
Portability
![Page 50: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/50.jpg)
S P R I N G
Demo
![Page 51: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/51.jpg)
4. ... the end?
![Page 52: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/52.jpg)
Join us! ... a pull request is all it takes!
![Page 53: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/53.jpg)
Connect
http://twitter.com/andypiper
http://andypiper.co.uk
http://slideshare.net/andypiper
![Page 54: Run your Java code on Cloud Foundry](https://reader034.vdocuments.site/reader034/viewer/2022052618/554b19cbb4c9056f098b4f98/html5/thumbnails/54.jpg)
Image credits
• Happy Tux http://igloo.crystalxp.net/ZeNDaMs
• Signpost http://www.flickr.com/photos/16002150@N08/2006266695/
• Other images are author’s own, or royalty-free and CC-licensed works from Wikimedia Commons
• Build your own Heroku video http://www.youtube.com/watch?v=e0EprkBamvQ