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.

Deploying Elastic Java EE Microservices in the Cloud with Docker

JavaOne 2015 tutorial describing how to build and deploy a micro services to Amazon Elastic Beanstalk with Docker and Payara Micro. All code is on GitHub

Deploying Elastic Java EE Microservices in the Cloud with Docker

  1. 1. Deploying Elastic Java EE Microservices in the Cloud with Docker Steve Millidge : Founder Payara
  2. 2. What are we Trying to Do!
  3. 3. 2 Hours: Microservice -> Cloud
  4. 4. More Information and Code REST Payara JCache Example Code https://github.com/payara/Payara-Examples/tree/master/rest-examples/rest- jcache Docker File Example https://github.com/smillidge/JavaOne-Docker-Example Payara Micro Docker Image (Just Add WAR) https://hub.docker.com/r/payaradocker/j1-payara-micro/ Payara GitHub Project https://github.com/payara/Payara Payara Web Site http://www.payara.fish
  5. 5. What is a Microservice? In computing, microservices is a software architecture style in which complex applications are composed of small, independent processes communicating with each other using language-agnostic APIs. Wikipedia
  6. 6. What is a Microservice? The term "Microservice Architecture" has sprung up over the last few years to describe a particular way of designing software applications as suites of independently deployable services. While there is no precise definition of this architectural style, there are certain common characteristics around organization around business capability, automated deployment, intelligence in the endpoints, and decentralized control of languages and data. Martin Fowler
  7. 7. Why Java EE and not ######? • Java EE is incredibly lightweight • Rapid to develop • Majority of alternative Java frameworks based on Java EE • Concentrate on building business functionality • Produces small skinny wars • Versioned runtime – aids operations
  8. 8. Let’s Build a Micro-service! • JAX-RS – JSON-Cache • Use JCache apis • Key – Value Store • PUT puts JSON to a Key • GET gets JSON from a Key
  9. 9. Coding Interlude
  10. 10. JCache • Standard Java API for Caching • JSR107 • API and CDI binding • Supported by Many Cache Providers • Built in to Payara • Uses Hazelcast • Hazelcast JCache can be added to other JavaEE runtimes
  11. 11. JCache CDI • @CacheResult • Caches the result of a method call • @CachePut • Cache a specific method parameter • @CacheRemove • Removes a cache entry based on parameters • @CacheRemoveAll • Removes all entries in the cache
  12. 12. Coding Interlude
  13. 13. Skinny WAR • JAX-RS – 5Kb in Size • No messing with Maven • Tooling is great • Only contains what you Need! • No need to assemble a Runtime • Use a well known Versioned Runtime • Aids Operations • You don’t have to test it
  14. 14. What is Payara Micro • Small Footprint Based from GlassFish Runtime (60Mb) • Used GlassFish’s Java EE Web Profile Support • Embeds JCache Support • Auto clusters using Hazelcast • Fully Embeddable API – (Fat Jar anybody) • Designed for microservices (Easily deployable) • Designed for Cloud (Elastic) java –jar payara-micro.jar –deploy test.war
  15. 15. Demonstration Interlude
  16. 16. What is Docker? Docker containers wrap up a piece of software in a complete filesystem that contains everything it needs to run: code, runtime, system tools, system libraries – anything you can install on a server. This guarantees that it will always run the same, regardless of the environment it is running in. Docker Website
  17. 17. Docker Layers Described by Dockerfile
  18. 18. Deploy Image to Production Pull from Repository Push to Repository Test Image Create Docker Image Package WAR Unit Test Essentially What Does this Mean Standardised OS Image runs on many environments Aids Continuous Delivery Pipeline
  19. 19. Coding Interlude
  20. 20. What we’ve just done! Deploy Image to Production Pull from Repository Push to Repository Test Image Create Docker Image
  21. 21. What is Elastic Beanstalk With Elastic Beanstalk, you can quickly deploy and manage applications in the AWS cloud without worrying about the infrastructure that runs those applications. AWS Elastic Beanstalk reduces management complexity without restricting choice or control. You simply upload your application, and Elastic Beanstalk automatically handles the details of capacity provisioning, load balancing, scaling, and application health monitoring. Amazon
  22. 22. Simple Elastic Beanstalk Architecture Internet Elastic Load Balancer Docker Container Docker Container Docker Container Docker Container Monitors Health Auto-spins up containers
  23. 23. Coding Interlude
  24. 24. What we’ve just done! Deploy Image to Production Pull from Repository Push to Repository Test Image Create Docker Image
  25. 25. Summary • Create Skinny WAR • Use Micro Java EE runtime • Package in Docker • Run in Production
  26. 26. More Information and Code Docker File Example https://github.com/smillidge/JavaOne-Docker-Example REST Payara JCache Example Code https://github.com/payara/Payara-Examples/tree/master/rest-examples/rest- jcache Payara Micro Docker Image (Just Add WAR) https://hub.docker.com/r/payaradocker/j1-payara-micro/ Payara GitHub Project https://github.com/payara/Payara Payara Web Site http://www.payara.fish
  27. 27. Questions

×