Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Micro Frontends for Java Microservices - SF JUG...

Matt Raible
November 30, 2023

Micro Frontends for Java Microservices - SF JUG 2023

You've figured out how to split up your backend services into microservices and scale your teams to the moon, right?

But what about the front end? Are you still building monoliths for your UI?

If so, you might want to check out micro frontends—basically extensions to the microservices pattern, where the concept is extended to the front end.

Find out how to package and deploy your microservices and their UIs in the same artifact and make it possible to test and develop them independently.

In this live session, Matt will show you how to build a microservices and micro frontends architecture using React, Spring Boot, and Spring Cloud.

YouTube Livestream: https://www.youtube.com/watch?v=hSgz2lL8Dv8
Related blog post: https://auth0.com/blog/micro-frontends-for-java-microservices
GitHub repo: https://github.com/oktadev/auth0-micro-frontends-jhipster-example
Demo script: @oktadev/auth0-micro-frontends-jhipster-example/blob/main/demo.adoc

Matt Raible

November 30, 2023
Tweet

More Decks by Matt Raible

Other Decks in Technology

Transcript

  1. Micro Frontends for Java Microservices November 30, 2023 Matt Raible

    | @mraible Photo by Umer Sayyam https://unsplash.com/photos/golden-gate-bridge-usa-SHP1t8EduMY
  2. @mraible Hi, I’m Matt Raible Father, Husband, Skier, Mountain Biker,

    Whitewater Rafter Bus Lover Web Developer and Java Champion Okta Developer Advocate Blogger on raibledesigns.com and auth0.com/blog @mraible
  3. Agenda A brief history of microservices Microservices with Java Microservices

    with JHipster Introduction to Micro Frontends Live Demo Securing microservices with OAuth 2.1 Action!
  4. “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
  5. Spring History of Spring October 2002 - Rod Johnson writes

    J2EE Design & Development 2004 - Spring 1.0 2006 - Spring 2.0 with better XML 2009 - JavaConfig 2014 - Spring Boot 1.0 2015 - Spring Cloud 1.0 🍃
  6. Spring MVC Code @PostMapping("/points") public ResponseEntity<Points> createPoints(@Valid @RequestBody Points points)

    throws URISyntaxException { log.debug("REST request to save Points : {}", points); if (points.getId() != null) { throw new BadRequestAlertException("A new points cannot already have an ID", ENTITY_NAME, "idexists"); } Points result = pointsRepository.save(points); pointsSearchRepository.save(result); return ResponseEntity .created(new URI("/api/points/" + result.getId())) .headers(HeaderUtil.createEntityCreationAlert( applicationName, true, ENTITY_NAME, result.getId().toString())) .body(result); }
  7. Spring WebFlux Code @PostMapping("/points") public Mono<ResponseEntity<Points>> createPoints(@Valid @RequestBody Points points)

    throws URISyntaxException { log.debug("REST request to save Points : {}", points); if (points.getId() != null) { throw new BadRequestAlertException("A new points cannot already have an ID", ENTITY_NAME, "idexists"); } return pointsRepository .save(points) .flatMap(pointsSearchRepository::save) .map( result -> { try { return ResponseEntity .created(new URI("/api/points/" + result.getId())) .headers(HeaderUtil.createEntityCreationAlert( applicationName, true, ENTITY_NAME, result.getId().toString())) .body(result); } catch (URISyntaxException e) { throw new RuntimeException(e); } } ); }
  8. Thriving OSS Project Started by Julien Dubois on October 21,

    2013 App Generator, Platform, Learning Tool …
  9. How to Use JHipster Install JHipster using npm: npm install

    -g generator-jhipster Create a directory and cd into it: take app Run it! jhipster
  10. Monolith, Gateway, or Microservices? Spring MVC or Spring WebFlux? Authentication

    Type? Database Type? Build Tool? Web Framework? JHipster Options
  11. Demo Create apps with JDL Run apps and e2e tests

    Run everything with Docker Switch identity providers @oktadev/auth0-micro-frontends- jhipster-example 🤓
  12. Improvements in OAuth 2.1 PKCE is required for all clients

    using the authorization code flow Redirect URIs must be compared using exact string matching The Implicit grant is omitted from this specification The Resource Owner Password Credentials grant is omitted from this specification Bearer token usage omits the use of bearer tokens in the query string of URIs Refresh tokens for public clients must either be sender-constrained or one-time use
  13. yelp.com/callback Back to redirect URI with authorization code Exchange code

    for access token and ID token accounts.google.com Email ********** Go to authorization server Redirect URI: yelp.com/cb Scope: openid profile Authorization Server yelp.com Connect with Google Resource owner Client accounts.google.com Allow Yelp to access your public profile and contacts? No Yes Request consent from resource owner Hello Matt! accounts.google Get user info with access token /userinfo OAuth 2.1 and OIDC
  14. Relay an access token in Spring Cloud Gateway spring: cloud:

    gateway: default-filters: - TokenRelay
  15. The JHipster Mini-Book Written with Asciidoctor Free download from InfoQ:

    infoq.com/minibooks/jhipster-mini-book Quick and to the point, 158 pages Developed a real-world app: www.21-points.com Buy for $20 or download for FREE
  16. The Angular Mini-Book Written with Asciidoctor Free download from InfoQ:

    infoq.com/minibooks/angular-mini-book Angular 15 and Spring Boot 3.0 Angular Material, Bootstrap, Kotlin Spring Security and best practices Deploy separate apps and a single artifact