Domain-Driven Design: Working with Legacy Projects

Domain-Driven Design: Working with Legacy Projects

English | MP4 | AVC 1280×720 | AAC 44KHz 2ch | 3h 51m | 771 MB

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.

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.

Table of Contents

Course Overview
1 Course Overview

Introduction
2 Getting Started
3 What Is a Legacy Project
4 Legacy Projects and Bad Code
5 Rewrite or Not
6 When a Rewrite Is Acceptable
7 Summary

Introducing a Legacy Project
8 Introduction
9 Legacy Project Introduction
10 Database Introduction
11 Recap – Database Introduction
12 Application Code Introduction
13 Summary

Creating a Bubble Context with a New Domain Model
14 Introduction
15 New Requirement
16 Refactoring Guidelines
17 Anticorruption Layer
18 Outlining the New Domain Model
19 Creating the Bubble Context
20 Translation Map
21 Identifying the Entry Point
22 Rethinking the Domain Model
23 Recap – Rethinking the Domain Model
24 Summary

Creating an Anticorruption Layer
25 Introduction
26 Creating the Anticorruption Layer
27 Strengthening the Domain Model with Proper Encapsulation
28 Recap – Creating the Anticorruption Layer
29 Implementing the New Requirement
30 Validation Errors vs. Preconditions
31 Recap – Implementing the New Requirement
32 Summary

Making the Bubble Autonomous by Introducing a Separate Data Storage
33 Introduction
34 New Requirement
35 Synchronizing the Anticorruption Layer
36 Creating a New Database
37 Adjusting the Domain Model and Persistence Logic
38 Recap – Creating a New Database
39 Identifying a New Entry Point for the Bubble
40 Implementing the New User Interface
41 Saving the Delivery to the Database
42 Recap – Introducing a New User Interface
43 Summary

Promoting the Anticorruption Layer to Synchronizing Anticorruption Layer
44 Introduction
45 Upgrading the Anticorruption Layer
46 Deciding on Data Ownership
47 Synchronization Strategies
48 Preparing the Databases
49 Creating the Orchestration
50 Synchronizing the Bubble with the Legacy
51 Recap – Building the Synchronizing Anticorruption Layer
52 Summary

Exploring Further Ways of Dealing with the Legacy Project
53 Introduction
54 When the Anticorruption Layer Is Not Enough
55 Exposing Legacy Assets as a Microservice
56 Building a Domain Event Channel
57 Resource List
58 Course Summary