Skip to content

Building and Designing Reactive Systems called Reactive Account using Domain-Driven Design technique and Principles of Reactive Architecture along with Reactive Programming

License

Notifications You must be signed in to change notification settings

KTural/Reactive-Microservices

Repository files navigation

Reactive Microservices Engineering and Design

Reactive Account

IBM

Libraries And Technologies

  • Java - General-purpose, concurrent, strongly typed, class-based object-oriented programming language
  • AKKA - Toolkit for building highly concurrent,distributed,resilient,message-driven applications for Java and Scala
  • Microservices - Architectural style that structures application as collection of highly maintainable,testable services
  • Docker - Open Source platform for building, deploying, and managing containerized applications.

Design Techniques and Principles

Reactive Principles

  • Event Storming - Workshop-based method to quickly find out what is happening in the domain of a software program

Event Storming

Installation of neccessary packages

Install the dependencies:

# Check whether python installed:
$ python --version

# Check whether pip installed:
$ python -m pip --version

# If above all installed:
$ pip install -r requirements.txt

# Try upgrading pip:
$ pip install --upgrade pip

Running the source file

Command:

# This will compile and run all main actors in source file
$ mvn compile exec:exec

Testing the source file

Command:

# This will run all tests those are written for each actors in all domains
$ mvn test
# This will run specific test or tests that you specify (its name or path)
$ mvn test -Dtest=TestName#xyz
# where TestName is the test class name and xyz is the test method
# this will run all methods inside class name TestName
$ mvn test -Dtest=TestName 
# For integration tests use it.test=... option instead of test=...
$ mvn -pl <module-name> -Dit.test=TestCircle#xyz integration-test

Deployment

# reactive-account.jar exists in target which contains src, target, maven dependencies, jre system library

# Creating docker image:
$ docker build -f Dockerfile -t reactive-account .

# List images
$ docker images

# Running docker image
$ docker run -p <port_number>:<port_number> reactive-account

Project Visualization, Implementation, Architecture and Design details

Keys

Main Domains

Reactive Account Architecture and Design: Main Outlook

Reactive Account

All domains inside Reactive Account (separetely)

Account Domain

Payment Domain

Billing Domain

Product Definition/Development Parameters (for Student and Normal packages)

Product Definition/Development Parameters

General View of Domain Event Connections as Actors during technical implementation

Actors Description

References

About

Building and Designing Reactive Systems called Reactive Account using Domain-Driven Design technique and Principles of Reactive Architecture along with Reactive Programming

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages