• Stars
    star
    242
  • Rank 167,048 (Top 4 %)
  • Language
    Java
  • License
    Apache License 2.0
  • Created about 7 years ago
  • Updated almost 3 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Sample projects for my talk "Refactoring to a System of Systems"

Refactoring to a System of Systems

NOTE: This is currently highly work in progress. Be sure to check out every now and then for more detailed information and explanations about the individual modules.

This repository contains some sample code for my talk "Refactoring to a System of Systems" that outlines what problems developers can run into if they split up a system into multiple ones but transfer interaction patterns of typical monolithic applications as is. Slides of that talk and a recording of it will be linked here as soon as they become available.

The repository contains five different projects, each of them potentially split into multiple ones in turn. For details on the individual ones, please refer to the READMEs conatined in the individual project's root.

Context

The sample application is built around an e-commerce domain with the following Bounded Contexts:

  • Catalog - containing product master data (in our case product name and price).
  • Inventory - keeping track of the number of available items per product.
  • Order - keeping track of orders placed by customers.

Domain

The individual modules provide sketch implementations of these Bounded Context and the following interactions between them implemented:

  1. When a product is added, the inventory needs to register empty stock for that product.
  2. When an order is completed, the inventory needs to update the stock for the products ordered.

Modules

  • The Monolith - a typical monolithic Spring Boot application with the Bounded Contexts implemented in packages and the interaction being based on active invocations of Spring beans residing in a different BC.
  • The Microlith - the former approach transferred into separate systems but keeping the same interaction patter of synchronous, non-idempotent operations. The systems invoking each other via HTTP calls.
  • The Modulith - an improved version of the monolith with the Bounded Contexts interacting via Spring application events and event listeners.
  • SOS Messaging - the individual Bounded Contexts implemented as separate systems and the interaction implemented via a Kafka message broker.
  • SOS REST - the individual Bounded Contexts implemented as separate systems and the interaction implemented via the events exposed as REST resources.

Project structure

Build

The repository should build by simply running ./mvnw clean install using a recent JDK 8. Sample code uses Lombok, which means that you need a Lombok-enabled IDE in case you want to import the projects into it. For detailed instructions about how to work with the individual projects, see the individual module's READMEs.

More Repositories

1

spring-restbucks

Implementation of the sample from REST in Practice based on Spring projects
Java
1,231
star
2

rest-microservices

Sample for Spring Boot based REST microservices
Java
191
star
3

repositories-deepdive

Sample code for the Spring Data JPA repositories deep dive talk
Java
166
star
4

spring-domain-events

This has been moved to Moduliths –https://github.com/odrotbohm/moduliths.
Java
100
star
5

spring-playground

A collection of tiny helpers for building Spring applications
Java
97
star
6

arch-evident-spring

Java
85
star
7

whoops-architecture

Sample code for my talk "Whoops! Where did my architecture go?"
Java
76
star
8

lectures

Lecture scripts and slides I use during the Software Engineering course at TU Dresden
Java
68
star
9

spring-modulith-deep-dive

Sample code for the Spring Modulith Deep Dive workshop / training
Java
52
star
10

ninjector

Ninjector - the cure for Field Injection Anxiety
Java
42
star
11

spring-events-deep-dive

Sample code for my talk "A Deep Dive into Spring Application Events".
Java
40
star
12

spring-rest

Sample project for Spring 3 REST style web application
Java
30
star
13

tactical-ddd-workshop

Sample code for my Tactical DDD with Java workshop
Java
26
star
14

spring-hateoas-sample

Sample project to show Spring HATEOAS in action
Java
24
star
15

spring-five-functional-reactive

Java
20
star
16

spring-restbucks-training

Spring RESTBucks - Training
Java
17
star
17

mawspring

Modulithic Applications with Spring
Java
15
star
18

jddd-legacy

Java
10
star
19

spring-record-support

Spring extension to make JDK 14's records work OOTB with Spring libraries
Java
7
star
20

hades-showcase

Sample project to show how Hades eases JPA repository implementation.
Java
7
star
21

shop-modulith

Sample code for the presentation at betterCode() Spring
Java
7
star
22

spring-examples

Canonical samples to showcase features of dedicated Spring versions
Java
6
star
23

spring4-guided-tour

Sample code for new features in Spring 4
Java
5
star
24

maws

Sample code for Modulithic Applications with Spring
Java
5
star
25

klient

A hypermedia client API written in Kotlin
Kotlin
5
star
26

spring-jmx-namespace

JMX utility Spring namespace
Java
3
star
27

Spring-Webflow-Tag-Library

Spring Webflow tag library
Java
2
star
28

spring-tx-events

Spring transaction bound application events
Java
2
star
29

odrotbohm.github.com

Website (Production)
HTML
2
star
30

spring-boot-devtools-sample

Java
2
star
31

spring-samples

Various sample scenarios to illustrate Spring goodness
Java
2
star
32

hibernate-criteria-statistics

Sample projects on how to enable Criteria statistics in Hibernate with AspectJ until HHH-3452 gets fixed
Java
1
star
33

hibernate-bugs

Java
1
star
34

asciidoctor-pdf-example

1
star
35

spring-data-release-cli

Simple shell to execute Spring Data releases
Java
1
star
36

reactive-4te

Java
1
star
37

spring-modulith-accelerator

Java
1
star
38

pv-charger

Java
1
star
39

asciidoctor-pdf-sample

Shell
1
star
40

datanucleus-test

Java
1
star
41

scs-workshop

Self-contained systems workshop
1
star