/software-architecture-the-hard-parts

Working cod to showcase the different architecture patterns

Primary LanguageKotlinApache License 2.0Apache-2.0

Overview

This project are simple implementations of the eight transaction saga pattern described in Software Architecture: The Hard Parts. I’ve done this to help me better understand the trade-offs of each type. You’ll find a branch for each implementation, where the branch name mirrors the pattern name, e.g. phone-tag.

Pattern Name Communication Consistency Coordination

Branch Name

Epic Saga

Synchronous

Atomic

Orchestrated

epic-saga

Phone Tag Saga

Synchronous

Atomic

Choreographed

phone-tag-saga

Fairy Tale Saga

Synchronous

Eventual

Orchestrated

fairy-tale-saga

Time Travel Saga

Synchronous

Eventual

Choreographed

time-travel-saga

Fantasy Fiction Saga

Asynchronous

Atomic

Orchestrated

fantasy-fiction-saga

Horror Story Saga

Asynchronous

Atomic

Choreographed

horror-story-saga

Parallel Saga

Asynchronous

Eventual

Orchestrated

parallel-saga

Anthology Saga

Asynchronous

Eventual

Choreographed

Architectural Style Architectural Family

Layered

Monolithic

Pipeline

Monolithic

Microkernel

Monolithic

Service-base

Distributed

Event-driven

Distributed

Space-based

Distributed

Service-oriented

Distributed

Microservices

Distributed

Prerequisites

  • JDK 21 or greater

Building

  • ./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

Installation

Tips and Tricks

  • order placement service

  • payment service

  • fulfillment service

  • email service

Architectural Diagrams

``

Guidebook

Specification By Example

The Cucumber tests are…​

Troubleshooting

Contributing

License and Credits