T2-Project Documentation

Introduction

The T2-Project is a reference application provided in two variants:

The project is loosely based on the TeaStore Application.

Initially, we only implemented the application in the microservices architecture style and called it T2-Project. Later, we added a monolithic variant for comparison.
The monolith retains the modular structure, therefore we call it T2-Modulith.
In order to distinguish the individual variants and the overall project linguistically, we now use the term T2-Project to refer to the overall project, including both variants, and call the initial microservices implementation T2-Microservices.

The initial main purpose of the T2-Project reference application was to trigger SLO violations with regard to response time and availability (see Microservices Usage for more information). The purpose of the T2-Modulith is to compare a microservices application with a modulith application, mainly in regards of energy efficiency (see Energy Measurements for more information).

System Context

The T2-Project is a fictitious store for tea and provides a minimalist User Interface (UI) that enables an ordering process (without real payment). However, as a reference application, the T2-Project is primarily aimed at researchers who want to carry out various tests. The UI is not required for this, as the tests are carried out directly via the API provided. The interface of a credit institute is simulated for the payment process. The payment process can also be completely deactivated via configuration so that the fake credit institute is not necessarily required for tests. Therefore, there are no dependencies on real external systems. The following image visualizes this as a system context diagram:

_images/c4-system-context.svg

Source Code

The T2-Project is organized under the GitHub organization t2-project in multiple repositories.

A convenience repo including all repositories exists so that not every repo needs to be cloned separately: https://github.com/t2-project/t2-project.

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

Common deployment and configuration files, e.g. for Kubernetes or Docker, are located in one repository called DevOps.

Modulith implementation

Microservices implementation

A convenience repo including all microservices exists so that not every repo needs to be downloaded separately: https://github.com/t2-project/microservices.

Shared domain classes are part of the Common repository, that is a dependency of all services.

Core services:

Supplemental services: