Microservices for the Masses with Spring Boot and JHipster - Seattle JUG 2018

Microservices for the Masses with Spring Boot and JHipster - Seattle 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.

You'll learn how to 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!

Tutorials demoed:

* Build a Microservices Architecture for Microbrews with Spring Boot
* Develop a Microservices Architecture with OAuth 2.0 and JHipster
* Deploy JHipster to Google Cloud with Kubernetes
* Use Ionic for JHipster to Create Mobile Apps with OIDC Authentication


Matt Raible

March 20, 2018


  1. Microservices for the Masses with Spring Boot and JHipster March

    20, 2018 + = Matt Raible | @mraible Photo by Analise Zocher https://www.flickr.com/photos/analisezocher/34929403653
  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! 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: jhipster heroku For microservices: Deploy JHipster Registry Build

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

    and deploy microservice Build and deploy gateway http://www.jhipster.tech/cloudfoundry/
  36. 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 $ 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 the Ionic Module for JHipster, using npm: npm install -g ionic generator-jhipster-ionic Profit!
  44. Create an app: ignite new myapp --boilerplate ignite-jhipster Ignite JHipster

    https://github.com/ruddell/ignite-jhipster Install Create React Native App and Ignite CLI, using npm: npm install -g create-react-native-app ignite-cli Ignite! A React Native boilerplate for JHipster apps
  45. 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
  46. Part 5 JHipster Roadmap What You Learned What’s Next for

  47. What You Learned

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

    Boot 2 Support Blueprint Support React Support
  49. 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
  50. Demo Create a React project with JHipster

  51. 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
  52. Learn More stackoverflow.com Spring Boot spring.io/guides JHipster www.jhipster.tech Okta APIs

  53. developer.okta.com/blog

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