One of the services I offer is performance consulting. Does it seem like your Rails application is slower than it used to be? Do you have unexplained slow periods? Is your app much faster during off peak periods?
These problems are all solvable – but most developers do not have specific performance experience. I do – I specialize in speeding up database applications, and the odds are good that whatever your problem is, I’ve already seen it.
Of course, whatever problems you currently have is only part of the picture – you also need to plan for the future. What if your app “takes off” – doubling or tripling your userbase in a short period of time? Are you prepared? Do you have a set of performance monitoring tools in place to solve unexpected performance issues?
That’s one of the things I focus on in my practice: putting tools in place to keep performance problems at bay. This typically falls into two categories: the first is production performance monitoring – making sure that your users experience smooth performance and quickly diagnosing the issue if they don’t. There are a number of tools I recommend for doing that.
The second category, though, is development performance tools – because developers often work in test environments with a small data set, they don’t always realize when they are writing inefficient, poorly performing code. However, there are tools available that can help developers keep a close eye on their application performance – a “dashboard” showing the number of queries per page, the amount of data transferred to the database, etc.
A page may use, for example, two hundred queries (due to an N+1 problem, etc) – but if a developers machine is fast, and lightly loaded (no other users,) he may never notice. When this page gets into the real world, though – on a server with a large data set and many, many other users – this may be quite poorly performing indeed.
As a result, it’s important to have tools in place to proactively monitor performance – so that you are solving Rails performance problems during development, not when your code is in production.
How I can help
I’ve got a few different ways I can help you. First, I offer consulting packages.
For example, we could do a fixed-fee package where I review your code for performance problems, examine your database configuration, examine logs, and write up a consulting report – this report would outline 1) problems you face currently, 2) problems you may face in the future, and 3) how to establish a base of solid performance practices, like monitoring tools and libraries.
Alternatively, a more extensive package could include onsite visits and/or telephone interviews – depending on where you are in the development process, of course. In other cases, I can do a report focusing exclusively on your current problems – showing how to solve particular issues that you currently face, like a slow query or page.
Secondly, I’m also available for implementation work – if you want me to come in and speed up a particular feature, I can do that. I adjust to new codesets quickly, and I focus on producing solutions that are maintainable by your current team or by future developers. Some outside consultants use highly specific, unfamilar technology – leaving behind what are sometimes called “alien artifacts”, sections of the system that are written in a drastically different style and manner; I try very hard to avoid that, so whatever I do for you will be a cohesive, coherent part of your existing sytem.
Give me a call at (603)-574-4766, and we can get started right away.