Remember the choose your own adventure books that you used to read as a kid? This session is a reincarnation of a choose your own adventure book as a conference talk!
You'll learn about Spring Boot, Docker, and Kubernetes in this talk, along with the choices you make in the following areas:
* What kind of application architecture to build? Monolith or microservices?
* Would you like to use Java or Kotlin?
* MySQL, PostgreSQL, or MongoDB?
* Spring MVC or Spring WebFlux?
* Angular, React, or Vue.js?
* PWA or mobile app?
* Istio with Kubernetes or Kubernetes without Istio?
GitHub repos of demos:
* Monolith: https://github.com/mraible/healthy-hipster
* Microservices: https://github.com/mraible/djug-microservices
6. Who is Ray Tsang?
Developer Advocate at Google Cloud
Kubernetes Enthusiast
JHipster Committer
Backpacker, snowboarder, photographer
@saturnism on Twitter
7. Who is Matt Raible?
Developer Advocate at Okta
Web Framework Enthusiast
JHipster Committer
Skier, rafter, classic VW fan
@mraible on Twitter
8. JHipster Gives You Lots of Options
Spring Boot
Spring Security
SQL or NoSQL
Maven or Gradle
Bootstrap
Angular, React, or Vue
End-to-End Tests
Performance Tests
26,000+ options https://arxiv.org/abs/1710.07980
15. Monolith vs. Microservice Architecture
Monolith Microservices
Pro Single app to manage
Single CI/CD pipeline
Low latency between calls
Low coupling
Faster build / deploy cycle per service
Easier to scale out individual services
Con Slow build / deploy cycle
High coupling
Harder to scale out
Multiple apps to manage
Multiple CI/CD pipeline
Multiple EVERYTHING!
High latency and issues between calls
Proper service boundary
18. Unpopular Opinion
"Monoliths are the future because the problem people are trying to solve with
microservices doesn’t really line up with reality."
https://changelog.com/posts/monoliths-are-the-future
28. What do you want to build?
Monoliths
21 Points Health
Blog
Bug Tracker
Microservices
Online Store
Blog + Store
https://github.com/jhipster/jdl-samples
41. Kubernetes
Created by Google in 2014
Based on learnings from Google's internal orchestration tool
Manages deployment of containers across a cluster of machines
Currently managed by Cloud Native Foundation
Single deployment target, multiple cloud/on-prem environments
42. Kubernetes
You've chosen the path to become a
YAML developer...
Everything will be YAML from here on!
Don't fear. JHipster will generate all the
YAMLs for you!
43. With Istio or Without?
• Kubernetes manages deployment of applications
• Istio manages the services to service communication
• Retries
• Traces
• Monitoring
• L7 Routing
• L7 Load Balancing (internal and external)
• mTLS
• Out of the box Observability with Jaeger, Kiali, Prometheus, Grafana
44. Kubernetes to the Cloud!
Run Kubernetes sub-generator
Deploy to GKE on GCP
Have a look 👀 at K9s
Who let the pods out?!?
https://github.com/derailed/k9s
45. Additional Configuration for OAuth 2.0
JHipster uses Keycloak by default
Configuration is not auto-generated for Kubernetes
Remember to configure Issuer, Client ID, and Client Secret
46. Load Balancer, NodePort, or Ingress...
JHipster Gateway has 2 functionalities
• The frontend code
• Routing ("/service/blog/api" → Blog Service)
• Has Retries
• But 1 extra hop
Kubernetes has built-in URL mapping via Ingress
• No retries
47. The End
You survived today's encounter with YAML, and
the paradox of choice.
Take the JHipster adventure, and good luck!
Congratulations!