With a distributed application you should always know how components are deployed and configured, where things are on a network, how to add 100s or even 1000s of users and manage their accounts, be able to know if the application is working as expected, and be able to apply upgrades to remote sites, and many other issues all relating to how well you can manage your application. 

Managing an enterprise application is a major part of the total cost of ownership. Manageability addresses the question How do I efficiently deploy, configure, upgrade and monitor all local/remote components and services of my distributed application? Beyond this typical operational concerns (deploy, configure, upgrade and monitor), the business will benefit from the continued measurement of application health, including factors such as performance, resource consumption, work loads, and problem occurrences. 

That sections that follows attempt to answer the above question.

Designing for Manageability

Designing for manageability is all about providing infrastructure information so that the application and its important components can be monitored for corrective and preventive action. In general, designing for manageability requires three design features:

The following design recommendation describe how to provide manageability for a distributed application.

Use Windows Management Instrumentation (WMI)

WMI is an object-oriented interface to system management information. It is used to build tools that organize and manage system information so that administrators (or system managers) can monitor  system activities more closely. For example, with WMI, you can develop an application that sends you (or your group) an email if available memory drops below a specific threshold. With WMI, you can create simple event thresholds, create complex correlated thresholds, and define actions to be take when thresholds are exceeded.

The following shows some of the most common uses of WMI:

Note that the .NET Framework provides the System.Management.Instrumentation namespace which provides classes necessary to instrument the application for management, as well as expose management information and evens through WMI to potential consumers. These potential consumers can be Microsoft Application Center  or Microsoft Operations Manager.

Use Windows Servers

Windows Servers contain functionality that can greatly enhance application manageability. These features often extend beyond the application management to network infrastructure management as well.

Testing for Manageability

Testing for manageability is about ensuring that deployment, maintenance, and monitoring that have been designed into the application are actually working as expected. The following recommendations can be used to verify that you have created a manageable application:

Best Practices for Manageability

The following best practices are recommended for creating manageable applications: