Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Run your Java apps on Cloud Foundry


Published on

Talk presented at JAX London 2013

Published in: Technology, Education

Run your Java apps on Cloud Foundry

  1. 1. Andy Piper | @andypiper | Cloud Foundry Developer Advocate, Pivotal Run Your Java Apps on Cloud Foundry
  2. 2. Hello I’m Andy
  3. 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 a few things about me
  4. 4. Developer Advocate? hellz to the yeah!
  5. 5. @andypiper ! [works on] ! #cloudfoundry ! [at] ! @gopivotal
  6. 6. 1. Why is an Open Cloud Platform important? 2. What is Cloud Foundry? 3. Java support in the open cloud
  7. 7. Why is an Open Cloud Platform important?
  8. 8. 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.
  9. 9. ~21 years later: Linux has won
  10. 10. #P0WN ALL TEH GADGETZ ! Linux runs everywhere (even old versions, on crashy airline entertainment systems...)
  11. 11. It works.
  12. 12. Don’t be locked-in do you know what is coming tomorrow?
  13. 13. What is Cloud Foundry?
  14. 14. Software Gmail, Salesforce, Flickr, Google Docs... Platform Google AppEngine, Heroku, Cloud Foundry, EngineYard, Apprenda... Infrastructure 3 layers Amazon EC2, Google CE, OpenStack, vSphere, Joyent, Cloud Stack, Eucalyptus... IaaS, PaaS, SaaS
  15. 15. Cloud Foundry - the Open PaaS Public& Clouds Private& Clouds CUSTOM 
 SERVICES Open Source
  16. 16. “… 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
  17. 17. All the pieces to make your own! “if you can’t open it, you don’t own it” (O’Reilly MAKE)
  18. 18. Open & public from the start Code all on Github
  19. 19. Why is it so hard...? A real deployment flow (!)
  20. 20. DEVELOPER OPERATOR cf#iaas.yml+ target+<my+cloud>+ provision+<my+cloud>+ push+<my+app>+ add_capacity+<my+cloud> create+<my+services>+ bind+<my+services>+ scale+<my+app>++100 Cloud Deployment: 2-4 hours An alternative approach... App Deployment: 30-90 seconds Cloud Foundry can make it simpler!
  21. 21. CLOUD FOUNDRY Demo 

  22. 22. Java (and JVM language) support in Cloud Foundry
  23. 23. 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
  24. 24. Buildpacks Buildpacks are responsible for preparing the machine image for an application Application Buildpack Container Libraries DEA Runtime Operating System } Droplet
  25. 25. 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
  26. 26. Built-in Buildpacks → → →
  27. 27. Tested Buildpacks Containers Languages Haskell
  28. 28. Java Buildpack Supports a variety of JVM languages, containers, and frameworks with a modular, configurable, and extensible design
  29. 29. “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
  30. 30. Java Buildpack Concepts Containers Frameworks Java main() Spring config Play config Play JPA config New Relic Tomcat Groovy Spring Boot CLI Play JREs OpenJDK, etc.
  31. 31. 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 CLI one 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
  32. 32. 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
  33. 33. 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 →
  34. 34. Choice! • IBM donated WebSphere Liberty Buildpack • Other forks add additional containers and frameworks Jonas, Dropwizard, Karaf, etc
  35. 35. Tooling support $ mvn clean package cf:push! $ gradle clean assemble cf-push
  36. 36. the new Spring
  37. 37. XD BOOT Stream, Taps, Jobs GRAILS Bootable, Minimal, Ops-Ready Full-stack, Web INTEGRATION BATCH BIG DATA WEB Channels, Adapters,
 Filters, Transformers Jobs, Steps,
 Readers, Writers Ingestion, Export,
 Orchestration, Hadoop Controllers, REST,
  38. 38. Groovy and Spring Boot
  39. 39. Groovy and Spring Boot
  40. 40. Groovy and Spring Boot
  41. 41. 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
  42. 42. Portability
  43. 43. SPRING 
  44. 44. … and finally …
  45. 45. Try It!
  46. 46. Join us! ... a pull request is all it takes!
  47. 47. Connect 

  48. 48. Credits • Padlock • 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