Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG 2018

72a2082c6a4dd79ad68befb3db911616?s=47 Matt Raible
February 15, 2018

Microservices for the Masses with Spring Boot, JHipster, and OAuth - Utah JUG 2018

Microservices are all the rage and being deployed by many Java Hipsters. If you’re working with a large team that needs different release cycles for product components, microservices can be a blessing. If you’re working at your VW Restoration Shop and running its online store with your own software, having five services to manage and deploy can be a real pain.

Share your knowledge and experience about microservices in this informative and code-heavy talk. We’ll use JHipster (a Yeoman generator) to create Angular + Spring Boot apps on separate instances with a unified front-end. I’ll also show you options for securing your API gateway and individual applications using JWT. Heroku, Kubernetes, Docker, ELK, Spring Cloud, Okta; there will be plenty of interesting demos to see!


Matt Raible

February 15, 2018


  1. Matt Raible | @mraible Microservices for the Masses with Spring

    Boot, JHipster, and OAuth February 15, 2018
  2. Agenda 1. Introduction to Microservices 2. Microservices with JHipster 3.

    Deploy to the Cloud 4. Developing Mobile Apps with JHipster 5. JHipster Roadmap
  3. Part 1 Introduction to Microservices History of Microservices Microservices Architecture

    Philosophy Why Microservices? Demo: A Microservices Architecture with Spring Boot and Spring Cloud
  4. None
  5. Microservices Visionaries

  6. None
  7. “Any organization that designs a system (defined broadly) will produce

    a design whose structure is a copy of the organization's communication structure.” Conway’s Law Melvin Conway 1967
  8. “Do one thing and do it well.”

  9. The Future?

  10. “You shouldn't start with a microservices architecture. Instead begin with

    a monolith, keep it modular, and split it into microservices once the monolith becomes a problem.” Martin Fowler March 2014
  11. None
  12. None
  13. None
  14. start.spring.io

  15. None
  16. Microservices with Spring Boot https://developer.okta.com/blog/2017/06/15/build-microservices-architecture-spring-boot

  17. Demo Using start.spring.io, create: A service registry A gateway A

    catalog service Create an endpoint in the catalog service Create a filtered endpoint in the gateway Show failover capabilities Show Spring Security OAuth https://github.com/oktadeveloper/spring- boot-microservices-example
  18. Microservices with JHipster What is JHipster? Installing and Using JHipster

    JHipster’s Microservice Features Progressive Web Applications Overview Part 2
  19. What is JHipster? + =

  20. A powerful workflow to build your application with Yeoman, Webpack/

    Gulp and Maven/Gradle JHipster Goals A sleek, modern, mobile-first front- end with Angular and Bootstrap A high-performance and robust Java stack on the server side with Spring Boot A robust microservice architecture with JHipster Registry, Netflix OSS, Elastic Stack, and Docker
  21. How to Use JHipster Install JHipster and Yeoman, using npm:

    npm install -g yo generator-jhipster Create a directory and cd into it: mkdir newapp && cd newapp Run it! yo jhipster
  22. http://www.jhipster.tech/microservices-architecture/

  23. Validate ID Token Token Endpoint Authorization Endpoint /.well-known/
 openid-configuration JWKS

    Endpoint UserInfo Endpoint OAuth 2.0 Authorization Server & OpenID Connect Provider (OP) OAuth 2.0 Resource Server Client (Relying Party) 1 3 2 5 4 1 Discover OpenID Provider Metadata 2 Perform OAuth flow to obtain a ID token and/or access token 3 Get JSON Web Key Set (JWKS) for signature keys 4 Validate ID token
 (JSON Web Token) 5 Get additional user attributes with access token from UserInfo endpoint OAuth 2.0 and OIDC
  24. Monolith Examples JHipster 4 Demo https://github.com/mraible/jhipster4-demo https://www.youtube.com/watch?v=XRREt1KB4Y8 21-Points Health https://github.com/mraible/21-points

  25. Progressive Web Apps Originate from a secure origin, load while

    offline, and reference a web app manifest.
  26. Progressive Web Apps Can be installed on your mobile device,

    look and act like a native application, but are distributed through the web.
  27. Progressive Web Apps Are fast!

  28. “We’ve failed on mobile.” Alex Russell https://youtu.be/K1SFnrf4jZo

  29. Use your browser’s network & CPU throttling Mobile Hates You!

    Get a ~$150-200 unlocked Android (e.g. Moto G4) Implement the PRPL pattern Test with Lighthouse
  30. Lazy-load and create remaining routes on demand The PRPL Pattern

    Render initial route Push critical resources for the initial URL route Pre-cache remaining routes
  31. https://developer.okta.com/blog/2017/07/20/the-ultimate-guide-to-progressive-web-applications

  32. Demo Download and start JHipster Registry Using JHipster, create: A

    gateway A store microservices app A blog microservices app Generate entities in apps and on gateway Convert gateway to be a PWA Run everything in Docker https://github.com/oktadeveloper/jhipster- microservices-example
  33. Part 3 Deploy to the Cloud Options for Deploying JHipster

    Heroku Cloud Foundry AWS Google Cloud
  34. For monoliths: yo jhipster:heroku For microservices: Deploy JHipster Registry Build

    and deploy microservice Build and deploy gateway http://bit.ly/heroku-jhipster-microservices
  35. For monoliths: yo jhipster:cloudfoundry For microservices: Deploy JHipster Registry Build

    and deploy microservice Build and deploy gateway http://www.jhipster.tech/cloudfoundry/
  36. yo jhipster:aws Uses Elastic Beanstalk http://www.jhipster.tech/aws/ Boxfuse http://www.jhipster.tech/boxfuse/ Future https://github.com/jhipster/generator-jhipster/

  37. $ mvn package -Pprod dockerfile:build $ yo jhipster:kubernetes $ kubectl

    apply -f <app-name> https://developer.okta.com/blog/2017/06/20/ develop-microservices-with-jhipster
  38. Demo Build Your JHipster App for Production Deploy with Kubernetes

    and Minikube Deploy to Google Cloud https://github.com/oktadeveloper/ jhipster-microservices-example
  39. Part 4 Developing Mobile Apps with JHipster What is Ionic?

    Why? Ionic Module for JHipster JWT and OIDC Support Entity Generator
  40. Ionic Ionic Framework Develop Hybrid & PWA Apps https://ionicframework.com Stencil

    Vanilla Web Components https://stenciljs.com PWA Toolkit Lightning fast PWAs https://github.com/ionic- team/ionic-pwa-toolkit
  41. Why? The first version of 21-Points Health I wrote with

    JHipster 2.x was painful to use on a mobile device. The 4.x version is better, but still not great. I want to develop the best user experience. Native apps are painful to distribute, but work better than PWAs (on iOS).
  42. How is a mobile app for JHipster different from its

    Angular UI?
  43. Run it! yo jhipster-ionic Ionic Module for JHipster Because Ionic

    Apps need some JHipster too! https://github.com/oktadeveloper/ionic-jhipster-starter Install Ionic and Ionic Module, using npm: npm install -g yo generator-jhipster Profit!
  44. Demo Create an Ionic app for JHipster Generate entities that

    exist on gateway Deploy to emulator Deploy to phone https://github.com/oktadeveloper/ okta-ionic-jhipster-example
  45. Part 5 JHipster Roadmap What You Learned What’s Next for

  46. What You Learned

  47. What’s Next for JHipster? JHipster v5.0 Spring 2018 start.jhipster.tech Spring

    Boot 2 Support Blueprint Support React Support
  48. JHipster Conf JHipster Conf is the first conference on JHipster,

    the most widely-used Java application generator in the world. The conference will be 100% in English! https://jhipster-conf.github.io
  49. Demo Create a React project with JHipster

  50. The JHipster Mini-Book
 Written with Asciidoctor Quick and to

    the point, 130 pages Developed a Real World App: www.21-points.com Free Download from InfoQ: infoq.com/minibooks/jhipster-mini-book
  51. Learn More stackoverflow.com Spring Boot spring.io/guides JHipster www.jhipster.tech Okta APIs

  52. Thanks! Keep in Touch raibledesigns.com @mraible Presentations speakerdeck.com/mraible Code github.com/oktadeveloper