blob: b4a6a093798eeb6b4d9b7bd2eb7986a9e4281bff [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="preconnect" href="https://www.googletagmanager.com">
<script >(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-W8MVQXG');</script>
<meta charset="utf-8">
<meta name="description" content="Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#00add8">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Google+Sans:400,500,600|Work+Sans:400,500,600|Roboto:400,500,700|Open+Sans:Source+Code+Pro|Material+Icons">
<link rel="stylesheet" href="/css/styles.css">
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-W8MVQXG');</script>
<script src="/js/site.js"></script>
<title>Chrome Content Optimization Service Runs on Go - go.dev</title>
</head>
<body class="Site">
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-W8MVQXG"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<header class="Site-header js-siteHeader">
<div class="Banner">
<div class="Banner-inner">
<div class="Banner-message">Black Lives Matter</div>
<a class="Banner-action"
href="https://support.eji.org/give/153413/#!/donation/checkout"
target="_blank"
rel="noopener">
Support the Equal Justice Initiative
</a>
</div>
</div>
<div class="Header Header--dark">
<nav class="Header-nav">
<a href="https://go.dev/">
<img
class="js-headerLogo Header-logo"
src="/images/go-logo-white.svg"
alt="Go">
</a>
<div class="Header-rightContent">
<ul class="Header-menu">
<li class="Header-menuItem ">
<a href="/solutions/">Why Go</a>
</li>
<li class="Header-menuItem ">
<a href="/learn/">Getting Started</a>
</li>
<li class="Header-menuItem ">
<a href="https://pkg.go.dev">Discover Packages</a>
</li>
<li class="Header-menuItem ">
<a href="/about">About</a>
</li>
</ul>
<button class="Header-navOpen js-headerMenuButton Header-navOpen--white" aria-label="Open navigation.">
</button>
</div>
</nav>
</div>
</header>
<aside class="NavigationDrawer js-header">
<nav class="NavigationDrawer-nav">
<div class="NavigationDrawer-header">
<a href="https://go.dev/">
<img class="NavigationDrawer-logo" src="/images/go-logo-blue.svg" alt="Go.">
</a>
</div>
<ul class="NavigationDrawer-list">
<li class="NavigationDrawer-listItem NavigationDrawer-listItem--active">
<a href="/solutions/">Why Go</a>
</li>
<li class="NavigationDrawer-listItem ">
<a href="/learn/">Getting Started</a>
</li>
<li class="NavigationDrawer-listItem ">
<a href="https://pkg.go.dev">Discover Packages</a>
</li>
<li class="NavigationDrawer-listItem ">
<a href="/about">About</a>
</li>
</ul>
</nav>
</aside>
<div class="NavigationDrawer-scrim js-scrim" role="presentation"></div>
<main class="SiteContent SiteContent--default">
<div>
<div class="WhoUsesSubPage-hero--caseStudy">
<div class="WhoUsesSubPage-heroInner--caseStudy">
<div class="WhoUsesSubPage-heroContent--caseStudy">
<div class="WhoUsesSubPage-heroText--caseStudy">
<div class="BreadcrumbNav">
<ol class="BreadcrumbNav-inner">
<li class="BreadcrumbNav-li ">
<a class="BreadcrumbNav-link" href="/solutions/">
Why Go
</a>
</li>
<li class="BreadcrumbNav-li ">
<a class="BreadcrumbNav-link" href="/solutions/google/">
Google
</a>
</li>
<li class="BreadcrumbNav-li active">
<a class="BreadcrumbNav-link" href="/solutions/google/chrome">
Chrome
</a>
</li>
</ol>
</div>
<h1>Chrome Content Optimization Service Runs on Go</h1>
</div>
<div class="WhoUsesSubPage-heroImg">
<img src="/images/go_chrome_case_study.png" alt="Chrome">
</div>
</div>
</div>
</div>
<article class="Article Article--solutions">
<div class="CaseStudy-content">
<div class="CaseStudy-contentBody">
<p>When the product Chrome comes to mind, you probably think solely of the
user-installed browser. But behind the scenes, Chrome has an extensive fleet of
backends. Among these is the Chrome Optimization Guide service. This service
forms an important basis for Chrome&rsquo;s user experience strategy, operating in the
critical path for users, and is implemented in Go.</p>
<p>The Chrome Optimization Guide service is designed to bring the power of Google
to Chrome by providing hints to the installed browser about what optimizations
may be performed on a page load, as well as when they can be applied most
effectively. It comprises a conjunction of real-time servers and batch logs
analysis.</p>
<p>All Lite mode users of Chrome receive data via the service through the following
mechanisms: a data blob push that provides hints for well-known sites in their
geography, a check-in to Google servers to retrieve hints for hosts that the
specific user visits often, and on demand for page loads for which a hint is not
already on the device. Were the Chrome Optimization Guide service to suddenly
disappear, users might notice a dramatic change in the speed of their page loads
and the amount of data consumed while browsing the web.</p>
<div class="BackgroundQuote">
<p class="BackgroundQuote-body">
“Given that Go was a success for us, we plan to continue to use
it where appropriate”
</p>
<div class="BackgroundQuote-author">
<span>&mdash; Sophie Chang</span>
,&nbsp;
<span class="BackgroundQuote-title">Software Engineer</span>
</div>
</div>
<p>When the Chrome engineering team started building the service, only a few
members had comfort with Go. Most of the team was more familiar with C++, but
they found the complex boilerplate required to stand up a C++ server to be too
much. The team shared that “[they] were pretty motivated to learn Go due to its
simplicity, fast ramp-up, and ecosystem.” and that “[their] sense of adventure
was rewarded.” Millions of users rely on this service to make their Chrome
experience better, and choosing Go was no small decision. After their experience
so far, the team also shared that “given that Go was a success for us, we plan
to continue to use it where appropriate.”</p>
<p>In addition to the Chrome Optimization Guide team, engineering teams across
Google have adopted Go in their development process. Read about how the <a href="/solutions/google/coredata/">Core
Data Solutions</a> and <a href="/solutions/google/firebase/">Firebase
Hosting</a> teams use Go to build fast, reliable,
and efficient software at scale.</p>
<p><em>Editorial note: The Go team would like to thank Sophie Chang for her
contributions to this story.</em></p>
</div>
<div class="CaseStudy-contentAside">
<div class="CaseStudy-aboutBlock">
<img src="/images/logos/chrome.svg" class="CaseStudy-aboutBlockImg" alt="Chrome">
<h3 class="CaseStudy-aboutBlockTitle">
About Chrome
</h3>
<p class="CaseStudy-aboutBlockBody"><p>Google Chrome is a more simple, secure, and faster web browser than ever,
with Google&rsquo;s smarts built-in.</p>
<p>In this case study, the Chrome Optimization Guide
team shared how they experimented with Go, ramped up quickly, and their plans to
use Go going forward.</p>
</p>
</div>
</div>
</div>
</article>
</div>
</main>
<footer class="Site-footer">
<div class="Footer">
<div class="Container">
<div class="Footer-links">
<div class="Footer-linkColumn">
<a href="/solutions/" class="Footer-link Footer-link--primary">
Why Go
</a>
<a href="/solutions/#use-cases" class="Footer-link">
Use Cases
</a>
<a href="/solutions/#case-studies" class="Footer-link">
Case Studies
</a>
</div>
<div class="Footer-linkColumn">
<a href="/learn/" class="Footer-link Footer-link--primary">
Getting Started
</a>
<a href="https://play.golang.org" class="Footer-link">
Playground
</a>
<a href="https://tour.golang.org" class="Footer-link">
Tour
</a>
<a href="https://stackoverflow.com/questions/tagged/go?tab=Newest" class="Footer-link">
Stack Overflow
</a>
</div>
<div class="Footer-linkColumn">
<a href="https://pkg.go.dev" class="Footer-link Footer-link--primary">
Discover Packages
</a>
</div>
<div class="Footer-linkColumn">
<a href="/about" class="Footer-link Footer-link--primary">
About
</a>
<a href="https://golang.org/dl/" class="Footer-link">
Download
</a>
<a href="https://blog.golang.org" class="Footer-link">
Blog
</a>
<a href="https://github.com/golang/go/issues" class="Footer-link">
Issue Tracker
</a>
<a href="https://golang.org/doc/devel/release.html" class="Footer-link">
Release Notes
</a>
<a href="https://blog.golang.org/go-brand" class="Footer-link">
Brand Guidelines
</a>
<a href="https://golang.org/conduct" class="Footer-link">
Code of Conduct
</a>
</div>
<div class="Footer-linkColumn">
<a href="https://www.twitter.com/golang" class="Footer-link Footer-link--primary">
Connect
</a>
<a href="https://www.twitter.com/golang" class="Footer-link">
Twitter
</a>
<a href="https://github.com/golang" class="Footer-link">
GitHub
</a>
<a href="https://invite.slack.golangbridge.org/" class="Footer-link">
Slack
</a>
<a href="https://reddit.com/r/golang" class="Footer-link">
r/golang
</a>
<a href="https://www.meetup.com/pro/go" class="Footer-link">
Meetup
</a>
<a href="https://golangweekly.com/" class="Footer-link">
Golang Weekly
</a>
</div>
</div>
</div>
</div>
<div class="Footer">
<div class="Container Container--fullBleed">
<div class="Footer-bottom">
<img class="Footer-gopher" src="/images/gophers/pilot-bust.svg" alt="The Go Gopher">
<ul class="Footer-listRow">
<li class="Footer-listItem">
<a href="/copyright">Copyright</a>
</li>
<li class="Footer-listItem">
<a href="/tos">Terms of Service</a>
</li>
<li class="Footer-listItem">
<a href="http://www.google.com/intl/en/policies/privacy/"
target="_blank"
rel="noopener">
Privacy Policy
</a>
</li>
<li class="Footer-listItem">
<a
href="https://golang.org/s/discovery-feedback"
target="_blank"
rel="noopener"
>
Report an Issue
</a>
</li>
<li class="Footer-listItem">
<a
href="https://golang.org"
target="_blank"
rel="noopener"
>golang.org
</a>
</li>
</ul>
<a class="Footer-googleLogo" target="_blank" href="https://google.com" rel="noopener">
<img class="Footer-googleLogoImg" src="/images/google-white.png" alt="Google logo">
</a>
</div>
</div>
</div>
<script src="/js/carousels.js"></script>
<script src="/js/searchBox.js"></script>
<script src="/js/misc.js"></script>
<script src="/js/hats.js"></script>
</footer>
</body>
</html>