Complete gig history
Onion, Hexagonal, Clean, or Fractal Architectures aim to organize how we deal with dependencies in our software architectures. But which one should we choose? After distilling the essence of each approach and comparing the advantages and challenges, I’ll show how to combine all of them into an approach to use evolutionary steps towards an architecture that fits your needs from day one until the software dies. You’ll see that layers and slices aren’t enough. A modularisation that fits the domain and simplifies understandability, changeability, and extensibility must go beyond these concepts.
If we start with the architecture of new software, we must think about many things. I use a list of 23 architectural aspects, like persistence, communication, translations, archiving, scaling, Security, Exception handling etc., to guide my design. By taking an evolutionary approach, we can tackle these aspects incrementally and allow us to learn a lot about the problem to be solved and possible solutions before deciding. Instead of a big-design-up-front based on many assumptions, we create options among which we can choose the optimal one as late as possible. After this presentation, you will know the architectural aspects that are important when working on architecture and how to implement them in many small steps.
The architecture of modern software systems has to adapt to changing user needs and technological innovation continuously. Simplicity is the essential factor to support the evolution of software architecture. In this presentation, I'll show you a model that helps reflect on the simplicity of the architecture and practices that support keeping the architecture as simple as possible - like continuous refactoring, decision-decomposition, and concrete-specific instead of abstract-generic designs.