1. A distributed computer system, comprising: a processor; and an automated upgrade subsystem within a distributed service-based application, multiple instances of which execute on multiple physical computer systems within the distributed computer system, the automated upgrade subsystem comprising: an upgrade controller that displays an upgrade interface on a display device and that launches an automated upgrade in response to user input to an input feature of the upgrade interface by transmitting an initiate-upgrade request, for upgrading at least a portion of the distributed service-based application, to a selected upgrade service; and upgrade services, within components of the distributed service-based application, that upgrade themselves to newer versions of upgrade services and request component upgrades from any subordinate upgrade services within lower-level components of the distributed service-based application, each upgrade service: determining whether or not an upgrade of a component is possible, in response to receiving the initiate-upgrade request, when the component upgrade is possible, preparing and storing a snapshot having information sufficient to restore the component to a pre-upgrade version, when a snapshot has been successfully prepared, persistently storing the component upgrade, upgrading the component, and restarting the upgraded component, and when the component is successfully restarted, verifying functionality of the upgraded component.