@thesis{Thalmaier2022, author = {Thalmaier, Simon}, title = {Aggregationsschnitt einer Checkout-Software auf Basis einer Hexagonalen Architektur mit Domain-Driven Design}, publisher = {Technische Hochschule Ingolstadt}, address = {Ingolstadt}, url = {http://nbn-resolving.de/urn:nbn:de:bvb:573-34734}, pages = {XI, 49, xviii}, year = {2022}, abstract = {Softwareprojekte im E-Commerce-Bereich erf{\"u}llen komplexe Businessanforderungen und ben{\"o}tigen aufgrund dessen eine stabile Architektur. Dieses Projekt untersucht die Domain eines Onlineshop-Checkouts und wie der Bounded-Context mithilfe einer Hexagonalen Architektur und Domain-Driven Design implementiert werden kann. Besonders liegt der Aggregationsschnitt im Fokus, wobei unterschiedliche Datenmodelle analysiert und anhand von Komplexit{\"a}t, Performance, Parallelit{\"a}t und Client-Freundlichkeit bewertet werden. Große Aggregates leiden generell unter verringerter Parallelit{\"a}t, jedoch bietet ein zusammengeh{\"o}riges Datenmodell eine vereinfachte Umsetzung von Businessanforderungen, da stets alle Informationen aus der Datenbank geladen werden. Die Aufteilung in mehrere Aggregates erzwingt die Anwendung von Eventueller Konsistenz oder einer Transaktion {\"u}ber mehrere Aggregates. Eventuelle Konsistenz erh{\"o}ht die Komplexit{\"a}t der Checkout-Software, wohingegen eine aggregate-{\"u}bergreifende Transaktion die Verwendung von unterschiedlichen Datenbank-Hosts erschwert. Anhand eines Lasttests wird die Performance der Designans{\"a}tze betrachtet. Im Durchschnitt verarbeitet die Applikation mit einem zusammengeh{\"o}rigen Datenmodell mehr Anfragen pro Sekunde als unter Verwendung getrennter Aggregates. Als Fazit dieser Arbeit wird argumentativ begr{\"u}ndet, dass innerhalb einer Checkout-Software die Vorteile eines Designs mit einem einzigen Aggregate dank der erh{\"o}hten Performance und reduzierten Komplexit{\"a}t {\"u}berwiegen. Falls eine zeitgleiche Bearbeitung einer Ressource durch unterschiedliche Prozesse ein g{\"a}ngiger Anwendungsfall ist, m{\"u}ssen die betroffenen Objekte in separate Aggregates verlagert werden.}, language = {de} }