Get Your Software off my Hardware, Fast!
by Mike Hustler Mike Hustler on

The Way Back Machine: APM Premise Software

At AppNeta there was a time before SaaS. It too was a time of great engineering and building cool stuff. Back then we were still doing application performance monitoring and analysis. We required that our customers install our application (application server + network agents + users' clients) on their hardware sitting within their infrastructure behind their firewall. In enterprise deployments this required a reasonably sized server machine or for smaller installations there was a single-user edition that could be installed on a technician's laptop. In any case users had to deal with the system requirements; installation utilities; the distribution of thick user interface clients to their user-base; database backups as well as scaling the system as their usage and data retention requirements grow.

Installers Suck

Anyone doing a quick analysis of our bug database and support cases would learn that installation, upgrade and other software management concerns were a clear source of pain.

As listed above, there were several reasons to get our software off of our customer's hardware and out of our customer's enterprise. There are of course all the business model changes from Premise to SaaS which are compelling and extremely interesting but I will leave that for topic to be discussed separately. From our developers' perspective, how exciting is it to remove variables involved with supporting software across the diversity of customer environments and platforms? Kudos to those who successfully and enjoyably build an installer that works seamlessly in all user environments and at the same time leaves the users with great first impressions. This requires significant investment.  At AppNeta, we decided instead focus our development effort and, more importantly, our customers' attention on the business features that truly help the end user understand how their application is performing and how their software and infrastructure is supporting it.

Start Small, Start Fast

So, starting with 2 developers and one tester using 2 week releases — we iterated quickly. The Java/Windows/SQL Server based application server was quickly forklifted to Amazon's AWS with EC2 being the primary service to give us a jump start.  At the same time, the thick MS Windows based client was thrown out and replaced with a web front end.  We started picking off the core and high value features from the premise product and building out the web front end.  In no time we had a Minimum Viable Product to start getting in front of real users and immediately started gaining interest of both new and existing customers.  This was the right pivot for AppNeta. Let's proceed.

Add Customers, Add Value, Continue to Learn

Now that we have made this pivot we had a lot to learn.  The business side of the company was quickly learning what it meant to be a SaaS company and making all the appropriate changes. In engineering we focused on building a service that brought the most value to our new SaaS customers.  New customers signed up but existing customers watched as our SaaS offering achieved value parity with our premise offering.  Our small development team quickly grew as all developers shifted to SaaS.  We assembled two teams working in parallel with half of the developers on each team.  Every 4 we were pushing out major releases and in no time, about 4 months, we achieve value parity with the premise product.

Most of our initial dev effort focused on developing a web front end while reusing as much of the business from the premise enterprise solution as possible. As we transitioned our customers and grew our customer base, it was now time to re-invest in the back end.

This Cloud thing is Going to Catch on

As the business continued to be redefined, in engineering we balanced adding new value with changes to the architecture of the infrastructure. The first major thing we did was to embrace Linux and migrate from SQL Server to Postgres. The next significant change was to our agent connection handling.  As a SaaS product with a growing customer base we needed the ability to increase the throughput, resiliency and scale of our agent connections. Using RabbitMQ and Tornado Amazon EC2 nodes, we are able to accomplish this.  Keeping agile and continuing to learn and iterate, we realized that our first cut of the web UI needed some work.  Iteration of it wasn't long before long we realized our top tier web design needed reworking.  We took some time and completely overhauled the UX design and web technologies employed - making the best use of HTML5, d3, jQuery and other JavaScript libraries.

This foundation set the stage for AppNeta to enter into new aspects of APM.

For example, FlowView with deep packet inspection gives our customers insight into both the applications and the users who are consuming network resources.  A huge amount of data is analyzed in real-time, stored and available to be queried on demand with fast response times.  Our Cloud based no-SQL solution is able to scale to provide all of the storage we could ever needed while keeping the response times manageable. Thanks to Amazon's DynamoDB and SQS we are able to provide real time application usage alerts with minimal service management required by us.

The Future

Since the early days of SaaS at AppNeta, we have continued to embrace new AWS services as required to meet our product needs.  Whether it is the scaling needs of TraceView, the connection management requirements of PathView, the custom application definitions in FlowView or the extreme data retention needs of all of four of our product modules, we continue to make the best use of emerging cloud technologies.  There is always something exciting and new for our development team learn and build.

Filed Under: Performance Monitoring

Tags: APM , application development , NPM , technology