How do you successfully scale a site from 2400 to 150,000+ visitors per day? Carefully, methodically – and if done right affordably. By using a proven framework. We used the these steps in planning the environment for a program launched by one of largest cities in the US. It literally saved them thousands but most importantly, they stayed online during their largest campaign.
We began the planning for this project months in advance and it was my pleasure to work with each person on this city’s IT team. Everyone brought good questions to the table, and momentum. If I could mention each individual I would. Hostek is under NDA so we can’t disclose which city, program or the individuals involved.
On the technical side, they were not stuck on a particular solution. This can’t be overstated, it made our conversation open and constructive.
For this project, however they wanted to make use of Highly Available – Virtual Private Servers & Load Balancing. They couldn’t be locked into a long term contract and needed one on one help planning the scalability.
4 Step Framework for Scaling:
DISCLAIMER: You MUST adjust for your particular situation. Your exact solution will likely be different.
1. Determine Outcome Goals
- How many visitors do we plan to serve?
- Example: 7000 concurrent visitors, for about 30 days.
- Where will visitors spend the bulk their time?
- Example: Home Page, Registration Page & Form Submission.
- What is the maximum acceptable page load (or response) time?
- What is the maximum CPU/Memory threshold for a single machine.
- Example: 40% CPU, 80% RAM.
2. Start Small & Test
If you’re already on a virtual server (VPS), you may be ready to test. If you’re on shared hosting, it’s probably not a good idea to load test. It may get your account suspended.
For our initial tests we chose one Web Server and one Database Server. We also implemented a virtual private network for fast web-db traffic.
Load Test Parameters: 1-minute in duration, two pages (home & registration), 2 second delay between pages, ramping from 0 to 700 concurrent users (approx 10% of full scale).
Load Testing Tools – For load testing I recommend two tools.
JMeter – This tool might seem intimidating at first, but it’s free. If you’re on a tight budget with lots of technical talent, this is a good fit. The downside is you’ll need another virtual server for JMeter and it can be memory intensive.
Blitz – This is about as easy as it can get. Plug in a URL or multiple URL’s and choose the duration & number of users. Has nice reporting. Downside, expensive.
3. Test at Scale
The small goals (step 2) to serve 700+ visitors were met. We knew based on our tests and for this particular campaign the bottleneck would likely be web-servers.
The full scale environment included a load balancer, 7 web servers, db server and failover db server.
A consideration for testing at scale – Depending on the maximum number of users you’re targeting, it may be best to test during off peak hours. Especially if testing your production environment.
4. Review Outcome & Adjust
If the full scale testing was successful, great. If not it may take additional tweaking to get things just right. We’re extra careful about providing full protection, redundancy and security. For example we provide Intrusion Prevention and Firewall protection for all VPS’s. So for this particular project testing we had to customize concurrent traffic limits.
The outcome of testing for the this major city project was a success. We were ready for their opening day, and they could depend on this solution to deliver.
Outline of Hosting Costs
Here’s a breakdown of the single server, small scale test, and full scale environment. This particular customer utilized ColdFusion which licensing costs I excluded because it’s very specific to their application. Their bandwidth averaged around 4Mbps at peak usage, we predetermined a specific price (not included) for them to prevent overspending.
Single Server (Hostek)
Windows Business VPS, Web Server and Microsoft SQL Web
Total: $159.95/month (Pre and post campaign)
Small Scale (Hostek)
Windows Business VPS, Web Server $99.95/month
Windows Business VPS with Microsoft SQL Web, Database Server $159.95/month
Total = $259.90 (Full month before their campaign for testing)
Full Scale Environment (Hostek)
7 x Windows Business VPS, Web Server $99.95/month
2 x Windows Business VPS with Microsoft SQL Web, Database Server $159.95/month
1 x Large Load balancer $99.95/month
1 x CloudFlare Business Plan $200/month
Total = $1319.50 (Full length of their campaign, 1 month)
Full Scale Price Comparison (RackSpace) 3/6/15
7 x General Purpose 1-8 with Windows $270.72/month
2 x 328.32 General Purpose 1-8 with Windows and SQL Web $328.32/month
1 x Load Balancer Instance, 7000 Concurrent Connections, 1 SSL Instance $814.40/month
1 x CloudFlare Business Plan $200/month
Total = $3608.44
All our VPS Packages include Managed Service with no extra cost. We also provide project consulting and even help you load test when it’s time. If you have project questions or are considering Virtual Private Servers. Setup a consultation and request to speak with me.