Keycloak Architercture Part1 - Updated

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 7

Design Principles: Modularity


Set of tightly coupled modules

Separated by functionality/responsibility

Deployed as a set of jars

Dynamically loaded at boot time
Design Principles: Extensibility

The Open-Closed Principle (OCP):


“ the behavior of a software artifact ought to
be extensible, without having to modify
that artifact “

Chapter 8, page 70
Design Principles: Extensibility


heavy usage of ServiceLoader


Usage of interfaces/contracts rather than
implementations
Common Design patterns: AbstractFactory

*ProviderFactory<*Provider> extend ProviderFactory<T extends


Provider>
*Provider extend Provider
Common Design patterns: AbstractFactory
“Provide an interface for creating families of related or dependent objects without
specifying their concrete classes”

Use Cases:

• a system should be independent of how its products are created, Chapter 3, page 77
composed,
and represented.
• a system should be configured with one of multiple families of products.
• you want to provide a class library of products, and you want to reveal
just their interfaces, not their implementations.
Tech stack
Jakarta EE (formerly JAVA EE):

JAX-RS => RESTEasy

JPA => Hibernate

JTA

….
Liquibase
Freemarker
React + Patternfly design system
Quarkus (or Wildfly for versions < 18)

You might also like