Open feststelltaste opened 4 years ago
Damit es hier nicht so leer bleibt, fange ich schon einmal mit einem (rein beispielhaften) Beitrag:
Während meiner Bachelorarbeit habe ich eine modularisierte Anwendung, getrennt anhand zweier Bounded Contexts, entworfen und entwickelt. Die Anwendung war natürlich relativ klein, aber um die Architektur zu erhalten, habe ich Tests mit ArchUnit geschrieben.
Meine Hoffnung ist, dass die Entwickler nach mir dadurch daran gehindert werden, mit der Architektur zu brechen.
Zum einen wird überprüft, ob die Trennung zwischen den Bounded Contexts erhalten bleibt:
public class ModulesArchTest {
@ArchTest
static final ArchRule NO_CONTEXT1_IN_CONTEXT2 =
noClasses().that().resideInAPackage("de.context1..").and()
.resideOutsideOfPackage("de.context1.adapterToContext2..")
.should()
.dependOnClassesThat().resideInAPackage("de.context2..");
// und umgekehrt
}
Außerdem gibt es jeweils noch Tests für die hexagonale Architektur innerhalb der Bounded Contexts:
@AnalyzeClasses(packages = "de.project")
public class Context1ArchTest {
@ArchTest
static final ArchRule HEXAGONAL_ARCH_TEST = onionArchitecture()
.domainModels("de.project.context1.domain..")
.applicationServices("de.project.context1.application..")
.domainServices("de.project.context1.domain.services..")
.adapter("rest", "de.project.context1.rest..")
.adapter("messaging", "de.project.context1.messaging..");
}
Passend zum geposteten Bild wäre meine Frage, ob auf diese Weise nicht eine ähnliche Hemmschwelle zum Architekturbruch gegeben ist, wie bei anfangs gut geschnittenen Microservices. Ich würde mich freuen, wenn im Vortrag ein paar Worte zu solchen Tests gesagt werden, insbesondere wenn es zu dieser Art der Absicherung schon Erfahrungen aus größeren Projekten gibt. Vielen Dank!
Wenn wir eine 20 Jahre alte Anwendungslandschaft, die aus mehreren C++ standalone Desktopanwendungen besteht ablösen sollen schreit das auf den ersten Blick nach Microservices. Die Anwendungen haben verschiedene fachliche Kontexte, aber geteilte technische Anforderungen z. B. drucken, aber auch spezielle technische Anforderungen z. B. eine Handscanneranbindung. Wie würde man das Monolith umsetzten? Würde man auch eine Desktopanwendung schreiben? Welche Vorteile entstünden?
Geht es um die Modulithen oder eher abstrakter um das gesamte Thema?
Hat sich im Vortrag erledigt: Ja, es ging um Moduliths
Vorab-Sammlung von Fragen und Beiträgen
URL zum Vortrag: https://cyberjug.de/vortrag/bessere_monolithen/
Hier habt ihr die Möglichkeit, mittels der Kommentar-Funktion vorab Fragen und Beiträge zum anstehenden CyberJUG-Meetup beizusteuern: