•Large web projects (monoliths) • lots of Maven modules • Single project with many application deploys •Java & Spring •Typical layered architecture • data –services – business – controllers
•Large web projects (monoliths) • lots of Maven modules • Single project with many application deploys •Java & Spring •Typical layered architecture • data –services – business – controllers •Custom shared libraries
•Large web projects (monoliths) • lots of Maven modules • Single project with many application deploys •Java & Spring •Typical layered architecture • data –services – business – controllers •Custom shared libraries But: no easy way to share functional features.
define and package these modules: • Pluggable: on or off (not: hot-pluggable!) • Providing full functionality and self installing • Limited configuration overhead vs simple app (productivity!)
define and package these modules: • Pluggable: on or off (not: hot-pluggable!) • Providing full functionality and self installing • Limited configuration overhead vs simple app (productivity!) • Stick to the Spring eco-system
define and package these modules: • Pluggable: on or off (not: hot-pluggable!) • Providing full functionality and self installing • Limited configuration overhead vs simple app (productivity!) • Stick to the Spring eco-system • Be able to migrate legacy applications easily
define and package these modules: • Pluggable: on or off (not: hot-pluggable!) • Providing full functionality and self installing • Limited configuration overhead vs simple app (productivity!) • Stick to the Spring eco-system • Be able to migrate legacy applications easily OSGi?
define and package these modules: • Pluggable: on or off (not: hot-pluggable!) • Providing full functionality and self installing • Limited configuration overhead vs simple app (productivity!) • Stick to the Spring eco-system • Be able to migrate legacy applications easily OSGi? Not a real use case for us + hard to transform legacy
modules: • Their configuration, services they provide • The dependencies between modules • Ways that modules can communicate with each other • How they can install/migrate themselves
modules: • Their configuration, services they provide • The dependencies between modules • Ways that modules can communicate with each other • How they can install/migrate themselves • How to bundle and load resources
modules: • Their configuration, services they provide • The dependencies between modules • Ways that modules can communicate with each other • How they can install/migrate themselves • How to bundle and load resources 100% built on top of Spring framework (& nowadays Spring Boot)
they need executing •Destroyed after execution •Versioned, tracked and synchronized • requires a SQL database • distributed locking mechanism for simultaneous deploys •Bound to a bootstrap phase
simple web UI exposing information about the Across context. Allows other modules to plug into the UI. LoggingModule Sets up common logging features like request logging and comes with debug controllers to control the logging at runtime
basic administration UI infrastructure for other modules to plug into. • SpringSecurityModule • Allows extending spring security configuration from modules.
User and permissions management domain model. Including the security model and management UI. EntityModule Infrastructure to (automatically) build UI for entities managed by Spring Data repositories.