Is that not what we're doing with distributed systems? A lot of the theory & practice of our field is how to elegantly cope with servers dying, data being corrupted, load limits of single machines, etc. We have a lot of constraints.
And there's no possible way not to have some leaky abstractions with this in front of us.