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.

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


Published on

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:

Published in: Software

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

  1. 1. Microservices for the Masses with Spring Boot and JHipster March 20, 2018 + = Matt Raible | @mraible Photo by Analise Zocher
  2. 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. 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. 4. Microservices Visionaries
  5. 5. “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
  6. 6. “Do one thing and do it well.”
  7. 7. The Future?
  8. 8. “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
  9. 9.
  10. 10. Microservices with Spring Boot
  11. 11. Demo Using, 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 boot-microservices-example
  12. 12. Microservices with JHipster What is JHipster? Installing and Using JHipster JHipster’s Microservice Features Progressive Web Applications Overview Part 2
  13. 13. What is JHipster? + =
  14. 14. 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
  15. 15. 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
  16. 16.
  17. 17. 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 54 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
  18. 18. Monolith Examples JHipster 4 Demo 21-Points Health
  19. 19. Progressive Web Apps Originate from a secure origin, load while offline, and reference a web app manifest.
  20. 20. Progressive Web Apps Can be installed on your mobile device, look and act like a native application, but are distributed through the web.
  21. 21. Progressive Web Apps Are fast!
  22. 22. “We’ve failed on mobile.” Alex Russell
  23. 23. 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
  24. 24. 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
  25. 25.
  26. 26. 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 jhipster-microservices-oauth-example
  27. 27. Part 3 Deploy to the Cloud Options for Deploying JHipster Heroku Cloud Foundry AWS Google Cloud
  28. 28. For monoliths: jhipster heroku For microservices: Deploy JHipster Registry Build and deploy microservice Build and deploy gateway
  29. 29. For monoliths: jhipster cloudfoundry For microservices: Deploy JHipster Registry Build and deploy microservice Build and deploy gateway
  30. 30. jhipster aws Uses Elastic Beanstalk Boxfuse Future pull/7035
  31. 31. $ mvn package -Pprod dockerfile:build $ jhipster kubernetes $ kubectl apply -f <app-name> develop-microservices-with-jhipster
  32. 32. Demo Build Your JHipster App for Production Deploy with Kubernetes and Minikube Deploy to Google Cloud jhipster-microservices-example
  33. 33. Part 4 Developing Mobile Apps with JHipster What is Ionic? Why? Ionic Module for JHipster JWT and OIDC Support Entity Generator
  34. 34. Ionic Ionic Framework Develop Hybrid & PWA Apps Stencil Vanilla Web Components PWA Toolkit Lightning fast PWAs team/ionic-pwa-toolkit
  35. 35. 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).
  36. 36. How is a mobile app for JHipster different from its Angular UI?
  37. 37. Run it! yo jhipster-ionic Ionic Module for JHipster Because Ionic Apps need some JHipster 💙 too! Install Ionic and the Ionic Module for JHipster, using npm: npm install -g ionic generator-jhipster-ionic Profit! 🤑
  38. 38. Create an app: ignite new myapp --boilerplate ignite-jhipster 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
  39. 39. Demo Create an Ionic app for JHipster Generate entities that exist on gateway Deploy to emulator Deploy to phone okta-ionic-jhipster-example
  40. 40. Part 5 JHipster Roadmap What You Learned What’s Next for JHipster
  41. 41. What You Learned
  42. 42. What’s Next for JHipster? 💥 JHipster v5.0 Spring 2018 start.jhipster.techSpring Boot 2 Support Blueprint Support React Support
  43. 43. 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!
  44. 44. Demo Create a React project with JHipster
  45. 45. The JHipster Mini-Book
 Written with Asciidoctor Quick and to the point, 130 pages Developed a Real World App: Free Download from InfoQ:
  46. 46. Learn More Spring Boot JHipster Okta APIs
  47. 47.
  48. 48. Thanks! Keep in Touch @mraible Presentations Code