Skip to main content

Project Overview

Welcome to the MisArch project - A representable microservice reference architecture

Project Purpose

Modern software systems often adhere to the Microservices architectural style, where applications are composed of multiple independently developed microservices. Well-known applications following this style include Netflix and Amazon. These individual microservices often communicate through synchronous calls (REST, GraphQL, etc.) or asynchronous calls (gRPC, messaging, etc.). Additionally, such applications are monitored and traced using tools like Prometheus and Zipkin. To be able to respond to constant changes in the environment, such as fluctuating workload, autoscalers are typically used to scale the individual services accordingly.

In order to test applications and concepts for such architectures, both research and industry require what are known as reference architectures. However, existing microservice reference architectures are often not representative, as they are frequently very small and utilize outdated technologies, primarily relying on synchronous communication. Realistic applications from the industry, on the other hand, are often not available. Therefore, there is a need for a realistic and representative open-source microservice application.

The aim of this development project is to create such a reference architecture.

Comparison with exisiting Reference Architectures

FeatureTeaStoreT2-StoreTrainTicketMisArch
# Microservices564117 ( + 3 non-domain services)
Multilanguage--
Asynchronous Communication-Partial
Technologies-KubernetesKubernetesDapr, Keycloak, Minio, GraphQL, Kubernetes
Configurable System Behaviour-SLO ViolationsPredefined Faults

Documentation

See

Repository Structure

The MisArch-project is structured under the MisArch Github organization.

The source code of this documentation is stored in the Documentation repository.

Frontend

Infrastructure

These repositories include the different DevOps approaches.

Microservices

These repositories include the core microservices.

Helpers

These repositories provide additional (non-core) functionalities

Domain

An extensive Tradeoff Analysis regarding different possible domains for the reference architecture was conducted. The e-commerce domain was identified as most promising candidat to fullfill the given requirments. The model shows all entities and relationships of the reference ecommerce shop.

info

Bounded contexts that are implemented within one service are highlighted with a purple frame.