Photograph by David Paul Morris — Bloomberg via Getty Images

The gigantic review site could have bought or built the tools it needed to add features and run optimally, it chose the latter. Here's why.

By Barb Darrow
November 10, 2015

Chances are if you eat out, get your nails done, or use a dry cleaner, you’ve used Yelp, the web site that offers more than 90 million reviews on businesses categorized by specialty and locality.

The site has to offer a ton of data tailored for lots of different users (it claims more than 90 million mobile unique visitors per month) so it has to be able to add or tweak features and functions fast. That means enabling developers to build and deploy features on a massive scale both on its own bare-metal servers and on Amazon AMZN Web Services public cloud. And that is no trivial task, Kyle Anderson, site reliability manager for Yelp YELP told Fortune.

To meet those needs, Anderson’s team could have signed on with a pre-built set of commercial tools. Pivotal, IBM IBM and Hewlett-Packard Enterprise HPE all offer commercial versions of Cloud Foundry, which is part of an overall product category that techies call Platform as a Service or PaaS for short. And any of those products might provide some of what Yelp needed.

But that’s not the course Yelp took. Instead, the team assembled a set of open-source software modules that are broadly available, wrote the code to connect them all, and will now post the result—called PaaSTA—on Github, an online library of software code, later on Tuesday. Once on Github, the code is available for anyone to check out, test, and deploy as needed.

The beauty of buying something is you get a fairly complete set of technologies ready to go. The disadvantage is that integrating an off-the-shelf platform with the software already running in-house is challenging. On the other hand, if you build your own platform, you get something that does what you need it to do and works more readily with what you already use, Anderson explained.

“We debated build vs. buy a lot,” he noted. “When you make your own platform, you can infuse it with your own opinions and we have ideas about how we want our software to run,” he noted. But even more important, by using a set of open-source components, Yelp knew it could reuse those components over and over again—inside the platform or elsewhere as needed—which is an extremely attractive proposition for a development team.

So what, exactly, is PaaSTA?

The first main component is Apache Mesos, an open-source technology that, as Anderson put it, does one thing—which is taking a piece of code and running it on a server—really really well. “That sounds very simple, but when you have lots of servers it gets complicated fast,” he said.

The second piece of the puzzle is Sensu, an open-source monitoring tool. Sensu, in Anderson’s view, is sadly underrated. Many development platforms now lack a monitoring tool, so developers end up writing their own anyway, he noted. It is his team’s firm belief that no piece of software should be deployed unless it is also monitored. That saves a lot of wear and tear down the road.

And the third major piece, Marathon, is yes—an open-source tool—backed by Mesosphere. Marathon’s job is to keep services up and running once they have been deployed. If one service crashes somewhere, Marathon spins it up again elsewhere so there is no interruption from the user’s point of view.

“Marathon makes sure that you have copies of a service available at all times so the service will stay up and running,” Anderson said.

Yelp’s PaasTA is basically those three major components plus the connective tissue that the Yelp team built around them to create a holistic build, deploy, and run system.

Docker containers, which are widely used, are the building blocks that Yelp developers use to package up their code, and then declare where each container should run—whether on the aforementioned bare-metal servers or out on AWS. PaaSTA talks with its component pieces and the application is off to the races. (For those not in the weeds on this stuff, bare-metal servers are non-virtualized, meaning they are dedicated to a certain set of jobs. They are fast, because they are not subject to virtualization, which can sap performance, and are particularly well suited for databases and other jobs that require fast queries and responses.)

In use for more than a year at Yelp, PaaSTA has freed developers to do what they do best without putting undue stress on the operations people, the folks whose job is typically to make sure the code that is written and the systems it runs on actually work.

One area that has benefited from the platform is Yelp’s search capability. Given local events, there might be huge boom in search requests in a given area—say pubs around the finish line of the New York City marathon, for example.

“Search is so hard that you have to have a big internal team to handle it but now that they’re on PaaSTA, the developers don’t have to worry about servers or the number of copies running. That is handled for them,” Anderson said. “When you don’t need humans to worry about underlying infrastructure, they are freed up to do other things.”

Update: There’s more detail now posted on the Yelp Engineering Blog.

For more on the kinds of unique searches that Yelp’s PaaSTA enables, watch this Fortune video:

 

For more coverage from Barb follow her on Twitter at@gigabarb, read her coverage at fortune.com/barb-darrow or subscribe via her RSS feed.

And please subscribe to Data Sheet, Fortune’s daily newsletter on the business of technology.

SPONSORED FINANCIAL CONTENT

You May Like