Availability Guide for Application Design
What Is Application Availability?
Availability Guide for Application Design—525637-004
1-20
Provide Application Performance Data
Refer to Section 8, Instrumenting an Application for Availability, for more information.
Provide Application Performance Data
In order to establish the costs of downtime or the costs of running a system whose
performance is degraded, it is useful to maintain information from which a measure of
application activity can be obtained. For example, a count of transactions by minute
and day of the week is necessary if you need to establish the number of transactions
lost by a given outage. Saving timestamps in an audit trail of transactions would be one
way of preserving this information.
The Measure product provides another way of obtaining application performance data.
You can use it to keep counts of application activities; for example, you can count the
number of transactions that occur. Or you can use the Measure product to measure the
time that a resource is in use; for example, you can establish how much time your
application spends in transaction mode.
Section 8, Instrumenting an Application for Availability, provides some information on
the Measure product. Refer to the Measure Reference Manual for details.
Alternatively, you can use the Host Resources Management Information Base (MIB) of
SNMP to provide your application with such attributes for managing servers as
processor utilization, attached devices, and running processes. Refer to the SNMP
Manager Programmer’s Guide for details.
Think About Protection From Coding Errors
The hardware and software design of NonStop systems and appropriate design of the
application go a long way toward keeping an application running. The effects of
transient errors in the program are minimized. However, fault-tolerant design does not
protect you against most deterministic errors in your application program. Neither does
it protect you against every transient error. For an application to be continuously
available, you still need to ensure that the code is as free from defects as possible.
Several techniques that can help are available. These techniques are simply good
software engineering practice:
•
Using reusable program modules
•
Establishing a design methodology for writing robust code
•
Determining the right way to respond to errors and whom to inform
•
Establishing a development methodology leading to online testing of the entire
application
Section 9, Minimizing Programming Errors, provides some useful guidelines.