Launching a new application can be a scary event. Many potential bottlenecks, although not readily apparent, can cause problems on the go-live day, or the first time there’s a surge in site traffic.
This is why Acquia's Professional Services offers the Launch Readiness engagement to ensure that a new site is not subject to unnecessary delays. We do this by identifying potential problems, and proposing clear and specific remediation and optimization measures during development.
That’s the big picture. Here’s a close-up view on how we do it.
The best way to understand how a website will perform at launch is to create a load test that accurately simulates real-world conditions.
Acquia analyzes existing traffic patterns to craft realistic load testing scenarios to test a site. The test scenarios are created in the common jMeter format and given to the customer at the conclusion of the engagement.
Acquia utilizes the excellent BlazeMeter SaaS service to send our standard test of 5,000 concurrent users from different geographic locations running through the scenarios.
If a website is newly developed, there may not be accurate data about how users are accessing the website. In this case, we work with the customer to make educated guesses based on the customer's understanding of the audience, and on patterns for similar websites.
Acquia analyses the site traffic to determine traffic patterns, including average and peak traffic conditions.
Test Scenario Creation
With the customer’s input, Acquia creates multiple test scenarios representing typical users navigating the website. We strive really hard to ensure each scenario is as “real world” as possible, and not just a simple request to a page. Most sites require around five test scenarios, but Acquia often conducts more, or less depending on the actual site and needs.
Load Test Plan
Acquia creates a load test plan that defines the test goals, execution details (duration, concurrent users, pages viewed, etc.), and success criteria.
Load Test Execution
Acquia translates the load test plan into scripts using the open source tool JMeter. Those scripts are run via the BlazeMeter cloud-testing service.
Simulated Production Environment
Acquia duplicates the existing production hardware (including load balancers, web servers, db servers, and file system servers) and sends the traffic generated by the load tests to this environment.
This environment is kept only during the duration of the engagement (the cost for this is included in the cost of the engagement).
During these load tests, several tools are used to analyze the performance of the servers and application code under load. These tools include XHProf, New Relic, Sumologic (for streaming log files), and Graphite (for visualizing Statsd).
Once problems are identified, Acquia works to remediate code and server bottlenecks and re-test as necessary. All application code changes will be placed into a single Git branch on Acquia Cloud, and the customer is expected to merge these changes into production after functional testing.
Preparing for an Engagement
Any successful testing strategy requires some preparation. Our consultants works with the following information before, or during, the engagement.
In order to properly size the test and create a metric of success, Acquia consultants identify what existing traffic looks like. If the site is already launched or replacing an existing site, this can be achieved via either direct access to, or exported reports from an analytics tool. If the site is completely new, Acquia works with the customer to prepare a list of metrics of traffic estimations to expect.
To identify code-based issues and provide remediation, Acquia consultants analyze the site’s code base. If the site is hosted with Acquia then we can request access to the account. If the code is stored on a hosted solution such as github or bitbucket, adding our consultants to the account is the easiest way to provide the needed access. If the application is self hosted and does not use a hosted repo, we can accept a zip or tar file of the code, however that limits our effectiveness in providing remediation.
The largest piece of making a load test successful is properly duplicating real world traffic. When creating our load tests we build scripts based around virtual users. These are often referred to as user stories, user flow, personas, or scenarios. Acquia works with each new customer to find out exactly what steps a user takes once they reach the customer’s site.
Is the marketing team designing the site to direct users to one area? Do most of the users come in to specific pages from a search engine? We take answers from questions like these and built them into an overall test plan. This test plan is then implemented via the load test script. Any preparation a client can do to generate these user flows ahead of time saves valuable time during the engagement.
The Acquia approach to launch readiness is based on years of experience. To be sure, it involves quite a few steps, but the goal is worth it: enabling new websites to achieve high performance, and avoid hidden bottlenecks, right from the start.