Overview on all Decisions

This is the architectural decision log for the FAE course. Download as CSV.

Status Title Responsible Deadline
Asynchronous over synchronous communication for all sub-domains Stefan Bente
Branch strategy during development tzaika, SohleDelfin6504, und akosmehl
Conventions for REST return codes and error handling jalue
Conventions for REST URIs Stefan Bente
All documentation (apart from the decision log itself) has to be stored in a Github wiki, in repo evatool-backend Stefan Bente und Peter Klein
We maintain a high-level global "Domain Story Telling" model kruck und Duzun
A DTO pattern should be used in the APIs Stefan Bente
UUIDs are to be used for Entity IDs (PKs and API IDs) Stefan Bente
Rules regarding Git-Merge (Merge-Workflow) tzaika
Events need to be defined in a public package within the domain jalue
Logging Strategy SohleDelfin6504
Some basic styleguide for domain modelling Stefan Bente
In the backend, we will follow the "Modulith" architecture style Stefan Bente
The package structure should reflect the DDD layer architecture Stefan Bente
The preferred way of synchronous communication between modules are api calls jalue
In the backend, Spring is used as predominant programming framework Stefan Bente
In the backend, Java is used as programming language Stefan Bente
JSON jalue und SohleDelfin6504
Relational database vs. NO-SQL DB TheBuro und FalahSama
Access security through REST-API authentication methods TheBuro
Configuration database state dev and prod TheBuro und FalahSama
MYSQL used as database TheBuro und FalahSama
Database version control TheBuro und FalahSama
API-Documentation is done using Swagger FalahSama
Web MVC with manual link SohleDelfin6504
API Style is REST Level 3 jalue und SohleDelfin6504
The Uri style is lower camel case jalue
API Testing hbuhl
Tool Chain for Build Pipeline - GitHub Actions vs. Jenkins tzaika und hbuhl
Containerization - VM vs. Docker tzaika
Local Debugging using Docker tzaika
Event Testing hbuhl
Choice of Hosting provider tzaika
Maven is used as build tool mhallweg
Definition of Quality Gates in Sonarcloud mhallweg
SonarLint and SonarCloud are used as code-quality tools mhallweg
Testing Automation with GitHub Actions hbuhl
Communication pattern for events is "Full-Payload" kruck und Duzun
Research method to define the domain is Domain Story Telling kruck und Duzun
Spring eventing is used as Eventing Solution akosmehl
Single module project SohleDelfin6504
Development model is "Single Repo" SohleDelfin6504 und Stefan Bente
Source code and test structure (and how to run applications and tests) hbuhl
API Specification for Team "Analysis" FalahSama
Domain model for team "Analysis" mhallweg und FalahSama
Event Specification for Team "Analysis" mhallweg
API Specification for Team "Impact" hbuhl und tzaika
Domain model for team "Impact" hbuhl und tzaika
Event Specification for Team "Impact" hbuhl und tzaika
API Specification for Team "Requirements" SohleDelfin6504 und TheBuro
Domain model for team "Requirements" jalue
Event Specification for Team "Requirements" jalue
API Specification for Team "Variants" Duzun und akosmehl
Domain model for team "Variants" kruck und Duzun
Event Specification for Team "Variants" kruck