Apple and Comcast built their CDN on Apache Traffic Server (ATS). Netflix and many pure-play CDNs did not. Netflix hired some extremely talented CDN engineers from a bigger CDN, and decided against ATS. When it comes to building a CDN, there are a handful of open source caching platforms available to companies for CDN build-out. The caching platforms are known as proxy servers, reverse proxies, forward proxies, web accelerators, HTTP servers, and so on. I just bundle them together into the "caching software platform" category, as their main purpose is to retrieve content, cache content, and deliver content using a variety of services. The major caching platforms are Varnish, Apache Traffic Server, Squid and Nginx. The caching options are abundant, but can also be confusing when companies are trying to figure out which platform is best for their particular CDN environment.
Yahoo, Comcast and Apple use Apache Traffic Server. MaxCDN, CloudFlare, ChinaNetCloud, and Netflix use Nginx. And Fastly uses Varnish. In this post, we'll briefly compare ATS and Varnish, since Varnish Software has been kind to us in offering their insight about the caching world. Bryan Call, Technical Manager at Yahoo, who is part of the Yahoo team that open sourced ATS in 2009 and has 7 years experience working with ATS, compared the following caching platforms: Varnish, Squid, Nginx and ATS. Best of all, Bryan compared caching platforms on a feature by feature basis, performance basis, using some really abstract benchmarks and comparison items, so much so that unless you're a caching engineer, it's going to be difficult to comprehend in depth.
Looking at the features above are intimidating, even for an engineer. In Comcast case, they tested various caching platforms, and decided to use ATS based on some test metrics. The test concluded that ATS is the best fit for their video environment. There are two ways to evaluate software products, technically and for non-technical business reasons. If I'm going to bet a company's resources, especially if the resources are responsible for employing hundreds of folks, and cost hundreds of millions of dollars in CAPEX and OPEX, then I would put more emphasize on what's best for the business long term. Technical features are not as important, as they can be added at any time with a little hard work. I break down features into two categories: minor and major.
The minor features are gzip, Lua support, system for health checks, session persistence, SSL termination, mmap, and so on. They are minor because if they are not present in a caching platform now, they can be added at a later time. Caching software is like a CDN, if the CDN doesn't have that feature today, it will be added sooner or later. The major features are Mobile Detection, API Acceleration, Enhanced Cache Invalidation, Real Time Logging, and so on. They are major features because they represent a major functionality that's taking advantage of a trend occurring in the market place.