We have several great options to choose from when picking a web server to run our Ruby applications. Newer developers will typically start out using WEBrick, which is the default web server for Rails and Rack applications. WEBrick is great when developing or testing an application, but it falls short quickly when we need to serve real production traffic. The main problem with using WEBrick is its lack of concurrency. It's only able to process a single request at a time. This is very limiting and forces us to spin up multiple dynos to handle even a modest amount of traffic.
In this chapter, we will be introduced to Unicorn and Puma, two web servers that are great options to run production-level Ruby applications on Heroku. Each provides us with the concurrency we need to run a high-traffic web application. Depending on our application's memory footprint, both Unicorn and Puma will provide us with a performance boost over WEBrick; this boost will range from 2 to 4X. This results...