People want their servers, and, of course, the projects that are running on them, to be available all the time, and to bring maximum revenue at the same time.
In a real-life situation, it is more than clear that pure 100% availability is impossible to achieve, especially if a single hardware device is involved. There can be unpredicted factors that affect availability, either at software or hardware level.
Most common examples:
power failures
network device failures
sysadmin’s mistakes
Most of these factors can be excluded, or their impact can be reduced to a minimum, by a careful initial design and planning, and eliminating any SPOF (*single point of failure), whenever possible, of course.