NGINX Plus Increases Automation and Accelerates Application Deployment at MidwayUSA

Speeding Data Delivery with Caching and Making A/B Testing Easy

 

Logo for MidwayUSA using NGINX Plus case study - load balancing, caching, A/B testing, logging, and more

 

Situation

Founded in 1977, MidwayUSA is a successful ecommerce retailer that sells Just About Everything® for shooting, hunting, and the outdoors. With more than 100,000 products and over 1.2 million active customers, MidwayUSA is a global leader in its market.

MidwayUSA has a strong focus company‑wide on providing excellence for its customers, including a feature‑rich, user‑friendly, and fast website experience. It’s the web operations team’s responsibility to deliver the website with excellence. Until about four years ago, MidwayUSA used Cisco ACE for load balancing its web traffic, but the ACE product line was reaching end of life. At the same time, the team at MidwayUSA realized that to provide the best ecommerce experience for their customers, their load balancer needed more flexible configuration and automation capabilities.

“We had been pretty happy with our former load balancer, but we were definitely ready to move. We were starting to get to the point where automation was becoming a struggle for us. We also wanted more flexibility, including consistency across all our environments, including test. With our old hardware load balancer, we didn’t have a test device that we could use. Instead we had to create special logic, which meant our test environment wasn’t the same as production. We needed more flexibility and easier automation, so we began looking for a replacement load balancing solution,” explains Drew Turner, web operations manager at MidwayUSA.

Solution

MidwayUSA’s web operations team evaluated traditional hardware load balancers like F5 as well as software load balancers like HAProxy and NGINX Plus. MidwayUSA ultimately chose NGINX Plus for its combination of price, performance, features, and technical support.

“We looked at traditional vendors, as well as other solutions that peers in our industry are using, and NGINX Plus kept coming up. When we evaluated all the feature sets from our top three or four load balancing choices, we found that NGINX Plus outweighed everyone else. NGINX Plus has SSL offloading built in, great support from engineers who can add in the extra features we need and help us at 10 PM if we’re having a problem, and all of the feature sets we were looking for. On top of that, it’s very easy to get started with NGINX Plus, and the investment is significantly lower than hardware load balancers,” notes Turner.

NGINX Plus is a complete application delivery solution that is built on open source NGINX, the world’s most popular open source web server and reverse proxy for high‑traffic sites, today powering the majority of the 100,000 busiest websites in the world. NGINX Plus adds award‑winning technical support and enterprise‑ready features for advanced load balancing, web and mobile acceleration, application security, monitoring, and management to help ensure flawless application delivery.

The process of migrating from Cisco ACE to NGINX Plus was smooth. “Moving to NGINX Plus was easy. We stood up our NGINX Plus instances, configured them, then we modified where the firewall pointed to for the NAT to do its conversion. There was some build time, lots of testing; and then the conversion process was just changing where the network address pointed to,” notes Turner.

When we evaluated all the feature sets from our top three or four load balancing choices, we found that NGINX Plus outweighed everyone else. NGINX Plus has SSL offloading built in, great support from engineers who can add in the extra features we need and help us at 10 PM if we’re having a problem, and all of the feature sets we were looking for. On top of that, it’s very easy to get started with NGINX Plus, and the investment is significantly lower than hardware load balancers.
– Drew Turner, Web Operations Manager at MidwayUSA

Implementation

MidwayUSA uses NGINX Plus as a load balancer throughout its multitiered architecture, including the web, application, and database layers. Each tier includes separate instances of NGINX Plus in a paired active‑passive configuration for high availability, resulting in a total of six instances. Another three instances are used for development.

At the entry point to its application, MidwayUSA uses NGINX Plus as a frontend load balancer to handle incoming web traffic. NGINX Plus load balances traffic to the web server tier, which currently uses Microsoft IIS. At the application tier (service layer), MidwayUSA uses another activ‑passive pair of NGINX Plus instances in almost the same configuration to route traffic to the backend ecommerce application which serves functions such as checkout, product pages, and search, and is written in C# using ASP.NET. At the database tier, NGINX Plus load balances the Microsoft SQL databases for the website. Having separate instances of NGINX Plus throughout the architecture makes it easy for the web operations team at MidwayUSA to achieve its goals.

“I’m a really big fan of being very modular. We could do a lot of this stuff with just one instance of NGINX Plus. But I like to have NGINX Plus deployed in separate demilitarized zones, with separate virtualized instances on each layer. It makes it easier when I want to spin up or down separate layers because I don’t have to worry about moving everything at once,” explains Turner.

Besides implementing NGINX Plus for load balancing and high availability, MidwayUSA also takes advantage of NGINX Plus’ caching and A/B testing features.

Results

Substantially Less Time Spent on Site Maintenance

MidwayUSA’s web operations team enjoys the clean, modular design of NGINX Plus, which makes it much easier to maintain and work with on a daily basis compared to its former hardware load balancers, and improves productivity as well.

“NGINX Plus is super easy to configure, which is very important for us. It’s extremely modular, so we can share components across various sites. For instance, we share our proxy.conf configuration file over three of our frontend sites. It’s really nice to make one change and have it work for all three sites,” says Turner. “From a configuration standpoint, there’s certainly been a significant reduction in our maintenance activities.”

Instead of having one giant configuration file, NGINX Plus supports modular configuration files separated by function, improving readability and maintainability. The simplified configuration management, along with automation capabilities, has made the lives of the operations team much easier. Turner notes, “We’re spending substantially less time on website management than with Cisco ACE. With NGINX Plus, we’re able to spin things up and test them ridiculously fast.”

Increasing Agility through Automation

“The web operations team likes to build fast. Using NGINX Plus and Chef, we’re able to get machines up much, much faster than with hardware appliances,” says Turner. “And because NGINX Plus is software, we’re able to do a lot with Infrastructure as Code that we couldn’t do before.”

NGINX Plus has enabled MidwayUSA to increase infrastructure automation, which has shortened development cycles and improved agility. Using NGINX Plus with Chef automation, deploying changes to applications is as simple as clicking a button. Rather than deploying changes to production servers, MidwayUSA quickly spins up new NGINX Plus instances on staging servers using Chef. The staging deployment is then tested. If everything checks out, the production environment is changed to point to the staging servers, and NGINX Plus is reloaded. The result is a quick, “hitless” transition with minimal risk and no downtime.

MidwayUSA ecommerce website runs on NGINX Plus load balancer and cache

Better Response Times with Caching

“The caching capabilities of NGINX Plus are beyond anything we used before. With NGINX Plus there’s the ability to cache anything and everything in super high detail,” says Turner.

The incredibly granular level of caching made possible by NGINX Plus has increased website performance and responsiveness. Turner notes: “We’ve seen a really nice improvement in site performance from caching requests between our web and application layer. Cached responses are around 10 milliseconds, whereas uncached requests that go to database take on average 100 milliseconds, so we’re able to shave a ton of time off those requests.”

Besides caching internal application requests, MidwayUSA also uses NGINX Plus to cache results from its search bar, which is powered by a third‑party provider. Cached search results are returned in 10 to 15 milliseconds, whereas queries that go to the search provider can take up to 700 milliseconds – a dramatic difference.

Perhaps most remarkably, MidwayUSA has found that its caching performance gains come at a minimal impact on CPU.

Turner explains, “We benchmarked NGINX Plus against Squid, a dedicated caching proxy. For the same workload, Squid would use 30% CPU whereas NGINX Plus used just 4%.”

Superior Logging and Monitoring

With the extensive logging capabilities of NGINX Plus, MidwayUSA can better monitor its operations, both with complementary third‑party software and with the NGINX Plus live activity monitoring dashboard.

“Because the logging is so capable in NGINX Plus, we can look at in‑depth statistics such as response times, cache request rates, and cache hit ratios,” explains Turner. “We do a lot of our monitoring with Splunk and we basically grab the logs from NGINX Plus to do that. With NGINX Plus we can get a lot more information a lot easier than we could with other solutions. We’re also big fans of the NGINX Plus dashboard, which has incorporated suggestions from our team.”

NGINX plus live activity monitoring dashboard image

Remarkably Easy A/B testing

NGINX Plus’ sophisticated traffic routing features have enabled MidwayUSA to easily conduct A/B testing to see the effects of changes to the website.

After easily spinning up and deploying a test machine with the change to be tested, MidwayUSA can direct a percentage of traffic to the new version of the website by changing the load‑balancing parameters of NGINX Plus.

“When you make a large change to the website, such as a new checkout process, if you deliver that to everyone, you impact 100% of customers. With A/B testing using NGINX Plus, we can set it so that a small percentage of customers go through the new process. Then we can evaluate metrics that are important to us and decide whether or not to fully deploy the change. For example, if we find that the conversion rate is significantly lower versus the control group, we’ve only impacted a small percentage of our customers and can easily roll things back. A/B testing with NGINX Plus helps us mitigate risks and improve our service level.”

A/B testing has been critical for deploying large‑scale changes, but because of the ease of which it can now be done, MidwayUSA is able to test even smaller changes, allowing it to fine‑tune the user experience.

“We used to do our A/B testing through Sitespect, and that helped us test some of our large‑scale changes, but it’s so much faster and easier to conduct A/B testing with NGINX Plus that we’re even able to test some small things like different checkout buttons or colors. We can test anything easily at this point,” says Turner.

About MidwayUSA

Both country kids from Missouri, Larry and Brenda Potterfield turned their passion for shooting sports into a career by opening a small gun shop in 1977 that would eventually become MidwayUSA. They instilled family values like honesty, integrity, and respect for others into the business, and strive to maintain this culture with each employee added to their growing team. For over 39 years, MidwayUSA has maintained an unyielding focus on customer satisfaction and continues to offer Just About Everything for shooting, hunting, and the outdoors. For more information, visit www.midwayusa.com.