2.2 Which Applications Should Be Manageable?
Not all Java applications and resources should be managed. Let's talk about some considerations for deciding whether or not you should enable your application to be managed by an external or third-party management system.
How extensive your application's manager is, and how well it is integrated with an enterprise management system, will depend on a number of different characteristics of your application. These include how critical your application is, how complex your application is, how scalable your application needs to be, what policy your corporation has on application management, and what your application's target market is.
2.2.1 Complex Applications
If your application has a very complex architecture or configuration, you may need a reasonably extensive and comprehensive management application. It doesn't necessarily need to be integrated with enterprise management systems, unless they are mission critical or if several of them might be executing simultaneously. J2EE application servers14 are a good example of mission-critical, complex applications that must have their own managers and be integrated with an enterprise management system.
2.2.2 High-Volume Applications
If your application will have a great many simultaneously executing installations in an enterprise, it may require distributed management support. Such applications are also excellent candidates for integration with the enterprise management system because they will benefit from both software distribution and centralized configuration. Because there will be so many images, operations staff will need topologies with status indicators and event management systems to distill the management information into events they can take action on.
2.2.3 Mission-Critical Applications
If your application is mission critical, you are going to need availability and performance management. Your application may be mission critical if it is an integral part of a business-critical system, like a database, router, application server, or name server. Mission-critical applications may be singletons or one of many instances. Your mission-critical application will need to have its own manager and be very well integrated with the enterprise management system. It must have very good availability and performance monitoring, with status reflected in a topology application.
2.2.4 Corporate Applications
If your application is being developed for use in a specific organization, corporate policies may dictate the degree of management support that you need to develop for the application. If the application is being developed for an organization that has invested in an enterprise management system, certain business policies may govern which applications are supported by the enterprise management system, and how extensive that support must be.
2.2.5 Applications with Expectant Customers
If your application is being developed to sell, you must consider the needs and expectations of your target market. Some applications have a target customer base that expects application management. These customers may buy only manageable applications. For example, owners of mainframes will expect applications that execute on those mainframes to be integrated with the management systems on those mainframes. If you are developing an application intended to execute on a mainframe, you must plan on enabling it to be well managed by the appropriate management application. If a large percentage of your target market uses a particular enterprise management system, then your application should be supported by the same system. If your target market expects that one or more enterprise managers will support your application, you will want to be sure that your application satisfies those expectations.
To summarize, if your application has a large, diverse target market, you may be forced to support multiple management systems on multiple platforms. This diversity can lead to significant, perhaps unsupportable, development costs. Developing and maintaining support for any one of the standard or proprietary management technologies requires you to tackle a steep learning curve and commit to a significant development effort. JMX mitigates your investment in management during application development by allowing you to concentrate on supporting one management technology: JMX. Multiple enterprise management systems can interact with the JMX agent in order to manage your application.