Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
-
Upload
jaxlondonconference -
Category
Technology
-
view
1.078 -
download
0
description
Transcript of Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)
![Page 1: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/1.jpg)
Andy Piper | @andypiper | [email protected] Cloud Foundry Developer Advocate, Pivotal
Run Your Java Apps on Cloud Foundry
![Page 2: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/2.jpg)
Hello I’m Andy
![Page 3: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/3.jpg)
a few things about me
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 [email protected]
![Page 4: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/4.jpg)
Developer Advocate? hellz to the yeah!
![Page 5: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/5.jpg)
![Page 6: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/6.jpg)
@andypiper !
[works on] !
#cloudfoundry !
[at] !
@gopivotal
![Page 7: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/7.jpg)
1. Why is an Open Cloud Platform important? 2. What is Cloud Foundry? 3. Java support in the open cloud
![Page 8: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/8.jpg)
Why is an Open Cloud Platform important?
![Page 9: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/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 and professional 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 - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/10.jpg)
~21 years later: Linux has won
![Page 11: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/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 - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/12.jpg)
It works.
![Page 13: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/13.jpg)
Don’t be locked-in do you know what is coming tomorrow?
![Page 14: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/14.jpg)
What is Cloud Foundry?
![Page 15: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/15.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 16: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/16.jpg)
Cloud Foundry - the Open PaaS
Open Source
Micro&Clouds
Private&Clouds
Public&Clouds
CUSTOM SERVICES
CUSTOM RUNTIMES
![Page 17: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/17.jpg)
“… 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
![Page 18: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/18.jpg)
All the pieces to make your own!
“if you can’t open it, you don’t own it” (O’Reilly MAKE)
![Page 19: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/19.jpg)
Open & public from the start Code all on Github
![Page 20: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/20.jpg)
Why is it so hard...? A real deployment flow (!)
![Page 21: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/21.jpg)
An alternative approach... Cloud Foundry can make it simpler!
cf#iaas.yml+provision+<my+cloud>+add_capacity+<my+cloud>
target+<my+cloud>+push+<my+app>+create+<my+services>+bind+<my+services>+scale+<my+app>++100
OPERATOR DEVELOPER
Cloud Deployment: 2-4 hours App Deployment: 30-90 seconds
![Page 22: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/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 - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/23.jpg)
Java (and JVM language) support in Cloud Foundry
![Page 24: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/24.jpg)
From VM-centric to Application Centric
Infrastructure One
JVM
VM
Infrastructure One
Infrastructure Two
App
Container 1
App Server
JVMContainer 2
App Server
JVM
Dev Framework Dev Framework
App Server
Configurations Manifests, Automations
Infrastructure Two
JVM
VM
Dev Framework
App Server
Configurations
App App App
![Page 25: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/25.jpg)
Buildpacks
Buildpacks are responsible for preparing the machine image for an application
Application
Container
Runtime
Operating System
LibrariesDEA
Buildpack }Droplet
![Page 26: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/26.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 27: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/27.jpg)
Built-in Buildpacks
→→→
![Page 28: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/28.jpg)
Tested Buildpackshttps://github.com/cloudfoundry-community/cf-docs-contrib/wiki/Buildpacks
LanguagesContainers
Haskell
![Page 29: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/29.jpg)
Java Buildpack
Supports a variety of JVM languages, containers, and frameworks with a modular, configurable, and extensible design
![Page 30: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/30.jpg)
“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/
![Page 31: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/31.jpg)
Java Buildpack Concepts
Containers Frameworks
JREsOpenJDK, etc.
Java main() Tomcat Groovy
Spring Boot CLI Play
Spring config Play config
Play JPA config New Relic
![Page 32: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/32.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, and no WEB-INF directory
Play start and lib/play.play_*.jar exist
Choose zero or one
![Page 33: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/33.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 34: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/34.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 35: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/35.jpg)
Choice!
• IBM donated WebSphere Liberty Buildpack http://blog.cloudfoundry.com/2013/09/09/ibm-websphere-liberty-buildpack-contributed-to-cloud-foundry/
• Other forks add additional containers and frameworks - Jonas, Dropwizard, Karaf, etc
![Page 36: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/36.jpg)
Tooling support
$ mvn clean package cf:push!$ gradle clean assemble cf-push
http://blog.cloudfoundry.com/2013/10/29/java-tooling/
![Page 37: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/37.jpg)
the new Spring spring.io
![Page 38: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/38.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 39: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/39.jpg)
Groovy and Spring Boot
![Page 40: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/40.jpg)
Groovy and Spring Boot
![Page 41: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/41.jpg)
Groovy and Spring Boot
![Page 42: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/42.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 43: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/43.jpg)
Portability
![Page 44: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/44.jpg)
S P R I N G Demo
![Page 45: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/45.jpg)
… and finally …
![Page 46: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/46.jpg)
Try It! http://run.pivotal.io
![Page 47: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/47.jpg)
Join us! ... a pull request is all it takes!
![Page 48: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/48.jpg)
Connect
http://twitter.com/andypiper http://andypiper.co.uk
http://slideshare.net/andypiper
![Page 49: Run Your Java Code on Cloud Foundry - Andy Piper (Pivotal)](https://reader034.fdocuments.us/reader034/viewer/2022052410/5551264db4c905f1528b486f/html5/thumbnails/49.jpg)
Credits
• Padlock http://www.flickr.com/photos/bpc009/3328427457/
• Other images are author’s own, or royalty-free and CC-licensed works from Wikimedia Commons
• Thanks to Scott Frederick, Josh Long and Guillaume Laforge for content