Giter VIP home page Giter VIP logo

courier-demo's Introduction

Courier - demo

CI with maven

Systems Landscape

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

event modeling

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.

landscape

Courier Management System

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

Name: Courier Management
Description: Managing courier information. A courier view of an order (managing the delivery of orders).
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:
  • CreateCourierCommand
  • CreateShipmentCommand
  • AssignShipmentCommand
  • MarkShipmentAsDeliveredCommand
gRPC:
  • FindCourierQuery
  • FindShipmentQuery
  • FindAllCouriersQuery
  • FindAllShipmentsQuery
gRPC:
  • CourierCreatedEvent
  • ShipmentCreatedEvent
  • ShipmentAssignedEvent
  • ShipmentNotAssignedEvent
  • ShipmentDeliveredEvent
  • ShipmentExpiredEvent
Domain model:
  • Courier
  • Shipment
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”.
  • Skaffold is a command line tool that facilitates continuous development for Kubernetes applications.
  • Kubectl allows you to run commands against Kubernetes clusters. You can use kubectl to deploy applications, inspect and manage cluster resources, and view logs

Continuously deploy

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

courier-demo's People

Contributors

dependabot[bot] avatar idugalic avatar

Watchers

 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.