I make a joke at my current startup (though I'm not really kidding) that my goal when designing systems is to make it last long enough that we can hire a team to rebuild the given system by the time it starts failing to meet its use case.
The other side of that is, of course, that I don't want to design systems that will last a long time. I always have a "EOL" threshold for when a system we've built needs to be rethought; 100 customers (we're a b2b SaaS so 100 would be a gigantic ARR), 10k users, 500 reports a day, etc.
Do rebuilds actually work once there's that much code though. The system gains so much inertia by the time you can hire a bunch of folks it's probably too late.
The other side of that is, of course, that I don't want to design systems that will last a long time. I always have a "EOL" threshold for when a system we've built needs to be rethought; 100 customers (we're a b2b SaaS so 100 would be a gigantic ARR), 10k users, 500 reports a day, etc.