High Availability Software for the Intel® NetStructureTM ZT 4901 Technical Product Specification 23
Host Application Software
The diagram shows that the host application’s need to understand the particular implementation
aspects of the platform’s system management is reduced by placing an intermediary layer that in
effect interfaces and translates only the system management information that the host application
cares about. The host application should usually care about only those issues that would degrade
performance or cease operations, such as:
Access to peripherals
System performance
Integrity of operations
The platform interface can be more than a wrapper around exposed system functionality: It could
act as a filter with a level of intelligence. The platform interface could be designed so that the
module could monitor system health and take proactive actions like initiating a handover, when
circumstances dictate. The platform interface might also be responsible for translating system-
particular messages and alerts into a normalized format that the application understands. The
events that a host application most likely requires notification of are:
Switchover situations
Warnings of system failures
The availability of system resources
All these events should be handled first by the platform interface and relayed to the host
application only when they might impede performance.
3.3 Development Issues
There are several issues that an application developer of a High Availability system architecture
must be aware of:
Redundancy
Graceful switchover
Hardened applications
Code modularity

3.3.1 Redundancy

Redundancy, or at least the awareness of redundancy, must be designed into the application. This
requires that data be constantly normalized. The term data could mean anything from state
information to an entire database. The ultimate goal is to have a system that appropriately responds
to a switchover while maintaining the integrity of all system data.
The trade-off for maintaining a high level of synchronization is required overhead. The amount of
bandwidth required for data normalization can be effectively reduced by:
Utilizing intelligent peripherals that internally maintain state
Creating innovative methods of database sharing through shared RAID architectures
These are just examples of data synchronization; there are numerous ways to share data that are
dependant on your actual implementation.