Analysis of potential problems in migration of big existing codebases

What may be the problem during migration of big, stale existing codebases

Project Source Code

Get the project source code below, and follow along with the lesson material.

Download Project Source Code

To set up the project on your local machine, please follow the directions provided in the README.md file. If you run into any issues with running the project source code, then feel free to reach out to the author in the course's Discord channel.

This lesson preview is part of the Next-Level Angular Apps with NX course and can be unlocked immediately with a \newline Pro subscription or a single-time purchase. Already have access to this course? Log in here.

This video is available to students only
Unlock This Course

Get unlimited access to Next-Level Angular Apps with NX, plus 70+ \newline books, guides and courses with the \newline Pro subscription.

Thumbnail for the \newline course Next-Level Angular Apps with NX
  • [00:00 - 00:12] In this lesson, I'll describe the most problematic migration parts for a few popular application types. As we said in previous lesson, every application is unique and has problems that might not happen during other migrations.

    [00:13 - 00:25] We can predict some common problems if we categorize applications well. I'm going to split applications by size and organization structure, so number and size of teams that work on that application.

    [00:26 - 00:33] You may remember similar lesson from previous module. I want to remind you some problems that you may have during migration.

    [00:34 - 00:42] Then we will focus how to prepare a migration plan for each of these problems. So first case when you have one huge application.

    [00:43 - 00:52] And of course the biggest problem during the migration is the size of application. It's just huge, there's a lot of code and you have to migrate it.

    [00:53 - 01:02] The worst part of this case is that all your co-workers work on the same code. So the whole company will face the same issues if something goes wrong.

    [01:03 - 01:16] What's more, migration process will be blocking for the whole company. So when that huge app is maintained by one small team, it's easier to migrate it because you block only one team.

    [01:17 - 01:24] As a team you work with each other every day. And this fact helps to solve issues that may happen during migration.

    [01:25 - 01:35] And when you have one small team work and tasks can be easily distributed. It's a bit more complicated when you have multiple teams that maintain that huge application.

    [01:36 - 01:46] So it's very unlikely that all teams will take part during migration. This means that one team has to block development for some time and other teams will be forced to wait.

    [01:47 - 02:02] And it means that only small part of organization will have a very deep understanding of the immigration process. To sum up, when you have a huge application, the main problem you may have is coordination and communication between teams.

    [02:03 - 02:16] And my advice here is to focus on that coordination and communication between teams. The second case, when you have multiple small applications, the biggest problem is that you have to migrate them all.

    [02:17 - 02:25] Because applications are not too big, it should be quite easy to migrate them. But the problem may happen when you start extracting libraries.

    [02:26 - 02:36] So if you extract one library and then you want to reuse in other applications, you have multiple small applications. And you have to introduce change in all of them.

    [02:37 - 02:47] So basically it's a lot of work. When that multiple small applications are maintained by one small team, the biggest problem you may have is that you have only one team.

    [02:48 - 03:02] And during the migration, they cannot do anything else. So it's a problem for the whole organization that your team, the only one team, spends time migrating existing applications instead of coding features and fixing bugs.

    [03:03 - 03:13] This time, of course, should be considered as maintenance and it will boost the team later. When you have multiple teams and multiple small applications, it's a bit easier .

    [03:14 - 03:21] The only problem is to start the migration to migrate the first application. Then you can distribute work between teams.

    [03:22 - 03:39] And again, the biggest problem will be communication and coordination between teams. So you probably noticed, come on part, when you have one huge application or multiple small applications, when you have multiple teams, you always have to deal with communication and coordination.

    [03:40 - 03:54] And it's very, very important because if you don't know how to coordinate teams , some teams will be blocked during migration. When you have multiple big applications, as you may expect, this case is similar to the case of multiple small applications.

    [03:55 - 04:07] The difference between multiple big applications and multiple small applications is that every action will take more time to execute. Every issue, every back, everything will take more time to resolve.

    [04:08 - 04:18] And I believe that everyone knows that this kind of migration is not a piece of cake. It's pretty complex operation to do and it's way better to be well prepared.

    [04:19 - 04:29] No matter if your organization is built by one or multiple teams, you will have problems in this case. Sometimes you cannot solve complex problems with simple solutions.

    [04:30 - 04:36] So my advice here is to focus on preparation. So when you have one small application, I don't see any problem.

    [04:37 - 04:48] So no matter if you have one small team or multiple teams, small applications can be migrated in reasonable time. You can even use that automatic migration from previous lesson and it's done.

    [04:49 - 04:58] And you don't need to spend time on migrating it. The main goal of this lesson was to inform you to remind you about the problems that may happen during migration to NX.

    [04:59 - 05:17] It's important to know what may happen because it lets you prepare for the consequences of migration. And no matter if you have one huge application or multiple small applications, you will have some problems and it's easier to deal with them if you have some ideas what may be wrong with migration process.

    [05:18 - 05:29] In the next lesson, we will focus on preparing the migration plan. It's often skipped stage, but if you go with it, it will help you in long and problematic migrations.