As a second thought, I think the move from .NET Framework to .NET 5+ could be considered a rewrite, and that has been rather successful on many fronts.
I've done it myself several times, but of course on projects small enough for a single developer. I also think the approach of rewriting bits and pieces over time works. You can identify pieces of the old code base that has well-defined behavior and can be split off with a well-defined interface between the new and old code. This has the added benefit of both needing to understand the old codebase and what you'd ideally want from a new codebase.
> "Why are there so many small services running? Surely we can shut down / delete/ merge together a bunch of them to clean things up"
It’s such a Weird fallacy since I feel like the entire point of Microservces is that there’s an inherit reason they’re microservices in the first place.
If you don’t know why, you investigate why. It feels far easier to make a monolith than a microservice.
many years ago I worked on the windows firewall team at microsoft. it was common practice to get to a certain milestone of a project, then purposely ditch the code and start from scratch. I haven't seen this practice since then, but that part of windows was one of the least hated-on at the time.
https://engineering.fb.com/2020/03/02/data-infrastructure/me...