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: https://developer.okta.com/blog/2017/06/15/build-microservices-architecture-spring-boot
* Develop a Microservices Architecture with OAuth 2.0 and JHipster: https://developer.okta.com/blog/2018/03/01/develop-microservices-jhipster-oauth
* Deploy JHipster to Google Cloud with Kubernetes: https://developer.okta.com/blog/2017/06/20/develop-microservices-with-jhipster#deploy-to-google-cloud
* Use Ionic for JHipster to Create Mobile Apps with OIDC Authentication: https://developer.okta.com/blog/2018/01/30/jhipster-ionic-with-oidc-authentication
Microservices for the Masses with Spring Boot and JHipster - Seattle JUG 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
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
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
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
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
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
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
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
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/okta-
jhipster-microservices-oauth-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/
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
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 JHipster
48. What’s Next for JHipster?
💥 JHipster v5.0
Spring 2018
start.jhipster.techSpring 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
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