This project is an implementation of the GURPS 4th Edition rules using an idea from Modular Monoliths where implementation of components live in their own package, exporting a single public interface. The reason I’ve created this project is because I’ve worked on systems that started small, became very successful and became painful to maintain as they grew. One was successfully rewritten but many failed the same exercise. What I want to understand is how to create a monolith that is easier to tease apart into microservices when the time comes. GURPS is my proxy for a product manager and is a domain I find interesting.
-
all code in a singular project, built by Maven
-
features are used to define boundaries
-
each boundary lives in its own Maven module, generating a library
-
inter-feature communication is done entirely via messaging (Event messages)
-
state change requests done via Command messages
-
each boundary has its own logical datastore (schema, tenancy, etc.)
-
leverage Spring projects, reducing the amount of code to be written
-
leverage new features of Spring 3 release, observability, etc.
-
Kotlin in production code
-
Java 17 in test code
-
./mvnw -DskipTests --batch-mode --update-snapshots --errors clean package spring-boot:build-image
-
./mvnw -DskipTests --batch-mode --update-snapshots --errors clean install
-
./mvnw -pl gurps-online spring-boot:run
-
Inbound channel adapters are used for one-way integration to bring data into the messaging application.
-
Outbound channel adapters are used for one-way integration to send data out of the messaging application.
-
Inbound gateways are used for a bidirectional integration flow, where some other system invokes the messaging application and receives a reply.
-
Outbound Gateways are used for a bidirectional integration flow, where the messaging application invokes some external service or entity and expects a result.
-
This project is licensed under the Apache License Version 2.0, January 2004.
-
The guidebook structure was created by Simon Brown as part of his work on the C4 Architectural Model. His books can be purchased from LeanPub.
-
Learn how to build Cloud Native applications using Spring Boot and Kubernetes
-
ZeroMQ and RabbitMQ Messaging for agility and scalability Allen Holub HD