blob: aa6cf60cb79c6e540ad48c733d7290c6ce27bb5d [file] [log] [blame] [view]
---
title: "How the Firebase Hosting Team Scaled With Go"
layout: solution
company: Firebase
logoSrc: firebase.svg
heroImgSrc: go_firebase_case_study.png
series: Case Studies
quote: |
Firebase is Googles mobile platform that helps you quickly develop high-quality
apps and grow your business.
The Firebase Hosting team shared their journey with Go, including their
backend migration from Node.js, the ease of onboarding new Go developers, and
how Go has helped them scale.
---
The Firebase Hosting team provides static web hosting services for Google Cloud
customers. They provide a static web host that sits behind a global content
delivery network, and offer users tools that are easy to use. The team also
develops features that range from uploading site files to registering domains to
tracking usage.
Before joining Google, Firebase Hostings tech stack was written in Node.js. The
team started to use Go when they needed to interoperate with several other
Google services. They decided to use Go to help them scale easily and
efficiently, knowing that concurrency would continue to be a big need.” They
were confident Go would be more performant,” and liked that Go is more terse
than other languages they were considering, said Michael Bleigh, a software
engineer on the team.
Starting with one small service written in Go, the team migrated their entire
backend in a series of moves. The team progressively identified large features
they wanted to implement and, in the process, rewrote them in Go and moved to
Google Cloud and Googles internal cluster management system. **Now the Firebase
Hosting team has replaced 100% of backend Node.js code with Go.**
The teams experience writing in Go began with one engineer. Through
peer-to-peer learning and Go being generally easy to get started with, everyone
on the team now has Go dev experience,” said Bleigh. Theyve found that while a
majority of people who are new to the team havent had any experience with Go,
most of them are productive within a couple weeks.”
"Using Go, it's easy to see how the code is organized and what the code does,"
said Bleigh, speaking for the team. Go is generally very readable and
understandable. The languages error handling, receivers, and interfaces are all
easy to understand due to the idioms in the language.”
Concurrency continues to be a focus for the team as they scale. Robert Rossney,
a software engineer, shared that Go makes it very easy to put all of the hard
concurrency stuff in one place, and everywhere else it's abstracted.” Rossney
also spoke to the benefits of using a language built with concurrency in mind,
saying that “there are also a lot of ways to do concurrency in Go. We’ve had to
learn when each route is best, how to determine when a problem is a concurrency
problem, how to debug–but that comes out of the fact that you actually can write
these patterns in Go code.”
{{backgroundquote `
author: Robert Rossney
title: Software Engineer
quote: |
Generally speaking, there’s not a time on the team where we’re feeling
frustrated with Go, it just kind of gets out of the way and lets you do work.
`}}
Hundreds of thousands of customers host their websites with Firebase Hosting,
which means Go code is used to serve billions of requests per day. “Our customer
base and traffic have doubled multiple times since migrating to Go without ever
requiring fine-tuned optimizations” shared Bleigh. With Go, the team has seen
performance improvements both in the software and on the team, with excellent
productivity gains. “Generally speaking,” Rossney mentioned, “...there’s not a
time on the team where we’re feeling frustrated with Go, it just kind of gets
out of the way and lets you do work.”
In addition to the Firebase Hosting team, engineering teams across Google have
adopted Go in their development process. Read about how the [Core Data
Solutions](/solutions/google/coredata/) and [Chrome](/solutions/google/chrome/)
teams use Go to build fast, reliable, and efficient software at scale.