All Projects → fraktalio → order-demo

fraktalio / order-demo

Licence: other
Axon demo - `Order Management` Information System - A part of the systems landscape https://github.com/fraktalio/courier-demo, https://github.com/fraktalio/restaurant-demo, https://github.com/fraktalio/order-demo

Programming Languages

java
68154 projects - #9 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to order-demo

food-ordering-demo
Demo application focusing on the Food Ordering domain - Used in our video series
Stars: ✭ 28 (-61.11%)
Mutual labels:  cqrs, ddd, event-sourcing, demo-app
es-emergency-call
Struggling with CQRS, A+ES, DDD? We can help you!
Stars: ✭ 26 (-63.89%)
Mutual labels:  cqrs, ddd, event-sourcing
delta
DDD-centric event-sourcing library for the JVM
Stars: ✭ 15 (-79.17%)
Mutual labels:  cqrs, ddd, event-sourcing
iam-ddd-cqrs-es-nestjs
Identity and Access Management
Stars: ✭ 34 (-52.78%)
Mutual labels:  cqrs, ddd, event-sourcing
ftgogo
FTGOGO - event-driven architecture demonstration application using edat
Stars: ✭ 82 (+13.89%)
Mutual labels:  cqrs, ddd, event-sourcing
cqrs
A lightweight, opinionated CQRS and event sourcing framework targeting serverless architectures.
Stars: ✭ 155 (+115.28%)
Mutual labels:  cqrs, ddd, event-sourcing
memo
A CQRS and Event Sourcing blogging playground to explore Axon Framework
Stars: ✭ 14 (-80.56%)
Mutual labels:  cqrs, event-sourcing, axon-framework
backend
Ergonode backend repository
Stars: ✭ 100 (+38.89%)
Mutual labels:  cqrs, ddd, event-sourcing
awesome-talks
Awesome talks about event sourcing, cqrs, microservices, funcional programming ...
Stars: ✭ 23 (-68.06%)
Mutual labels:  cqrs, ddd, event-sourcing
eventuous
Minimalistic Event Sourcing library for .NET
Stars: ✭ 236 (+227.78%)
Mutual labels:  cqrs, ddd, event-sourcing
firebase-event-sourcing
Event Sourcing + CQRS + DDD for Firebase
Stars: ✭ 14 (-80.56%)
Mutual labels:  cqrs, ddd, event-sourcing
wolkenkit-todomvc
wolkenkit-todomvc is a todo application.
Stars: ✭ 15 (-79.17%)
Mutual labels:  cqrs, ddd, event-sourcing
slack-community
Docs related to DDD-CQRS-ES Discord Community
Stars: ✭ 58 (-19.44%)
Mutual labels:  cqrs, ddd, event-sourcing
CQELight
CQELight is an entreprise grade extensible and customisable framework for creating software with CQRS, DDD & Event Sourcing patterns
Stars: ✭ 21 (-70.83%)
Mutual labels:  cqrs, ddd, event-sourcing
EcommerceDDD
Experimental full-stack application using Domain-Driven Design, CQRS, and Event Sourcing.
Stars: ✭ 178 (+147.22%)
Mutual labels:  cqrs, ddd, event-sourcing
e-shop
Sample Spring Cloud microservices e-shop.
Stars: ✭ 48 (-33.33%)
Mutual labels:  cqrs, ddd, event-sourcing
Proophessor Do
prooph components in action
Stars: ✭ 247 (+243.06%)
Mutual labels:  cqrs, ddd, event-sourcing
CleanArchitecture
Clean Architecture Solution for .NET 5
Stars: ✭ 18 (-75%)
Mutual labels:  cqrs, ddd, event-sourcing
educational-platform
Modular Monolith Java application with DDD
Stars: ✭ 124 (+72.22%)
Mutual labels:  cqrs, ddd, axon-framework
micro
Functional prooph for microservices
Stars: ✭ 53 (-26.39%)
Mutual labels:  cqrs, ddd, event-sourcing

Order - demo

CI with maven

Systems Landscape

The systems landscape consists of three systems order management, restaurant management and courier management

Customers use the web application to place food orders at local restaurants. Application(s) coordinates a restaurant/kitchen order preparation, and a network of couriers who deliver the orders.

Vision

Event Modeling is a method of describing systems using an example of how information has changed within them over time.

event modeling

Structure

The C4 software architecture model is a simple hierarchical way to think about the static structures of a software system in terms of containers, components and classes (or code).

A System Context diagram can be a useful starting point for diagramming and documenting a software system, allowing you to step back and look at the big picture.

landscape

Order Management System

Order taking and fulfillment management system. Orchestrates order management at the Restaurant and Courier systems.

Vision

We zoom in to show the event model of the Order Management System only:

event modeling

Specification by example (SBE) is a collaborative approach to defining requirements and business-oriented functional tests for software products based on capturing and illustrating requirements using realistic examples instead of abstract statements.

spec by example

Structure

Once you understand how your system fits in to the overall IT environment with a System Context diagram, a really useful next step can be to illustrate the high-level technology choices with a Container diagram:

containers diagram

Following on from a Container diagram showing the high-level technology decisions, you can then start to zoom in and decompose each container further:

components diagram

Canvas

Name: Order Management
Description: Order taking and fulfillment management system
Concepts: Architectural patterns: Technology:
  • Domain Driven Design
  • Event Driven Microservices
  • Eventsourcing
  • CQRS
  • Java
  • Axon
  • Spring(Boot)
  • SQL(Postgres)
  • Docker
  • Testcontainers
  • Kubernetes
  • Prometheus
  • Grafana
  • Jaeger
Service API
Commands: Queries: Events published:
gRPC:
  • PlaceOrderCommand
  • RejectOrderCommand
  • AcceptOrderCommand
  • MarkOrderAsPreparedCommand
  • MarkOrderAsCollectedCommand
  • MarkOrderAsExpiredCommand
  • MarkOrderAsDeliveredCommand
  • MarkOrderAsPayedCommand
gRPC:
  • FindOrderQuery
  • FindAllOrdersQuery
gRPC:
  • OrderPlaced
  • OrderRejected
  • OrderAccepted
  • OrderPrepared
  • OrderCollected
  • OrderExpired
  • OrderDelivered
  • OrderPayed
Domain model:
  • Order
Dependencies:
Invokes Subscribes to

Development

This project is driven using maven.

Run locally

Requirements

You can download a ZIP file with AxonServer as a standalone JAR. This will also give you the AxonServer CLI and information on how to run and configure the server.

Alternatively, you can run the following command to start AxonServer in a Docker container:

docker run -d --name axonserver -p 8024:8024 -p 8124:8124 axoniq/axonserver

Build & Test

./mvnw clean verify

Run

./mvnw spring-boot:run

Run on Kubernetes cluster

Requirements

  • Kubernetes. It is included in the Docker on Mac (and Windows) binary so it installed automatically with it. After a successful installation, you need to explicitly enable Kubernetes support. Click the Docker icon in the status bar, go to “Preferences”, and on the “Kubernetes” tab check “Enable Kubernetes”.
  • Kubectl allows you to run commands against Kubernetes clusters. You can use kubectl to deploy applications, inspect and manage cluster resources, and view logs

Build the docker image to local registry:

./mvnw clean verify jib:dockerBuild

Deploy:

kubectl apply -k .k8s/base

Delete:

kubectl delete -k .k8s/base
kubectl delete pvc --all

Continuously deploy with google skaffold

  • Skaffold is a command line tool that facilitates continuous development for Kubernetes applications.

Use skaffold dev to build and deploy your app every time your code changes:

$ skaffold dev

or activate observability profile, to enable metrics and tracing with Prometheus, Grafana and Jaeger:

$ skaffold dev -p observability

Deploy once

Use skaffold run to build and deploy your app once, similar to a CI/CD pipeline:

$ skaffold run

or activate observability profile, to enable metrics and tracing with Prometheus, Grafana and Jaeger:

$ skaffold run -p observability

References and further reading


Created with ❤️ by Fraktalio

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].