Monday, July 23, 2012

Software Awareness

Summary:

Software Awareness is a coinage that I have developed thru the years as an Application Architect and Information Technology Director. Having developed ERP systems across several vertical markets and supported many software companies ERP systems I have always felt that software companies should do more to ensure a predictable outcome for their customers especially related to Application performance.
The starting point for Software Awareness lies into a three part observation of software development and its application. The first part focuses on Software Performance Awareness (SPA).

Problem:

In recent years most IT and Business organizations have focused on understanding Application Performance Monitoring (APM), Application Transaction Monitoring (ATM) and Business Activity Monitoring (BAM) to name a few. Software companies have built new methodologies in an attempt to understand and document “Application Behavioral Performance” (ABP) as well as defining new means to capture the “Application Transactional Path” (ATP) related to the software stack e.g. Client, Network, Application Servers and Database components. Keep in mind that these monitoring systems live outside of the Application and have their own infrastructure requirements. Subsequently and as observed, tracking the ATP may also lead to an impact on performance even if minimal.
Inherently the value proposition related to the aforementioned in many cases requires as much infrastructure as the software that is monitored, needless to say that the additional exponential cost in Infrastructure, systems and resources precludes many organizations from purchasing these products, even though Software as a Service (SaaS) model(s) may provide in some cases an attainable point of entry. Although the industry has matured, software companies who provide extensive options around Application monitoring and provide an in-depth outline of the effects still face challenges when asked to characterize the root cause. 
In addition Software companies have found themselves at odd in properly characterizing “Application Performance Issues (APU) vs. Application Processing Timeline (APT)” and meet customer expectations. As an example a business user may portray a 30 seconds transaction as unacceptable when in effect that transaction performs well within the boundaries of the application as set by the vendor.
Furthermore, entities who cannot afford Application monitoring tools must engage in the traditional support model that requires an endless and costly stream of resources for both business and vendor to track and resolve perceived performance issues.
For most software companies, the failure to address software performance relates to drop in software sales, maintenance revenue and loss of confidence in the offering.

Solution:

Software companies must develop new methodologies to successfully articulate “Software Awareness” within their products.  The primary objective would include the characterization of SPA for which would include developing Key Performance Indicators (KPI) to help visualize the Application state. As such these KPI would capture and report against the Infrastructure, Systems, Network and Storage.
Understanding the “Application Transactional Path” (ATP) will inherently lead to a better account of Application Processing Performance (APP).
 In addition, the development of Active Error Handling (AEH) specifically designed around the Application ensures that both business users and supporting entities actively participate in the performance, issue or bug resolution. As an example, most errors handling windows or pop-up do not make sense to business users as the content addresses engineers or developers, therefore why present them. Furthermore these errors do not provide the user with the actionable option of seamlessly reporting the error, for which by the time the supporting entity acknowledges the error, it no longer has the contextual understanding of what triggered the error and therefore inhibits the duplication of the issue. One option would require capturing these errors through a global error handler and reformatting them based on their source e.g. Client, Web Server, Database, etc…, presenting the user with a modal window showing a generic error message with the option to send an email to the supporting entity with detailed information around the error e.g. functions, procedures, users and environment variables, would provide a reproducible context thus accelerating issue resolution.

Steps:


                The following provide a high level outline related to “Software Performance Awareness”. Keep in mind that providing the business unit with a keen understanding of Application Behavioral Performance (ABP) will also lead to better forecasting and capacity planning thus ensuring unparalleled business continuity for the Business users. In addition, software companies can now use the data across all their customers to build Business Intelligence (BI) to predict Application failures.

As an example, the data collected may show that the use of IE 8.0 with JDK 1.5 precludes business users from running function X. Imagine adding the aforesaid to the Application Active Error Handling; we now have the option to notify the business users before the issue occurs. Software companies can also decide to provide optimum Client-Side configuration to supporting IT organization as an added feature, thus ensuring a predictable outcome and behavior across the software stack.





1.       Track performance KPI within the Application
a.       Client-Side
                                                               i.      Browser (Type (Mobile, Desktop), Manufacturer, Version, Service Pack, etc…)
                                                             ii.      Add-ons, Java, Flash, Active X
                                                            iii.      Hardware type, Tablet, Mobile, Desktop, Laptop
                                                           iv.      Hardware configuration (CPU, MEM, Storage type – SSD vs. Traditional)
b.      Server-Side
                                                               i.      Application Stack, e.g.; JBoss, Apache, Tomcat, IIS, et…
c.       Database
                                                               i.      Database version, service pack, settings
                                                             ii.      Hardware configuration
d.      Network
                                                               i.      Internal bandwidth
                                                             ii.      External bandwidth
                                                            iii.      Customer bandwidth
                                                           iv.      Filters
                                                             v.      Proxies
2.       Data Growth Forecasting
a.       Queries
                                                               i.      Understanding exponential growth of data ensures that queries are optimized for real-life scenario data set vs. demo data.
b.      Storage
                                                               i.      Drive speed (10k vs. 15K vs. SSD)
c.       Data Warehouse
                                                               i.      Data archiving ensures that the Application always meet performance expectations



Conclusion:

                Software companies should consider adding “Software Awareness” methodology behind their offering not only as a mean to ensure a predictable outcome to their customers but also as a mean to lessen the burden of Application performance support in terms of time and cost. In addition time and cost savings provided to supporting entities and business users may help develop new features or functions around the Software stack thus providing additional sales opportunities.

Acronyms translation:

·         Software Performance Awareness (SPA)
·         Application Performance Monitoring (APM)
·         Application Transaction Monitoring (ATM)
·         Business Activity Monitoring (BAM)
·         Application Transactional Path (ATP)
·         Application Behavioral Performance (ABP)
·         Application Performance Issues (APU)
·         Application Processing Timeline (APT)
·         Application Processing Performance (APP).
·         Active Error Handling (AEH)
·         Software as a Service (SaaS)
·         Key Performance Indicators (KPI)
 "The postings on this site are my own and don't necessarily represent IBM's positions, strategies or opinions."