For example, switching to expensive SMP servers will not boost performance if the application isn't configured to take advantage of the parallelism that such servers offer. Spending money on pricey new hardware is more likely to mask availability problems than fix them. The problems often reappear when the system stress increases, resulting in failure at times of peak load, when the cost of system downtime is most severe. Adding hardware also adds complexity to a systems environment, increasing risks and cost. Alternatively, IT organizations often try to improve application reliability and performance during the development process, adding developers, debugging tools and testing cycles.
Every release is a gamble, with everyone hoping that no unexpected problems occur.
Finally, systems management tools are often billed as providing availability management, but their focus is on reporting and managing. They don't automatically speed up programs or stop them from crashing. At the end of the day, software will invariably be imperfect. Because unanticipated problems always occur, there needs to be a solution to protect the availability of existing deployed software running on existing hardware. One important safety net is to protect applications with an automatic memory manager.