That's a really good question. I would say yes, although in practice complex distributed designs often don't design or handle for all the failure scenarios.
Eg: cascading performance problems, related failure domains, etc...
Elegant designs are always best!