Engineering

Engineering Blog

Yelp Dataset Challenge Round 8 Winner

Yelp Dataset Challenge Round 8 Winners The eighth round of the Yelp Dataset Challenge ran throughout the first half of 2017 and, as usual, we received a large number of very impressive and interesting submissions. Today, we are proud to announce the grand prize winner of the $5,000 award: “Clustered Model Adaption for Personalized Sentiment Analysis” by Lin Gong, Benjamin Haines, and Hongnin Wang (from the Department of Computer Science of the University of Virginia). The authors built a personalized sentiment classification model at the group level. Their model is based on social theories about group psychology and how human...

Continue reading

Moving the Rest of the Monolith to PaaSTA

This past April (2017) we finally migrated our monolith to PaaSTA (our open source PaaS based on Apache Mesos). Yes, although Yelp does subscribe to the Service-Oriented-Architecture theory and we constantly try to reduce the scope of the monolith, realistically it still looms over us as a large towering codebase that pays the bills. But that doesn’t mean we can’t try to constantly improve it. This blog post is about our latest improvement to the monolith: treating it just like any other service at Yelp and running it on PaaSTA. Background: What is Yelp’s Monolith Made Of? Yelp’s monolith is...

Continue reading

Making Photos Smaller Without Quality Loss

Yelp has over 100 million user-generated photos ranging from pictures of dinners or haircuts, to one of our newest features, #yelfies. These images account for a majority of the bandwidth for users of the app and website, and represent a significant cost to store and transfer. In our quest to give our users the best experience, we worked hard to optimize our photos and were able to achieve a 30% average size reduction. This saves our users time and bandwidth and reduces our cost to serve those images. Oh, and we did it all without reducing the quality of these...

Continue reading

Taking Zero-Downtime Load Balancing even Further

Ever since we rolled out our zero-downtime HAProxy reload system a few years ago, we have been disappointed that it required additional investment to work well for our external load balancing on our edge. We did generate a prototype that used an intermediary qdisc so we could apply the approach, but after evaluating the prototype, and finding that Linux wasn’t going to fix the upstream Kernel issue, we decided to go another way. Our edge is different than our internal load balancing tier because we have typically terminated TLS with another great proxy: NGINX. NGINX is useful because it does...

Continue reading

Introducing Yelp's Local Graph

We’re continuously adding new features to our API to make it easier for developers to integrate with our data and share great local businesses through their apps. Today, we’re releasing access to query our data via GraphQL, a graph query language. This is available immediately through our developer beta program. What is GraphQL? GraphQL is a query language for APIs that places emphasis on being able to query for exactly the data you want. I’m sure most of you at some point have thought, “I really wish this endpoint had more data,” or, “I only need one or two pieces...

Continue reading

How Yelp Runs Millions of Tests Every Day

Fast feature development is critical to a company’s success. We all strive to increase developer productivity by decreasing the time to test, deploy, and monitor changes. To enable developers to push code safely, we run more than 20 million tests every day using our in-house distributed system called Seagull. 'Seagull' by Fil.Al is licensed under CC BY 2.0 What is Seagull? Seagull is a fault tolerant and resilient distributed system which we use to parallelize our test suite execution. Seagull is built using the following: Apache Mesos (manages the resources of our Seagull cluster) AWS EC2 (provides the instances that...

Continue reading

Continuous Integration on Android

Continuous Integration (CI) is a powerful tool for the Android team at Yelp. It gives us a platform to ensure quality on all eight of our Android apps, allowing us to emphasize testing and ensure our newest features aren’t breaking our oldest masterpieces. For example, we don’t want Yelfies to crash the app while you’re writing your next great review. To achieve this, we have a dedicated cluster of AWS machines running our CI server. These machines run JUnit tests, static analysis, build APKs, merge code, and send us notifications. They also work with Firebase Test Lab to start up...

Continue reading

Returning to Grace Hopper: Bringing our Workshop Back for Round Two

Jen W. is a backend engineer at Yelp in San Francisco and, when not running after her toddler, loves nothing more than to knit while watching superhero TV. Susanne L. is a database engineer at Yelp in San Francisco and loves to [b/h]ike the hilly city and its surroundings. Wei W. is an iOS engineer at Yelp in Hamburg and an avid (trashy) TV connoisseur in her free time. This past year at Grace Hopper, Jen, Susanne, and Wei teamed up to present “Crucial Conversations in Your Career: Increasing Your Impact,” a workshop featuring interactive skits and group discussion. This...

Continue reading