A hands-on DDD guide to transforming monoliths into modular systems and microservices
Alessandro Colla

#Domain_Driven_Refactoring
#DDD
#Microservices
#Monoliths
#CQRS
Apply domain-driven design practices effortlessly to evolve your system into a modern, robust application while mastering refactoring techniques that drive real-world results
As software development continues to grow, mastering domain-driven design (DDD) will help transform your approach to complex systems. Filled with actionable insights and practical examples, this book is your essential guide to implementing DDD principles, covering its key concepts and practical applications in modern architecture.
Alessandro, an eCommerce specialist and DDD expert with 30 years of experience, and Alberto, a dedicated backend developer, tap into their extensive expertise to help you refactor your monolith into a modular structure, whether it be evolving into microservices or enhancing a maintainable monolith, resulting in a system that adapts to changing business needs and non-functional requirements.
You’ll explore vital DDD patterns like strategic design with bounded contexts and ubiquitous language, improving communication between technical and domain experts. The chapters take you through modeling techniques to manage complexity and increase flexibility, while also addressing microservices integration, including inter-service communication, transaction management, and data strategies.
By the end of this book, you’ll be able to decompose a monolith and refine its architecture for adaptability, all while ensuring business logic remains central to your software design and development.
This book is ideal for software developers, architects, and team leads looking to modernize legacy applications using domain-driven design principles. If you're a backend developer or software engineer looking to enhance your understanding of DDD, this guide will elevate your skills in designing robust systems. Team leads and architects will find valuable insights for guiding their teams through the transition from monoliths to microservices. Familiarity with C# is a must, as the book provides practical examples in this language.
Table of Contents
Part I: Why Use Domain-Driven Design to Tackle Complexity?
Chapter 1: Evolution of Domain-Driven Design
Chapter 2: Understanding Complexity: Problem and Solution Space
Chapter 3: Strategic Patterns
Chapter 4: Tactical Patterns
Part II: Refactoring Legacy Systems
Chapter 5: Introducing Refactoring Principles
Chapter 6: Transitioning from Chaos
Chapter 7: Integrating Events with CQRS
Chapter 8: Refactoring the Database
Chapter 9: DDD Patterns for Continuous Integration and Continuous Refactoring
Part III: Moving from Monolith to Microservices
Chapter 10: When and Why You Should Transition to a Microservices Architecture
Chapter 11: Dealing with Events and Their Evolution
Chapter 12: Orchestrating Complexity: Advanced Approaches to Business
Processes
“This book takes you from applying strategic patterns through to tactical patterns to enable you to use DDD in your system refactoring. But it goes further, into concepts such as event-driven architectures, refactoring your data stores, handling complexity, and using testing to sustain your hard-won refactored system. Domain-Driven Refactoring is a book you should consume before refactoring your system.”
Jacqui Read, author of Communication Patterns, Chief Architect at The Ministry of Software Design, Co-Organiser of DDD London
Alessandro Colla is an eCommerce specialist a C# programmer and a Domain Driven Design expert. Over the course of now thirty years in IT, he has developed software for management systems, and ERPs, from scratch for a wide variety of fields and helped teams in their learning and improvement. He is also the co-author of "Cronache di Domain-Driven Design" and co-founder of "DDD Open" and "Polenta and Deploy".
Alberto Acerbis is basically an eternal student because the subject matter is endless. He has always defined himself as a backend developer, but he does not disdain poking around on the other side of the code either. He likes to think that 'writing' software is mainly about solving business problems and providing value to the customer, and in this, he finds DDD patterns a great help. I am a co-founder of the DDD Open and Polenta and Deploy communities.









