Domain-Driven Design: Working with Legacy Projects

Discover the best ways to deliver new functionality and scalability of legacy code bases with this in-depth course on Domain-Driven Design: Working with Legacy Projects.
Course info
Rating
(30)
Level
Intermediate
Updated
Mar 27, 2018
Duration
3h 51m
Table of contents
Course Overview
Introduction
Introducing a Legacy Project
Creating a Bubble Context with a New Domain Model
Creating an Anticorruption Layer
Making the Bubble Autonomous by Introducing a Separate Data Storage
Promoting the Anticorruption Layer to Synchronizing Anticorruption Layer
Exploring Further Ways of Dealing with the Legacy Project
Description
Course info
Rating
(30)
Level
Intermediate
Updated
Mar 27, 2018
Duration
3h 51m
Description

As a programmer, you'd love to only work on green-field projects. However, you are most likely working on a legacy project right now, or will be at some point in the future. In this course, Domain-Driven Design: Working with Legacy Projects, you'll develop skills that will help you manage these legacy projects to deliver new functionality and keep the stakeholders happy. First, you'll learn how to make your way through the legacy code base by refactoring it one step at a time. Next, you'll explore how to handle rewrites, when to do that, and when it is better to keep the existing legacy code base instead. Finally, you'll discover techniques such as building an Anticorruption Layer, the Strangler pattern, and Branch by Abstraction pattern to deal with these code bases. By the end of this course, you'll have a solid understanding of the theory and practice of improving the functionality and scalability of legacy projects.

About the author
About the author

Vladimir Khorikov is a Microsoft MVP and has been professionally involved in software development for more than 10 years.

More from the author
CQRS in Practice
Intermediate
4h 22m
11 Oct 2018
Specification Pattern in C#
Intermediate
1h 27m
27 Jun 2017
More courses by Vladimir Khorikov
Section Introduction Transcripts
Section Introduction Transcripts

Course Overview
Hi, everyone. My name is Vladimir Khorikov and welcome to my course, Domain-Driven Design: Working with Legacy Projects. I am a domain-driven design evangelist and very excited to share this course with you. We programmers all want to work on green field projects; you're most likely working on a legacy project right now or will be at some point in the future; there is no way around it. Each green field project becomes someone else's legacy project someday, therefore it's critical to develop skills that will help you be productive in this area. In this course you will learn how to approach legacy code bases, how to handle rewrites, when to do that, and when it is better to keep the existing legacy code base instead. Some of the major topics that we will cover include using the anticorruption layer pattern, how to create a clean and maintainable domain model in the environment with an existing legacy code base, how to evolve your domain model using synchronizing anticorruption layer, and guidelines to consider before conducting a refactoring or a rewrite. By the end of this course, you will know how to be productive with a legacy code base even if it's a complete mess. Before beginning this course you should be familiar with the C# programming language. I hope you will join me on this journey to learn about domain-driven design and working with legacy projects here at Pluralsight.

Introducing a Legacy Project
Hi. My name is Vladimir Khorikov and this is the course about domain- driven design and working with legacy projects. In this module we will look at the existing legacy project. I will guide you through its problem domain and we will talk about the underlying code and the database.

Creating a Bubble Context with a New Domain Model
Hi. My name is Vladimir Khorikov and this the course about Domain- Driven design and working with legacy projects. In this module we will start working on the legacy project. We will introduce new functionality to it and in order to do that, we will create a clean bubble-bounded context that will be surrounded by an anticorruption layer later on.

Creating an Anticorruption Layer
Hi. My name is Vladimir Khorikov and this is the course about domain- driven design and working with legacy projects. In this module we will continue working on the new functionality for the legacy project. You will see the implementation of the anticorruption layer that will protect the bubble context from the outside world.

Making the Bubble Autonomous by Introducing a Separate Data Storage
Hi. My name is Vladimir Khorikov and this is the course about domain- driven design and working with legacy projects. In this module we will have yet another feature request, this time a more complicated one. It will require us to grow our bounded context into an autonomous bubble by introducing a separate data storage for it.

Promoting the Anticorruption Layer to Synchronizing Anticorruption Layer
Hi. My name is Vladimir Khorikov and this the course about domain- driven design and working with legacy projects. In this module we will be working on the anticorruption layer. We will promote it to become a synchronizing anticorruption layer within its own bounded context.

Exploring Further Ways of Dealing with the Legacy Project
Hi. My name is Vladimir Khorikov and this the course about domain- driven design and working with legacy projects. In this module we will explore other ways of dealing with legacy projects such as turning them into microservices and building a domain event channel on top of them.