Ask HN: I've built a front/back end performance profiler, is there a market?
I've developed a tool for doing multi-system profiling for web apps. You've got some JS code for the front-end of your app, some PHP/Python/Ruby/whatever on the back-end, and a database or two that actually store content. Maybe you've got a more elaborate setup (async task queues, a NoSQL document database, whatever). Your application isn't fast enough, and you're not sure how to speed it up.
The tools I've developed help solve this problem. There's a Firefox plugin and a number of backend plugins that do performance tracing and aggregate it all together. For a given user action, you can see how long everything involved took to serve it: which HTTP requests happened, which Javascript code executed, and which backend code executed, which database queries executed, etc. Once you've profiled it, you can drill down into the specific slow parts to figure out what to fix.
I've used it on a few open source projects to prove to myself that it works and I'm just getting ready to do a few case studies with local companies to demonstrate that it's actually industrially useful.
Right now it's not sufficiently polished to sell as a product, but it's good enough that I can consult with it: bring me in for a few days, I'll sit down with your team and help identify and fix the most significant bottlenecks in your application.
So here's my question for HN: Do you think there's a market for performance consulting like this?
13 comments
[ 3.7 ms ] story [ 52.2 ms ] threadFor consulting, though, I've built up a pile of expertise over the last two years. I've developed very strong skills for identifying and fixing performance problems, and this tool is just a way to make my life easier.
One possible approach I've considered is to open-source the tool. This has a few benefits and a few disadvantages:
- Benefit: this type of tool enters the broader developer eco-system. People start to recognize that focusing on single components is a bad way to solve performance problems.
- Benefit: other people can contribute to make the tool better.
- Con: competition. If other people are using the tool, then I end up with a fair bit more competition for the consulting services.
- Benefit: Releasing as open source automatically brands you an expert.
- Benefit: Far increased exposure
I wouldn't consider open sourcing it a net negative at all. You will get it out there, and as more "advanced" users start to use it and sing its praises, you will have more than enough to keep yourself busy helping out those who are too pressed for time or just have money to burn, or just can't figure it out on their own.
By not releasing it open source, you will have a much harder time branding yourself as a "proven" performance expert.
Compare these two "resumes":
"Original author and lead developer of the PerfPlus open source project, used by thousands of developers worldwide to benchmark and improve their applications."
vs.
"I'm a new college graduate with a few references and a custom tool I wrote that's worked well in a handful of cases."
I can tell you which one I'd be more willing to hire (if I had money :-)
The download-build-use cycle is pretty brutal at the moment, but shouldn't take all that much work to get it in better shape.
There are free Java and C++ profiling tools, that doesn't stop Rational Quantify or JProfiler from selling.
For what it's worth, I'd been looking for a tool like this and was excited to read this. Previously, I'd been mostly just looking at performance on the frontend using Firebug and whatnot, and I wanted to know if there were a way to figure out bottlenecks on one of my sites with AJAX. I couldn't figure out a good way to figure this out -- didn't seem to be a good tool to kinda bridge both frontend and backend -- at least that I could find.
Not sure if there's a market, but with so many AJAX apps these days and seemingly a lack of apps to measure performance bridging front and backend, seems like it may be promising. Have you talked with other web apps developers?
It sounds like your problem is exactly the problem I'm trying to solve; I started working on it because it was a problem I was having working industrially and couldn't find a good solution. Turns out there was a researcher at the local university that was also interested...
I've talked to other local web developers and have had mixed results. Some were pretty excited about it (and I'm getting ready to do some case studies with them for my thesis), but others didn't really seem to think it was something they needed.
More info: http://ajax.dynatrace.com/ajax/en/ They also have server-side tracing: http://ajax.dynatrace.com/ajax/en/content/upgrade-trace.aspx