Today I would like you to "start from the scratch" when looking at your datacenter services!
Starting from the upper endpoint, the end-user of your service, I will go down and list the dependencies of the service from one step to the next.
Please notice that those dependencies are also true for any type of Cloud Computing services!
Dependencies:
- End-user (Person)
- The Request (Software)
- IP-address and Port (Software)
- Operating System (Software)
- A Virtual Machine (Software)
- Physical Systems (physical Hardware!)
Conclusion:
- Datacenter services should be high-availabe.
- The actual service is "software" only.
- The service sadly still depends on "hardware" (even if virtualized).
- ... and hardware will break at some point in time
Lessons learnt:
If any kind of the service configuration and/or data is "stored" locally on the physical systems (the Virtualization host) a failure of the hardware will also cause a failure (and possible outage) of the service.
About "physical hardware" in our Universe:
Everything (i really mean everything) in this Universe is constantly changing. The only thing which is not changing is that everything IS changing. This means every physical system will break at some point in time!
... or lets rephrase it via Murphy's law:
Rule 1) Don't trust faulty hardware.
Rule 2) All hardware is faulty.
Solution:
Very easy!
Make absolutely sure that no bit of data belonging to the service is stored locally on physical systems (Virtualization Hosts). Avoid binding any of your services (software only) to physical server (hardware)!
Enjoy,
Matt