Online Food Delivery
Food delivery is a big part of our modern lives. We choose our dishes, tap a few times, and tip our courier. In Europe and Asia Pacific, Deliveroo is usually the one at the door, delivering satisfied patrons delicious “takeaways” and a seamless user experience. So seamless, in fact, that Deliveroo has seen over 70 percent revenue growth year over year. They have 500 employees in 13 markets, along with 60,000 riders who deliver orders from 80,000 restaurants.
To efficiently serve three audiences—customers, riders, and restaurants—and operate its platform across multiple time zones, Deliveroo has used GitHub since 2017. “We heavily leverage tech and software engineering principles to run the business,” said Senior Software Engineer Ben Cordero. “From a high-level, platform point of view, using GitHub Enterprise Cloud means we don’t have to run any of that infrastructure ourselves, and it reduces the administrative costs and allows us to spend more time developing.” Since most of Deliveroo’s engineers are already proficient with GitHub’s workflows, “it also reduces onboarding costs because we don’t spend extra time training the next new person.”
Deliveroo uses a public instance of Enterprise Cloud, and “the primary reason is simplicity,” explained Cordero. “We don’t need to spin up our own instances to run GitHub Enterprise products. The public instance already has all the security features we need.” That includes single sign-on, the ability to control group access, and protected branches that define who can do what, and when. “Not having to own, manage, and keep a system alive is an operational load off our minds,” said Cordero.
On the recently-formed Deliveroo security team, “having code vulnerability scans along with code storage is a big plus—and means that we don’t need another vendor,” said Cordero. And it’s not just static code analysis. They also evaluate runtime aspects, other sources of data, tools around vulnerabilities, and conduct fuzz testing for quality assurance. Since they use Amazon Web Services (AWS) as a primary cloud provider, “it’s helpful that GitHub has the ability to scan our repositories for any vulnerabilities, such as published AWS tokens,” said Senior Software Engineer Florian Thomas.
Deliveroo started as one service working with Ruby on Rails; they now heavily use Golang to write simple, reliable software. “All of our language frameworks are typically just pull requests from open source dependencies with very little modifications—if any—done by us,” said Corrdero. Of Deliveroo’s 1,000 GitHub repositories, about a third are publicly visible or have open source code. “Our open source policy is very short. It’s very easy for engineers to make one of our repositories public.” Recently, a member of Cordero’s team gave a talk about the tool he built to manage database connections. A few people were curious to try it out, so he simply repackaged it, pulled it into its own repository, and open sourced it. “We rely heavily on open source, so it’s the right thing to do to give back.” said Thomas.
Using GitHub Enterprise Cloud means we don’t have to run any of that infrastructure ourselves, and it reduces the administrative costs and allows us to spend more time developing.
Plus, contributing to open source “means there’s a lot less overhead,” explained Cordero. Instead of copying from an internal version, “we can directly open a pull request between repositories without any extra steps. We can also reference issues in existing repositories and the links automatically work.” Wherever possible, the team tries to leverage existing technologies that are easy to learn. “For example, we’re using a public GitHub instance for code and the public instance of CircleCI for our CI and testing processes.” They use the main public instance of Datadog for metrics, logging, and tracing; and the publicly-listed version of Sentry for errors.
The team layers functionality on top of GitHub to streamline their workflow. The GitHub API makes it easy to integrate other tools like find reviewers and Hopper—simplifying code reviews and deployment. For example, when a label is applied to a pull request, the API syncs with find-reviewers to see if someone’s on vacation, and can then rule them out. “This allows us to spread out the workload within the engineering team,” said Thomas. “We also leverage the GitHub API to first sign in and then authenticate users, as well as show comments within the deployment tool.”
With Hopper, Deliveroo leverages the GitHub Deployments API to track performance, like how a change is performing in a staging environment before it’s been merged, or in a production environment after it’s been merged. “Combining GitHub and Hopper also lets us hook into things like the GitHub Checks API and Amazon’s Elastic Container Registry (ECR),” said Cordero “So we can follow the information and get a clear idea about changes that are going out to production—all from a single dashboard.”
To auto-generate code documentation, the team uses an extension built on GitHub’s API. “It listens to certain webhooks, then generates new code documentation for whatever gets pushed,” said Cordero. They also use webhooks for deployments and rollbacks, and implement certain Slack bots against the API. One engineering team built a graphical interface for Terraform where they can manage their infrastructure code, view changed states, and see activity on their AWS staging account; once an engineer approves the plan, the code is rolled out to production, where an engineer re-confirms the changes. “Those steps are all driven by GitHub APIs and webhooks, and report back to the pull requests through the deployment API,” said Cordero.
Along with the bigger infrastructure support, Cordero relies on GitHub to streamline his everyday workflow, including using pull requests for reviews, triggering CI jobs, and managing access. For Thomas, the “commit status is really helpful so we don’t have to check five different services to see if there’s a problem with a pull request or commit.” When he’s unfamiliar with a particular code or file, “It’s very easy to find out from the code owners which team I should ping.”
Distributed across offices in New York, London, and Edinburgh, Deliveroo’s 50 engineering teams rely on GitHub to manage projects and communicate across time zones. When a new hire joins, the first thing they do is create a GitHub account, “but almost everybody already has one,” said Thomas. Each team is comprised of roughly 10 employees, from engineers and product managers to data scientists, designers, and researchers. The business intelligence analysts also recently moved to engineering, where they regularly write and deploy code. “GitHub helps us collaborate with people who are remote,” said Senior Software Engineer Erika Moreno Sierra. “There are a lot of discussions happening within pull requests.” Thomas’ team is currently working with data scientists who write machine learning models and can quickly link him to new versions on Github. “We have the same access, so it’s easy for me to follow.”
All of Deliveroo’s code is hosted on the same instance, just with different login steps. Besides automating protection, they don’t have a rigorous permissions system in place, making it easy for engineers to see and contribute to all Deliveroo repositories. “So that means that by default, the nature of our internal collaboration typically models open source projects.” Practicing innersource gives Deliveroo the ability to work faster and more efficiently. All changes are discussed up front, and the actual changes are made “using many patterns that a lot of our engineers use with other public and open source projects,” explained Cordero.
Getting to the top of Deloitte’s list of the UK’s fastest-growing companies is no easy task. But “it’s important to note the scale at which we’re using GitHub, and how we’re growing with the public instance of GitHub,” Cordero said. “It lowers a lot of overheads. But it’s also an experience that people are familiar with and know how to optimize.” Deliveroo capitalizes on open source tools, leveraging as many as possible so they can focus on what they do best: delivering takeaways from 80,000 restaurants to thousands of happy people every single day.
Online Food Delivery
Brett Cannon made his first open source contribution more than 15 years ago. Now a Software Engineer at Microsoft, he’s still a core contributor to Python, a project he has contributed to for more than a decade.
Start collaborating with your team on GitHub
Want to use GitHub on your own? Check out our plans for individuals