Expertise in enterprise scalability and system efficiency
2 Second Rule
According to Forrester, 47% of users expect a web page to load in 2 seconds or less. In fact, they found that 40% of consumers will wait no more than 3 seconds before abandoning the site.
Application response time is critical to both your user experience and your scalability. We have deep experience in benchmarking, profiling, and load testing applications to identify bottlenecks and address performance issues. We often find that the perception of performance is the issue, and not performance itself. We understand making applications feel fast, even when they are limited by real constraints.
Sometimes, making the application respond is an issue of optimizing the platform it's running on rather than the application itself. We've taken deep dives into hardware configuration parameters like the TCP queues, CPU affinity, and threading models as well as software configuration parameters like heap sizes, pool sizes, and caching that drastically affect the performance and "feel" of applications. We can help you optimize your entire platform to get the most from your hardware and software investments.
Getting Out Of Your Own Way
You may find that code analysis is what you need to get your application performing where you think it should be. We have found that many performance issues occur due to simple interactions between code segments that create undesirable performance and expose bottlenecks. Have you profiled your codebase? Profiled your query stream? Monitored for locks on shared resources? Evaluated the uniqueness of your cache keys? We can help you do these things as well as discuss options available to instrument your code with a custom profiler to help tracking code change impacts between releases.
Remember all the design work you put into normalizing your database? Is fully normalized the best solution? And the time spent indexing all the relevant fields and tuning queries to run optimally in isolation? You probably weren't counting on a developer nesting that query in a loop that runs 100 times per page load. Or the inexplicable locking that's occurring while you try to read an item record to show the customer. Maybe you can afford to run the queries in something lower than a serializable isolation level.
These are things we've seen many times before. We have experience observing the system as a whole and identifying problems caused by cross-discipline interactions, such as the abuse of transaction isolation levels by a developer, or the assumption that a normalized database would offer the performance required by a particular application. We can help you identify and explain why systems aren't performing as you expect, as well as offer solutions to improve performance and stability.
The Right Tool for the Job
A "one size fits all" approach is not always appropriate when it comes to technology. For example, comScore now reports that over 50% of all traffic on retail websites comes from mobile devices. This has driven many retailers to implement a responsive design approach for their web presence. For many sites, they have taken a technical approach with the implementation results in a violation of the 2 Second Rule. A lot of the time mobile devices do not have similar bandwidth nor do they possess the processing power of their desktop counterparts. This can result in slow experiences for users due to things like the excessive amount of complex logic not needed on the mobile experience, heavy pages due to non-optimized (or sometimes not viewable) assets, and the list goes on. There are technical solutions available today that allows the site to have a single URL structure while at the same time having code that is completely specific and tuned for optimal experiences on mobile devices.
The Need to Prepare and Monitor
Like many other facets of life, preparation is a key to success. Need to test performance and scalability at a bigger level? Like planet Earth big. We have experience with several load test tools, such as JMeter and Grinder, as well as several of the big load test service providers like WebMetrics, Keynote, and Gomez. We've been up in the middle of the night more times that we care to remember in order to observe and record the behavior of applications during an onslaught of globally generated traffic. Preparation for and reactions to the tests are critical in gaining the most out of your load testing investment.
After all of the prerequisite preparation there is still is the need to monitor you application in the proverbial wild. We have experience with application performance monitoring services like New Relic and Appneta. These services, when configured properly, can not only tell you application response times but also provide the detail of what goes into those times. These services can alert on and provide important details of things like volume/detail/response time of calls to external services, volume/detail/response time of database queries, and can even provide trace data of things far down the application stack.