Review: iSpheres Halo 4by Drew Falkman
SummaryIf anyone hasn't heard yet, there is a new TLA (Three Letter Acronym) in the J2EE development world: BAM. BAM is short for Business Activity Monitoring, and at the core of BAM is a new breed of Event Servers, essentially application servers whose sole responsibility is to monitor business activity in real time and perform functions when triggered by certain events. The key to this emerging market (iSpheres is only one vendor, albeit a forerunner in the field, creating BAM management software) is the growing complexity of the enterprise application space. Service-oriented applications, complex RDBMS systems and other activities are increasingly difficult to keep tabs on, and developing singular event listeners for these complex data systems is out of the question. IntroductionThe overall operation of Halo is basically two macro processes: information is collected from sources, evaluated and stored in the Halo server, and then this information is evaluated, and if criteria are met, notifies subscribers or executes application logic. The business prospect behind Halo is simple: in today's heterogeneous and connected enterprises all kinds of crucial events are happening in real-time. As all of this data is shared and as computing systems and people interact on a daily basis, certain windows of opportunities arise. Using the event server model, BAM applications can be developed to monitor events and trigger reactions, whether that be to notify someone on the sales team, initiate a work flow or dynamically trigger business logic. It all seems to make quite a bit of sense. It seems to me there are virtually unlimited possibilities for BAM applications.
Introduction to Halo Event ComponentsIn order to understand how Halo works, it is perhaps best to analyze the types of components that can be implemented within it. Just as J2EE applications are made up of their components: servlets, JSPs, EJBs, etc., so are BAM applications made up of a set of components. There are four types:
SensorsA number of pre-built sensors are included with the Halo server. These pre-built sensors include database sensors to monitor JDBC datasources, middleware sensors to monitor messages queues such as JMS, text sensors to parse any text-based information such as e-mails, Web sensors to monitor HTTP sources such as Web pages or RSS feeds and feedback sensors that work internally within the Halo server.
Event ProcessorsFour basic processor types will handle most BAM applications. Parametric event processors handle database queries into event-enabled databases. Time-series event processors tracks statistics from multiple input streams. Schedule-based event processors are stored in Halo's repository to enable event execution at intervals. Finally, on-demand event processors will generate events based on external triggers.
RespondersResponders often initiate complex, multi-step processes such as work flows and transactional queries. There are three basic types that are included with Halo. Notification responders notify subscribers when a particular event cue has occurred. Notification can be in the form of: messaging (e.g. JMS), email, Web, SMS or Excel updates. Execution responders simply invoke application logic when triggered. Cascading responders publish information back to the Halo server for evaluation.
Installing HaloHalo currently requires Solaris 2.8 and up or Windows 2000 SP3 and up. The Halo database uses Oracle 8.16 and 8.17 (with Phased Event Detection, see product docs for more information on this, also note IBM DB2 support may be added in future versions) or any other JDBC-compliant RDBMS if Phased Event Detection is not needed. A 1.4.x JDK must be installed (Halo currently also ships with one) and BEA or a JMS-compliant J2EE server are needed for application server integration. Installation on Windows was smooth, double-click the installer file and follow the wizard. When completed, the Halo server needs to be started, then you are up and running. Solaris installation looks to be equally simple using a command line install.
Using HaloThere are two ways to use Halo: using the console (see Figure 1) or programmatically using the API. Everything in Halo is basically a processor or a lookup. A processor simply does something, whether that is to notify someone or something about an event occurrence or it is to poll a JMS queue. A lookup is the consumption of data, from a database or text file or anything else. To create a BAM application, a developer must create a series if processors and lookups that monitor the event, consume and analyze the results and issue a response. Creating new processors using the console was actually quite simple, assuming one understands what the different types of processors are (e.g. Heartbeat, Gobbler, JMSProcessor, etc.). Once you select the type of processor you wish to add, a new screen will appear containing the necessary information for the type of processor you wish to add. For example, the Heartbeat processor will require an entry as to how frequently it should execute (seconds, hours, days, etc.). Lookups, such as would be used to query Web/XML or database information, are equally simple, select from the three types of lookups and enter the appropriate information. As simple as this interface is, it seems to be a somewhat effective way for setting up and deploying basic pre-built event processors.
Of course for most enterprises and event projects, a greater amount of customization will be necessary. This is where the API can be used. Overall, I found the API quite straightforward. Creating processors and lookups are simply done by creating instances of the relevant processor or lookup class, then interacting with their methods and properties. Additionally, the API allows for the creating of custom processors, to enable further customization. The developer documentation was refreshingly good.
Administering HaloWithout getting into too great a detail, I should mention that the console will also allow for administration of the Halo server. Halo is built for an enterprise environment, and as such provides operational statistics and performance scalability. I had no performance issues whatsoever in running Halo on my small test machine, though I admittedly didn't have numerous processors and complex BAM applications running.
Real-World BAMmingAs a final note, and in case anyone hasn't quite gotten the picture of how useful BAM applications can be, I should mention a few possible applications:
ConclusionOverall, I was impressed with Halo. The overall idea of event- based applications and the concept of an event server seems like a model worthy of pursuing. In addition, at version 4 Halo seems to be fairly well evolved from both an administrator and developer standpoint. I would recommend most enterprises at least evaluate the possibility of employing event-based applications.
Drew Falkman is the author of the JRun Web Application Construction Kit and co- author (with Ben Forta) of Reality ColdFusion: J2EE Integration, both published by Macromedia Press. Over the past 6 years, Drew has developed over 150 Web applications in all sizes using ColdFusion and Java. Currently Drew consults, speaks at events, writes for numerous publications, and teaches courses at Portland State University. His latest project through his consulting company, Veraison LLC, was a real-time cattle auction using Flash Remoting and Flash Communication Server. In addition, Drew is a member of Team Macromedia, a certified ColdFusion Developer and a certified Macromedia instructor.
|