January 10, 2019
Table of Contents
Yelp is one of the largest online local business search, review and recommendation service, which enables consumers to access ratings, and read reviews and opinions about local businesses. Yelp is headquartered in San Francisco, CA and was founded in 2004 with the mission to connect people to great local businesses.
In Fall 2018, I interned as a Software Engineer at Yelp in San Francisco, CA. The internship lasted sixteen weeks and there were around 40 interns during the Fall Quarter. Yelp puts on a fantastic internship program called the Yelp Internship Program (YIP) that featured 1-2 intern events every week. In terms of compensation and perks, Yelp pays interns competitively with other top tech companies (Google, Facebook, LinkedIn) and provided interns with a decent amount of swag.
During my internship, I worked as a Backend Software Engineering Intern for the Commerce Platform - Revenue Team. This was my first internship with a tech company; and as such, I learned a remarkable amount from my internship. In addition, the amount I learned was compounded due to the fact that I got to work on an end-to-end feature that worked through all phases of the design and development process.
Yelp develops new services as a part of the Service-Oriented Architecture (SOA) concept and has a fancy Platform-as-a-Service (PaaS) distributed system known as PaaSTA, which is used for building, deploying, and running new services. The feature that I worked on involved designing and implementing a service in Yelp's SOA, and then deploying it using PaaSTA and a Jenkins Continuous Integration (CI) pipeline.
To allow other services to interface with the newly created service, I created RESTful APIs to expose service endpoints, and documented these endpoints using Swagger UI, which generates a visually interactive documenation website to view API endpoints, details, and interact with the API's resources.
When developing new services, it is a good idea to provide proper documentation so that new developers can easily understand what the code means. In addition, developing these new services should emit certain information so that engineers know at all times the current health and performance of the service. Thus, if a service crashes or is performing slower than expected, can either be restarted or improved. This later concept is known as service observability, and I was able to add this to the service I created by logging events using Scribe, which is a server for aggregating log data streamed in real-time and emitting metrics, which were monitored using dashboards I created in third-party analytics monitoring platforms Splunk and SignalFX. Lastly, I added to the observability of the service by adding error-alerting capabilities using Sensu alerts and defining Service-Level Objectives (SLOs), which define certain performance or up-time service requirements.
The final aspect of developing this new service involved stress testing the performance of interfacing with the service APIs to ensure that the service could handle a large volume of requests in a given duration of time.To achieve the performance requirements, I wrote a Locust load testing script and observed service endpoint response times using Zipkin, which is a distributed tracing system used to gather timing data of each component in a given service request.
YIP hosted many enjoyable internship events throughout the quarter that amounted to 1-2 events every week. These events were all optional and consisted of mainly interns only. A list of some of the events can be seen below:
Before my internship started, Yelp mailed me a couple packages consisting of Yelp swag. After the internship, first-time interns got a custom Yelp Internship Program shirt, while returning interns got a custom Yelp Internship Program picnic mat. Additionally, each workstation features a micro kitchen with a wide variety of snacks and drinks.
Yelp HQ is located in the historic PacBell building located at 140 New Montgomery St in San Francisco, in which they occupy around fifteen floors within the building. Each Yelp-owned floor consists of open floor-plan workspaces, private conference rooms, pantry full of snacks, etc. The 8th floor is usually where people go to eat lunch or take a break as it features Yelp's own coffee shop, kitchen area stocked with some lunch options, billiards table, and foosball table.
I really enjoyed my internship at Yelp and living in San Francisco. Yelp occupies a beautiful building with a very new and aesthetically pleasing interior. YIP puts on a great internship program and I got to work on a great project that improved my technical skills drastically. I highly recommend the internship program to others as the size of Yelp as a mid-size tech company allowed for the perfect type of internship experience, which made it possible for Yelp to put on events that all interns could attend and interns could work on meaningful and impactful projects. A larger company like Facebook may have several thousand interns for a given term, which makes it difficult to host intern events where all interns can attend.