Code Monkey home page Code Monkey logo

implementations's Introduction

Introduction

This contains Practical DDD implementations for the Cargo Tracker Application across multiple programming languages and frameworks. It aims to demonstrate DDD concepts in the context of an execution platform. For a detailed walkthrough of the implementations please purchase the book -> https://www.amazon.com/s?k=practical+domain-driven+design+in+enterprise+java&crid=1R1SOSED7GAXW&sprefix=practical+domain%2Caps%2C389&ref=nb_sb_ss_i_1_16

Cargo Tracker Application

The Cargo Tracker Application acts as the reference application for the DDD implementations. In terms of DDD concepts there are 4 main sub-domains of the Cargo Tracker application - Booking , Tracking , Routing and Handling. The sub-domains are solutioned as Bounded Contexts.

*In case of a modulithic implementation, the Bounded Contexts are individual modules within the monolith *In case of a microservices implementation, each Bounded Context may contain a single/set of microservices centered around the root aggregate *In case of a CQRS/ES implementation (Axon Framework), the Bounded Contexts may either be implemented as microservices or modules within a monolith. The implementation detail will detail the same

Cargo Tracker Use Cases

A high level summary of the use cases is given below. The various Commands / Queries and Events are listed below.

Booking Bounded Context - This deals with all aspects of Booking Business Capabilities of the Cargo Tracker Application

Commands
  - Book a new Cargo
  - Route a booked Cargo
Queries
  - Retrieve Cargo Details basis the Booking Number
Events (Producer)
  - Cargo Booked
  - Cargo Routed

Tracking Bounded Context - This deals with all aspects of Tracking Business Capabilities of the Cargo Tracker Application

Commands
  - Assign Tracking Number to a Routed Cargo
Queries
  - Retrieve Cargo Details basis the Tracking Number
Events (Consumer)
  - Cargo Booked
  - Cargo Routed
  - Cargo Handled

Handling Bounded Context - This deals with all aspects of Handling Business Capabilities of the Cargo Tracker Application

Commands
  - Handle a Cargo
Queries
  - Get list of Handling Events of a Cargo
Events (Producer)
  - Cargo Handled

Routing Bounded Context - This deals with all aspects of Routing Business Capabilities of the Cargo Tracker Application

Commands
  - Create a Voyage
Queries
  - Get Optimal Route for a Cargo
Events (Producer/Consumer)
  - None

Implementations

The list below shows the current implementations available and what will be made available in the coming weeks. This is a 52-week exercise, so please check back for regular updates.

Implementation 1 (Available) - Spring Boot (Tomcat) + Spring Data + Spring Cloud + MySql + RabbitMQ

Implementation 2 (Available) - Jakarta EE 8 (Open Liberty 19.0.0.9) + MySql

Implementation 3 (Available) - MicroProfile 3.0 (Helidon v1.3.1) + Oracle DB Autonomous Cloud + RabbitMQ

Implementation 4 (Available) - MicroProfile 2.2 (Payara Micro) + MySql + Payara Clustered Events

Implementation 5 (Available) - Axon Framework 4.2 + Axon Server 4.2 SE

Implementation 6 (Available) - MicroProfile 2.2 (Kumuluzee v3.5) + MySql + RabbitMQ

Implementation 7 (Planned) - Quarkus

implementations's People

Contributors

practicalddd avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.