DOMAIN-DRIVEN DESIGN AND HEXAGONAL ARCHITECTURE
Authors/Creators
- 1. University of Belgrade
Description
The thesis Development of an application based on hexagonal architecture and Domain-Driven Design focuses on elaborating and analyzing key concepts and principles of Domain-Driven Design and their implementation through hexagonal software development architecture.
The first part of the paper is grounded in the theoretical description of Domain-Driven Design concepts and
Hexagonal Architecture, also known as "Ports and Adapters" and "Clean" architecture. The thesis discusses the
essence and significance of creating modular applications through the precise separation of public abstractions and
implementation details, by isolating domain logic from infrastructure and utilized technologies. Additionally, the
thesis also emphasizes the importance of logically segregating code into modules, communication via APIs, and
the subsequent decoupling of application components. This is noted for its impact on the capabilities for code
testing, the introduction of new features, and the upgrading or replacement of existing technologies and business
functionalities, as well as the potential for transforming modules into individual microservices.
The aim of the paper is to address key concepts of Domain-Driven Design and hexagonal architecture and to
consider the importance of encapsulation, abstraction, and protection of business logic from the rest of the system
as their primary tenets. The theoretical part of the paper allows for the identification of the advantages of hexagonal
architecture over monolithic, single-module software architecture, as well as potential challenges in its implementation and maintenance.
Files
Annali d’Italia №51 2024-65-74.pdf
Files
(606.9 kB)
| Name | Size | Download all |
|---|---|---|
|
md5:4f53861bc4cad7f1c4f176b7771c0875
|
606.9 kB | Preview Download |
Additional details
References
- 1. Atanasov, M. (2017), Pucanje monolitnih aplikacija i potreba za mikroservisima, dostupno na: https://startit.rs/pucanje-monolitnih-aplikacija-ipotreba-za-mikroservisima/ 2. Balalaie, Armin & Heydarnoori, Abbas & Jamshidi, Pooyan & Tamburri, Damian & Lynn, Theodore. (2018). Microservices migration patterns. Software: Practice and Experience. 48. 10.1002/spe.2608., dostupno na: https://www.researchgate.net/publication/326601142_ Microservices_migration_patterns 3. Callaway, J., & Hunt, C., (2018), Practical Test-Driven Development using C# 7: Unleash the power of TDD by implementing real world examples under .NET environment and JavaScript. Birmingham: Packt Publishing, dostupno na: https://www.oreilly.com/library/view/practical-testdriven-development/9781788398787/ 4. Cockburn, A., (2005), "Hexagonal architecture," alistair.cockburn.us, dostupno na: http://alistair.cockburn.us/Hexagonal+architecture 5. Chavan, P. U, Murugan, M. and Chavan, P. P., "A Review on Software Architecture Styles with Layered Robotic Software Architecture," 2015 International Conference on Computing Communication Control and Automation, 2015, pp. 827-831, doi: 10.1109/ICCUBEA.2015.165., dostupno na: https://ieeexplore.ieee.org/abstract/document/7155963 6. Dingsøyr, T., Moe, N.B.: Towards principles of large-scale agile development. In: Dingsøyr, T., Moe, N.B., Tonelli, R., Counsell, S., Gencel, C., Petersen, K. (eds.) XP 2014. LNBIP, vol. 199, pp. 1–8. Springer, Cham (2014), dostupno na: https://doi.org/10.1007/978-3-319-14358-3_1 7. Evans, E., (2004), Domain-Driven Design: Tackling Complexity in the Heart of Software. Addison-Wesley, ISBN: 0321125215, dostupno na: https://www.oreilly.com/library/view/domain-drivendesign-tackling/0321125215/ 8. Hippchen, B., Giessler, P., Steinegger, R., Schneider, M., Abeck, S., (2017), Designing Microservice-Based Applications by Using a DomainDriven Design Approach. International Journal on Advances in Software (1942-2628). 10. 432 - 445., dostupno na: https://cm.tm.kit.edu/download/domain_driven_micro service-architecture.pdf
- 9. Ilić, G., (2021), Razvoj web aplikacije za pretraživanje jeftinih avionskih letova, Sveučilište u Zagrebu, Fakultet organizacije i informatike Varaždin, dostupno na: https://repozitorij.foi.unizg.hr/islandora/object/foi:679 2/datastream/PDF/view
- 10. Isailović, S., Stanković, M., Vasiljević, D., Ristić, L., (2021), Osnove distribuiranih sistema i distribuiranog programiranja, Metodologija stručnog i naučnog rada, Matematički fakultet, dostupno na: http://www.programskijezici.matf.bg.ac.rs/seminarski/ teorija/03_DistribuiraniSistemi_IsailovicStankovicVas iljevicRistic.pdf 11. Iyer, B., Subramaniam, M., (2015), "The Strategic Value of APIs," dostupno na: https://hbr.org/2015/01/the-strategic-value-of-apis 12. Kapferer, S., Zimmermann, O. (2020). Domain-Driven Service Design. In: Dustdar, S. (eds) Service-Oriented Computing. SummerSOC 2020. Communications in Computer and Information Science, vol 1310. Springer, Cham, dostupno na: https://doi.org/10.1007/978-3-030-64846-6_11 13. Karam, L. M., (2017), An Introduction to Domain Driven Design and Its Benefits, dostupno na: https://dzone.com/articles/an-introduction-to-domaindriven-design-and-its-be 14. Kolařík, V., (2019), Applying the Normalized Systems Theory on Microservice Architecture, dostupno na: https://dspace.cvut.cz/bitstream/handle/10467/81234/F 8-DP-2019-Kolarik-Vincenc-thesis.pdf?sequence=- 1&isAllowed=y 15. Konuklar, T., (2020), Hexagonal (Ports & Adapters) Architecture, dostupno na: https://medium.com/idealo-tech-blog/hexagonal-portsadapters-architecture-e3617bcf00a0 16. Langurić, M., Zaki, L. (2022), Migrating monolithic system to domain-driven microservices Developing a generalized migration strategy for an architecture built on microservices, KTH School of Engineering Sciences in Chemistry, Biotechnology and Health, dostupno na: http://www.divaportal.org/smash/get/diva2:1666477/FULLTEXT01.p df 17. Lilienthal, C., (2019), From monoliths to modular architectures and microservices with DDD, dostupno na: https://jaxlondon.com/blog/frommonoliths-to-modular-architectures-andmicroservices-with-ddd/ 18. Liu, A., (2021), Domain Driven Design(DDD) and Microservice decomposition, dostupno na: https://masteranyfield.com/2021/07/28/domaindriven-designddd-and-microservice-decomposition/ 19. Mijušković, V. (2021), Mainstream stručnjak odgovara na vaša pitanja o mikroservisima – šta treba znati pre upuštanja u ovu avanturu?, dosupno na: https://www.netokracija.rs/mikroservisi-184922 20. Miteva, S., (2020), The Concept of DomainDriven Design Explained, dostupno na: https://dev.to/microtica/the-concept-of-domain-drivendesign-explained-1ccn 21. Mocker, M., (2009), What is complex about 273 applications? untangling application architecture complexity in a case of European investment banking. In: 2009 42nd Hawaii International Conference on System Sciences HICSS 2009, pp. 1–14. IEEE 22. Newman, S. (2015). Building Microservices: Designing Fine-Grained Systems. O'Reilly Media. ISBN: 978-1491950357, dostupno na: https://www.oreilly.com/library/view/buildingmicroservices-2nd/9781492034018/ 23. Penchikala, S., (2008), Domain Driven Design and Development In Practice, dostupno na: https://www.infoq.com/articles/ddd-in-practice/ 24. Petrović, A. (2018), DDD i CQRS u fokusu septembarskog Java meetupa u Startit Centru Beograd, dostupno na: https://startit.rs/java-meetup-ubeogradskom-startit-centru/ 25. Rost, D., Weitzel, B., Naab, M., Lenhart, T., Schmitt, H., (2015), Distilling best practices for agile development from architecture methodology. In: Weyns, D., Mirandola, R., Crnkovic, I. (eds.) ECSA 2015. LNCS, vol. 9278, pp. 259–267. Springer, Cham (2015), dostupno na: https://doi.org/10.1007/978-3- 319-23727-5 26. Rouse, M, (2016). monolithic architecture, dostupno na: https://whatis.techtarget.com/definition/monolithicarchitecture 27. Santoso, P.C., (2018), Breaking Complexity Using Domain-Driven Design, dostupno na: https://www.mitrais.com/news-updates/breakingcomplexity-using-domain-driven-design/ 28. Stojanović, S. & Simović, A., (2019), Serverless Applications with Node.js Using AWS Lambda and Claudia.js, Manning Publications, dostupno na: https://www.manning.com/books/serverlessapplications-with-node-js 29. Stojkov, A., & Stojanov, Z. (2021). Pregled metoda za migraciju softverskih sistema na mikroservisnu arhitekturu. Journal of Engineering Management and Competitiveness (JEMC), 11(2), 152-162. https://doi.org/10.5937/jemc2102152S 30. Storožev, M., (2021), Exploration of Techniques to Visualise Code Quality, University of Tartu 31. Słomka, K. (2020), Using Hexagonal Architecture and DDD together for robust software design, dostupno na: https://blog.slomka.pro/usinghexagonal-architecture-and-ddd-together-for-robustsoftware-design-d4b06a9beec3 32. Turis, M., (2019), Domain-driven design with architectural patterns, Masaryk University, Faculty of Informatics, dostupno na: https://is.muni.cz/th/agyz7/Thesis-Turis.pdf 33. Vernon, V. (2012). Implementing domaindriven design. Place of publication not identified: Addison-Wesley Professional, dostupno na https://media.oiipdf.com/pdf/152e8f22-51e8-4e04- 86c9-1de1f6820e4b.pdf 34. Vieira, D., (2022), Designing Hexagonal Architecture with Java : An architect's guide to building maintainable and change-tolerant applications with Java and Quarkus, Packt Publishing, ISBN-13 9781801816489, ISBN-10 1801816484