Categories Company News

Stacks on Stacks on Stacks: an Intern’s Reflection

AppNeta no longer blogs on DevOps topics like this one.

Feel free to enjoy it, and check out what we can do for monitoring end user experience of the apps you use to drive your business at www.appneta.com.

Hi everyone. I’m Charlie Harrison, one of TraceView’s two summer interns hired this year. As the Boston mornings get cooler, my time working on Appneta’s TraceView sadly nears its end. This tragic time is brightened only by some rad new features, and an amazing experience to look back on! I had a great time writing some customer facing code this summer, and thought I’d share a couple of my favorite projects.

Instrumentation Health

Instrumentation Health was my first large scale project, and provided some unique challenges. At a broad level, we wanted anyone using TraceView to easily see what software needed updating: the “health” of their instrumentation. We continually issue updates, and we want you to be on the bleeding edge! Your web app will thank you.

In order to get the page just right, a couple cogs had to fall in place. Every instrumentated layer sends us version information, essentially a tiny trace, on initialization. Your host’s tracelyzer sends these _Init messages, as we call them, and they are processed and stored in our central Cassandra cluster for easy retrieval. Unfortunately, that’s not where the story ends; what use is a huge list of host/layer versions if they aren’t separated by app? And what about inactive hosts? Most people don’t want to see auto-scaled hosts they spun up months ago that haven’t traced in weeks. By matching active host/layer pairs by app to these _Init messages, the page became less cluttered and far more useful.

The cherry on the cake though, and my all time favorite feature of Instrumentation Health, is the small release date next to deprecated instrumentation. A new MySQL table was built and backfilled with instrumentation history solely for the purpose of showing you how old your out of date installations are. It is my strong hope that this is incentive enough to update! Don’t make us beg, because I built that in too. Whenever we add new instrumentation, there’s an option to mass notify all customers who aren’t up to date. One press of a button and you’ll get an in-app notification directing you to Instrumentation Health. Stay updated, and keep your servers healthy!

Saved Traces

Data retention is hard. Really hard! Fortunately, I was hired this summer to solve all your data retention needs. Normally, your traces would be saved for ten days, only to be purged by our “tidyworker,” whose innocent name belies its destructive purpose. For data hoarding folk this is not ideal; what if something truly amazing slips out of the short lived window? Now, if you so choose, a set of your hand picked traces can live indefinitely in the cloud via Amazon S3! All you need to do to save one is to press the “save” button on any trace details page, and it will show up in a handy, sortable interface.

Never again will you have to wave a tearful goodbye to that interesting trace that wound its way through your app, taking seconds to respond. Now it can live forever in your favorite issue tracker!

Overall I had a blast this summer. Working with the TraceView team was an eye opening experience. I’ve never worked in an office environment before, so the extremely flexible hours held by the engineers originally threw me off guard. There is an immense amount of trust that goes on when employees are allowed to come to work at noon, or work from home. That kind of freedom only works when everyone cares about the product and does their due diligence. I am consistently impressed with the sheer amount of effort everyone here puts into the product.
It’s been a memorable summer. From goofing around on Hipchat to debugging minified Javascript during a release, every day has been fun with new and interesting challenges. I truly hit the entire stack. I’ve hacked Javascript, TBone, and CSS while still banging out Pylons controllers and inspecting MySQL shard tables. TraceView is a complex system with many moving parts, and I’ve loved contributing to it.

Team AppNeta: