Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
Domain-Driven Refactoring
Domain-Driven Refactoring

Domain-Driven Refactoring: A hands-on DDD guide to transforming monoliths into modular systems and microservices

Arrow left icon
Profile Icon Alessandro Colla Profile Icon Alberto Acerbis
Arrow right icon
Free Trial
Full star icon Full star icon Full star icon Full star icon Full star icon 5 (2 Ratings)
Paperback May 2025 324 pages 1st Edition
eBook
AU$14.99 AU$44.99
Paperback
AU$55.99
Subscription
Free Trial
Arrow left icon
Profile Icon Alessandro Colla Profile Icon Alberto Acerbis
Arrow right icon
Free Trial
Full star icon Full star icon Full star icon Full star icon Full star icon 5 (2 Ratings)
Paperback May 2025 324 pages 1st Edition
eBook
AU$14.99 AU$44.99
Paperback
AU$55.99
Subscription
Free Trial
eBook
AU$14.99 AU$44.99
Paperback
AU$55.99
Subscription
Free Trial

What do you get with a Packt Subscription?

Free for first 7 days. $24.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing
Table of content icon View table of contents Preview book icon Preview Book

Domain-Driven Refactoring

Evolution of Domain-Driven Design

Since the birth of software development in the 1960s, developers strived to create better applications to deal with the complexity of the world. During the following 20 years, many reports emerged pointing out the inefficiency of software systems and their design processes. We also went through the infamous software crisis that led to many incidents, such as the Therac-25 (https://en.wikipedia.org/wiki/Therac-25).

One of the main problems during that time was that software development followed a “code-and-fix” approach. That is, developing software without a clear view of the project and the problem to solve. This led to incomplete software that quite always went over budget and missing deadlines seemed to be normal.

The turning point arrived in 1968 during the NATO conference where the issue was acknowledged, and people started laying the groundwork for software engineering as a formal discipline (https://docslib.org/doc/9230794...

Progression of the software development approaches

Between the 1980s and 1990s, the awareness of the software crisis led to the rise of various “silver-bullet” approaches that did not, however, provide a definitive solution. The famous article, No Silver Bullets, written by Fred Brooks, took the problem head-on and brought to the attention of the reader that there are mainly two different kinds of complexity; essential and accidental (you will read in depth about them in Chapter 2).

In Steve McConnell’s book, Software Estimation: Demystifying the Black Art, there is a really interesting concept called “cone of uncertainty,” which exposes part of the problem with a simple diagram (Figure 1.1). This diagram points out that estimates created early in the project are subject to a high degree of error. As you can see, these estimates can be off by a factor of four both in high and lower ends. The application of this concept was in the estimate process...

The story so far

Back in 2003, Eric Evans, through his popular book, Domain-Driven Design: Tackling Complexity in the Heart of Software (often referred to as “the blue book” because of its distinctive blue hard cover), introduced an innovative approach to software design and development. Since then, an ever-growing slice of the software community has begun to shift their approach to software design by applying what he suggested.

This new way of developing software was driven by the need to find a new and more efficient way to tackle the intricacies of an already complex world. What Evans tried to put down in his seminal book is a completely novel approach to what is defined as E-programs of Lehman’s law (https://en.wikipedia.org/wiki/Lehman%27s_laws_of_software_evolution).

What he realized was that the traditional approach in software design was focused on translating the complexity of the business flows with just technical solutions (DB first, anyone...

What is domain-driven design (DDD)?

First, we can say what DDD is not. It is not a framework, or a library, to be installed on our computers to guide us in the development of software systems.

At the heart of DDD are two interconnected principles: ubiquitous language and bounded context.

Ubiquitous language is a shared vocabulary consistently used by all stakeholders, including domain experts, developers, and business teams. It eliminates ambiguities in communication, ensuring that everyone involved speaks the same language when discussing the domain. This shared understanding directly influences the accuracy and clarity of the software model, aligning it closely with the business domain.

Bounded context defines the boundaries within which a specific domain model and its associated ubiquitous language apply. These boundaries prevent overlaps or inconsistencies between different parts of a system, enabling teams to work independently within their assigned contexts. This...

How DDD changes the approach to the problem

DDD fundamentally transforms the approach to software development by placing the business domain at the heart of the development process. Traditional software development methodologies often start with technical considerations, such as data modeling, database design, or user interface wireframes.

While these aspects are essential, DDD shifts the focus from technical priorities to aligning software design with fundamental business concepts, resulting in more relevant, flexible, and maintainable systems.

DDD emphasized the importance of explicitly defining context to ensure the precise interpretation of an abstraction. It advocates for a mindset shift where the primary focus is the alignment between all the members of the team and avoiding misunderstanding. This is one of the primary ways DDD is used to change the approach to problem-solving. This common language is something shared between the stakeholders, domain experts, developers...

Summary

Since Evans’ 2003 book, Domain-Driven Design: Tackling Complexity in the Heart of Software, the software community has increasingly adopted the DDD approach. Evans’ emphasis on understanding and modeling the problem space before implementing technical solutions marked a significant shift from traditional methodologies, especially in refactoring.

This chapter highlights the evolution of DDD and its influence on refactoring practices. Key contributions include Nilsson’s practical applications, Greg Young’s CQRS pattern for complex domain logic, and the resurgence of DDD with microservices architecture. Vaughn Vernon’s work gave practical examples, while Alberto Brandolini’s EventStorming improved communication between domain experts and developers.

In conclusion, DDD transforms refactoring by prioritizing domain understanding and communication, leading to more intuitive, business-aligned, and resilient software solutions.

...
Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Learn how to modernize your system to make it as frictionless as possible
  • Gain hands-on experience in applying strategic and tactical patterns through real-world examples
  • Transform your architecture with practical guidance for seamless refactoring
  • Purchase of the print or Kindle book includes a free PDF eBook

Description

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.

Who is this book for?

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.

What you will learn

  • Find out how to recognize the boundaries of your system's components
  • Apply strategic patterns such as bounded contexts and ubiquitous language
  • Master tactical patterns for building aggregates and entities
  • Discover principal refactoring patterns and learn how to implement them
  • Identify pain points in a complex code base and address them
  • Explore event-driven architectures for component decoupling
  • Get skilled at writing tests that validate and maintain architectural integrity

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : May 16, 2025
Length: 324 pages
Edition : 1st
Language : English
ISBN-13 : 9781835889107
Category :

What do you get with a Packt Subscription?

Free for first 7 days. $24.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing

Product Details

Publication date : May 16, 2025
Length: 324 pages
Edition : 1st
Language : English
ISBN-13 : 9781835889107
Category :

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
$199.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just Mex$85 each
Feature tick icon Exclusive print discounts
$279.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just Mex$85 each
Feature tick icon Exclusive print discounts

Table of Contents

17 Chapters
Part 1: Why Use Domain-Driven Design to Tackle Complexity? Chevron down icon Chevron up icon
Evolution of Domain-Driven Design Chevron down icon Chevron up icon
Understanding Complexity: Problem and Solution Space Chevron down icon Chevron up icon
Strategic Patterns Chevron down icon Chevron up icon
Tactical Patterns Chevron down icon Chevron up icon
Part 2: Refactoring Legacy Systems Chevron down icon Chevron up icon
Introducing Refactoring Principles Chevron down icon Chevron up icon
Transitioning from Chaos Chevron down icon Chevron up icon
Integrating Events with CQRS Chevron down icon Chevron up icon
Refactoring the Database Chevron down icon Chevron up icon
DDD Patterns for Continuous Integration and Continuous Refactoring Chevron down icon Chevron up icon
Part 3: Moving from Monolith to Microservices Chevron down icon Chevron up icon
When and Why You Should Transition to a Microservices Architecture Chevron down icon Chevron up icon
Dealing with Events and Their Evolution Chevron down icon Chevron up icon
Orchestrating Complexity: Advanced Approaches to Business Processes Chevron down icon Chevron up icon
Other Books You May Enjoy Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Full star icon Full star icon 5
(2 Ratings)
5 star 100%
4 star 0%
3 star 0%
2 star 0%
1 star 0%
Thomas May 30, 2025
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Great background about the domain driven design. Great for people who are designing new software or have to refactor legacy code.
Subscriber review Packt
N/A Jul 28, 2025
Full star icon Full star icon Full star icon Full star icon Full star icon 5
Feefo Verified review Feefo
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

What is included in a Packt subscription? Chevron down icon Chevron up icon

A subscription provides you with full access to view all Packt and licnesed content online, this includes exclusive access to Early Access titles. Depending on the tier chosen you can also earn credits and discounts to use for owning content

How can I cancel my subscription? Chevron down icon Chevron up icon

To cancel your subscription with us simply go to the account page - found in the top right of the page or at https://subscription.packtpub.com/my-account/subscription - From here you will see the ‘cancel subscription’ button in the grey box with your subscription information in.

What are credits? Chevron down icon Chevron up icon

Credits can be earned from reading 40 section of any title within the payment cycle - a month starting from the day of subscription payment. You also earn a Credit every month if you subscribe to our annual or 18 month plans. Credits can be used to buy books DRM free, the same way that you would pay for a book. Your credits can be found in the subscription homepage - subscription.packtpub.com - clicking on ‘the my’ library dropdown and selecting ‘credits’.

What happens if an Early Access Course is cancelled? Chevron down icon Chevron up icon

Projects are rarely cancelled, but sometimes it's unavoidable. If an Early Access course is cancelled or excessively delayed, you can exchange your purchase for another course. For further details, please contact us here.

Where can I send feedback about an Early Access title? Chevron down icon Chevron up icon

If you have any feedback about the product you're reading, or Early Access in general, then please fill out a contact form here and we'll make sure the feedback gets to the right team. 

Can I download the code files for Early Access titles? Chevron down icon Chevron up icon

We try to ensure that all books in Early Access have code available to use, download, and fork on GitHub. This helps us be more agile in the development of the book, and helps keep the often changing code base of new versions and new technologies as up to date as possible. Unfortunately, however, there will be rare cases when it is not possible for us to have downloadable code samples available until publication.

When we publish the book, the code files will also be available to download from the Packt website.

How accurate is the publication date? Chevron down icon Chevron up icon

The publication date is as accurate as we can be at any point in the project. Unfortunately, delays can happen. Often those delays are out of our control, such as changes to the technology code base or delays in the tech release. We do our best to give you an accurate estimate of the publication date at any given time, and as more chapters are delivered, the more accurate the delivery date will become.

How will I know when new chapters are ready? Chevron down icon Chevron up icon

We'll let you know every time there has been an update to a course that you've bought in Early Access. You'll get an email to let you know there has been a new chapter, or a change to a previous chapter. The new chapters are automatically added to your account, so you can also check back there any time you're ready and download or read them online.

I am a Packt subscriber, do I get Early Access? Chevron down icon Chevron up icon

Yes, all Early Access content is fully available through your subscription. You will need to have a paid for or active trial subscription in order to access all titles.

How is Early Access delivered? Chevron down icon Chevron up icon

Early Access is currently only available as a PDF or through our online reader. As we make changes or add new chapters, the files in your Packt account will be updated so you can download them again or view them online immediately.

How do I buy Early Access content? Chevron down icon Chevron up icon

Early Access is a way of us getting our content to you quicker, but the method of buying the Early Access course is still the same. Just find the course you want to buy, go through the check-out steps, and you’ll get a confirmation email from us with information and a link to the relevant Early Access courses.

What is Early Access? Chevron down icon Chevron up icon

Keeping up to date with the latest technology is difficult; new versions, new frameworks, new techniques. This feature gives you a head-start to our content, as it's being created. With Early Access you'll receive each chapter as it's written, and get regular updates throughout the product's development, as well as the final course as soon as it's ready.We created Early Access as a means of giving you the information you need, as soon as it's available. As we go through the process of developing a course, 99% of it can be ready but we can't publish until that last 1% falls in to place. Early Access helps to unlock the potential of our content early, to help you start your learning when you need it most. You not only get access to every chapter as it's delivered, edited, and updated, but you'll also get the finalized, DRM-free product to download in any format you want when it's published. As a member of Packt, you'll also be eligible for our exclusive offers, including a free course every day, and discounts on new and popular titles.

Modal Close icon
Modal Close icon