Somebody has to write the code that handles the failure. You don't get this for free. Creating a system that can handle outages of arbitrary nodes is not an easy task.
Yeah, but that team of solid systems/backend developers would exist whether these companies paid a horde of "reboot button mashers" a pittance or a (smaller) horde of solid application code programmers a lot more. So in the end, even if the backend code has to be solid the middle tier and frontend code can be pure crap, and the company saves money by spending just enough on the solid systems programmers and then practically nothing on what amounts to internal tier 1 support.