Email the Author
You can use this page to email Enrique Pablo Molinari about Coding an Architecture Style.
About the Book
If you have had the bad experience of having to maintain a complex "big ball of mud" enterprise application, with pressure from the business to go to production with new features under an aggressive schedule, you, better than anyone, know how important is to have a solid architecture with clear defined rules where we can make modifications, having an understanding where every change will impact.
However, it is not enough to understand how to create solid architectures by looking at beautiful architectural diagrams. Or by reading long explanations about the benefits of Microservices or Modularity. Understanding how to create solid structures requires opening an IDE and starting coding. We have to learn what syntactical constructions, other than classes, functions and procedures, our favourite programming language offers to create large-scale applications and just there we will be able to craft different software structures and start recognizing their benefits and drawbacks.
Throughout this book we will iterate an application in order to show how to code different architecture styles. In each iteration we study and implement an architecture style, going through layered architecture, hexagonal (or ports and adapters), modular and microservices. All this is supported by solid architecture concepts, simple designs and good practices. We use Java 11 to implement all the mentioned styles. In particular, to implement the modular architecture style we use the module system incorporated in Java since version 9. We also show different options to verify the architecture rules imposed by each style. All sources are available for the reader.
Although the implementation is done in the Java language, it is possible to apply the same concepts in languages such as PHP, Ruby, Python or .NET.
We will also review the different architectural views, we discuss properties of monolith vs distributed architectures to finish with a pragmatic study of availability and scalability quality attributes.
About the Author
Enrique Molinari holds a Master in Software Engineering at Universidad Nacional de La Plata (Argentina). With 20 years of experience in the software industry he has worked in many software projects as developer, technical lead and architect. He is also professor at Universidad Nacional de Río Negro, in charge of the Object Oriented Design and Advanced Database Systems undergraduate courses.