blob: e40543259a1aa65d99aa04cc2c87c3b62ace3391 [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>Development Operations &amp; Site reliability Engineering - 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 class="UseCaseSubNav js-useCaseSubnav">
<button class="UseCaseSubNav-menuHeader js-useCaseSubnavHeader">
Jump to
<img
class="UseCaseSubNav-menuIcon js-useCaseSubnavMenuIcon"
alt="Open menu icon" src="/images/icons/chevron-down.svg">
</button>
<div class="UseCaseSubNav-menu js-useCaseSubnavMenu">
<div class="UseCaseSubNav-anchorLinks js-useCaseSubnavLinks">
</div>
</div>
</div>
</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--useCase">
<div class="WhoUsesSubPage-heroInner--useCase">
<div class="WhoUsesSubPage-heroContent--useCase">
<div class="WhoUsesSubPage-heroText--useCase">
<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 active">
<a class="BreadcrumbNav-link" href="/solutions/devops">
Development Operations &amp; Site reliability Engineering
</a>
</li>
</ol>
</div>
<h1>Development Operations &amp; Site reliability Engineering</h1>
<div class="Article-date">3 October 2019</div>
</div>
</div>
</div>
</div>
<article class="Article Article--solutions">
<div class="UseCase-content">
<div class="UseCase-contentAside">
<div
class="js-useCaseStickyNav UseCaseSubNav-anchorLinks">
</div>
</div>
<div class="UseCase-contentBody js-useCaseContentBody">
<h2 id="overview" class="sectionHeading">Overview</h2>
<h3 id="go-helps-enterprises-automate-and-scale">Go helps enterprises automate and scale</h3>
<p>Development Operations (DevOps) teams help engineering organizations automate tasks and improve their continuous
integration and continuous delivery and deployment (CI/CD) process. DevOps can topple developmental silos and implement
tooling and automation to enhance software development, deployment, and support.</p>
<p>Site Reliability Engineering (SRE) was born at Google to make the company’s “large-scale sites more reliable, efficient,
and scalable,”<a href="https://opensource.com/article/18/10/what-site-reliability-engineer" rel="noreferrer" target="_blank"> writes Silvia Fressard</a>, an
independent DevOps consultant. “And the practices they developed responded so well to Google’s needs that other big tech
companies, such as Amazon and Netflix, also adopted them.” SRE requires a mix of development and operations skills, and
<a href="https://stackify.com/site-reliability-engineering/" rel="noreferrer" target="_blank">empowers software developers</a> to own the ongoing daily operation
of their applications in production.”</p>
<p>Go serves both siblings, DevOps and SRE, from its fast build times and lean syntax to its security and reliability support. Go&rsquo;s concurrency and networking features also make it ideal for tools that manage cloud deployment—readily supporting automation while
scaling for speed and code maintainability as development infrastructure grows over time.</p>
<p>DevOps/SRE teams write software ranging from small scripts, to command-line interfaces (CLI), to complex automation and services, and Go’s feature set has benefits for every situation.</p>
<h2 id="key-benefits" class="sectionHeading">Key Benefits</h2>
<h3 id="easily-build-small-scripts-with-gos-robust-standard-library-and-static-typing">Easily build small scripts with Go’s robust standard library and static typing</h3>
<p>Go’s fast build and startup times. Go’s extensive standard library—including packages for
common needs like HTTP, file I/O, time, regular expressions, exec, and JSON/CSV formats—lets DevOps/SREs get right into their business logic. Plus, Go’s static type system and explicit error handling make even small scripts more robust.</p>
<h3 id="quickly-deploy-clis-with-gos-fast-build-times">Quickly deploy CLIs with Go’s fast build times</h3>
<p>Every site reliability engineer has written “one-time use” scripts that turned into CLIs used by dozens of other engineers every day. And small deployment automation scripts turn into rollout management services. With Go, DevOps/SREs are in a great position to be successful when software scope inevitably creeps. Starting with Go puts you in a great position to be successful when that happens.</p>
<h3 id="scale-and-maintain-larger-applications-with-gos-low-memory-footprint-and-doc-generator">Scale and maintain larger applications with Go’s low memory footprint and doc generator</h3>
<p>Go’s garbage collector means DevOps/SRE teams don’t have to worry about memory management. And Go’s automatic documentation generator (godoc) makes code self-documenting–lowering maintenance overhead and establishing best practices from the get-go.</p>
<div class="FeaturedUsers">
<h2 id="featured-users" class="sectionHeading">Featured users</h2>
<table>
<thead>
<tr>
<th class="FeaturedUsers--hiddenMobile">Customer</th>
<th>Brief introduction</th>
<th>Projects using go</th>
</tr>
</thead>
<tbody>
<tr
class="js-featuredUsersRow FeaturedUsers-row"
>
<td class="FeaturedUsers--hiddenMobile">
<img src="/images/logos/docker.svg" alt="Docker" />
</td>
<td>
<img
class="FeaturedUsers--hiddenDesktop"
src="/images/logos/docker.svg" alt="Docker" />
Docker is a software-as-a-service (SaaS) product, written in Go, that DevOps/SRE teams leverage to “drive secure automation and deployment at massive scale,” supporting their CI/CD efforts.
</td>
<td>
<ul>
<li><a href="https://www.docker.com/solutions/cicd">Docker CI/CD</a></li>
</ul>
</td>
</tr>
<tr
class="js-featuredUsersRow FeaturedUsers-row"
>
<td class="FeaturedUsers--hiddenMobile">
<img src="/images/logos/drone.svg" alt="Drone" />
</td>
<td>
<img
class="FeaturedUsers--hiddenDesktop"
src="/images/logos/drone.svg" alt="Drone" />
Drone is a Continuous Delivery system built on container technology, written in Go, that uses a simple YAML configuration file, a superset of docker-compose, to define and execute Pipelines inside Docker containers.
</td>
<td>
<ul>
<li><a href="https://github.com/drone">Drone</a></li>
</ul>
</td>
</tr>
<tr
class="js-featuredUsersRow FeaturedUsers-row"
>
<td class="FeaturedUsers--hiddenMobile">
<img src="/images/logos/etcd.svg" alt="etcd" />
</td>
<td>
<img
class="FeaturedUsers--hiddenDesktop"
src="/images/logos/etcd.svg" alt="etcd" />
etcd is a strongly consistent, distributed key-value store that provides a reliable way to store data that needs to be accessed by a distributed system or cluster of machines, and it&#39;s written in Go.
</td>
<td>
<ul>
<li><a href="https://github.com/etcd-io/etcd">etcd</a></li>
</ul>
</td>
</tr>
<tr
class="js-featuredUsersRow FeaturedUsers-row"
hidden
>
<td class="FeaturedUsers--hiddenMobile">
<img src="/images/logos/ibm.svg" alt="IBM" />
</td>
<td>
<img
class="FeaturedUsers--hiddenDesktop"
src="/images/logos/ibm.svg" alt="IBM" />
IBM’s DevOps teams use Go through Docker and Kubernetes, plus other DevOps and CI/CD tools written in Go. The company also supports connection to it’s messaging middleware through a Go-specific API.
</td>
<td>
<ul>
<li><a href="https://developer.ibm.com/messaging/2019/02/05/simplified-ibm-mq-applications-golang/">IBM Applications in Golang</a></li>
</ul>
</td>
</tr>
<tr
class="js-featuredUsersRow FeaturedUsers-row"
hidden
>
<td class="FeaturedUsers--hiddenMobile">
<img src="/images/logos/netflix.svg" alt="Netflix" />
</td>
<td>
<img
class="FeaturedUsers--hiddenDesktop"
src="/images/logos/netflix.svg" alt="Netflix" />
Netflix uses Go to handle large scale data caching, with a service called Rend, which manages globally replicated storage for personalization data.
</td>
<td>
<ul>
<li><a href="https://medium.com/netflix-techblog/application-data-caching-using-ssds-5bf25df851ef">Application Data Caching</a></li>
<li><a href="https://github.com/netflix/rend">Rend</a></li>
</ul>
</td>
</tr>
<tr
class="js-featuredUsersRow FeaturedUsers-row"
hidden
>
<td class="FeaturedUsers--hiddenMobile">
<img src="/images/logos/microsoft.svg" alt="Microsoft" />
</td>
<td>
<img
class="FeaturedUsers--hiddenDesktop"
src="/images/logos/microsoft.svg" alt="Microsoft" />
Microsoft uses Go in Azure Red Hat OpenShift services. This Microsoft solution provides DevOps teams with OpenShift clusters to maintain regulatory compliance and focus on application development.
</td>
<td>
<ul>
<li><a href="https://azure.microsoft.com/en-us/services/openshift/">OpenShift</a></li>
</ul>
</td>
</tr>
<tr
class="js-featuredUsersRow FeaturedUsers-row"
hidden
>
<td class="FeaturedUsers--hiddenMobile">
<img src="/images/logos/terraform-icon.svg" alt="Terraform" />
</td>
<td>
<img
class="FeaturedUsers--hiddenDesktop"
src="/images/logos/terraform-icon.svg" alt="Terraform" />
Terraform is a tool for building, changing, and versioning infrastructure safely and efficiently. It supports a number of cloud providers such as AWS, IBM Cloud, GCP, and Microsoft Azure - and it’s written in Go.
</td>
<td>
<ul>
<li><a href="https://www.terraform.io/intro/index.html">Terraform</a></li>
</ul>
</td>
</tr>
<tr
class="js-featuredUsersRow FeaturedUsers-row"
hidden
>
<td class="FeaturedUsers--hiddenMobile">
<img src="/images/logos/prometheus.svg" alt="Prometheus" />
</td>
<td>
<img
class="FeaturedUsers--hiddenDesktop"
src="/images/logos/prometheus.svg" alt="Prometheus" />
Prometheus is an open-source systems monitoring and alerting toolkit originally built at SoundCloud. Most Prometheus components are written in Go, making them easy to build and deploy as static binaries.
</td>
<td>
<ul>
<li><a href="https://github.com/prometheus/prometheus">Prometheus</a></li>
</ul>
</td>
</tr>
<tr
class="js-featuredUsersRow FeaturedUsers-row"
hidden
>
<td class="FeaturedUsers--hiddenMobile">
<img src="/images/logos/youtube.svg" alt="YouTube" />
</td>
<td>
<img
class="FeaturedUsers--hiddenDesktop"
src="/images/logos/youtube.svg" alt="YouTube" />
YouTube uses Go with Vitess (now part of PlanetScale), its database clustering system for horizontal scaling of MySQL through generalized sharding. Since 2011 it’s been a core component of YouTube’s database infrastructure, and has grown to encompass tens of thousands of MySQL nodes.
</td>
<td>
<ul>
<li><a href="https://github.com/vitessio/vitess">Vitess</a></li>
</ul>
</td>
</tr>
</tbody>
</table>
<button
class="js-moreProjectsBtn FeaturedUsers-moreProjectsBtn"
type="button">
More projects
</button>
</div>
<h2 id="get-started" class="sectionHeading">Get Started</h2>
<h3 id="go-books-on-devops--sre">Go books on DevOps &amp; SRE</h3>
<ul class="Learn-tileList">
<li class="Learn-tile">
<a href="https://www.amazon.com/Go-Programming-Network-Operations-Automation-ebook/dp/B07JKKN34L/ref=sr_1_16">
<img
class="Learn-tileThumbnail Learn-tileThumbnail--book"
alt="Go Programming for Network Operations thumbnail." src="/images/books/go-programming-for-network-operations.jpg">
<span class="Learn-tileTitle">
Go Programming for Network Operations
</span>
</a>
</li>
<li class="Learn-tile">
<a href="https://github.com/matryer/goblueprints">
<img
class="Learn-tileThumbnail Learn-tileThumbnail--book"
alt="Go Programming Blueprints thumbnail." src="/images/learn/go-programming-blueprints.png">
<span class="Learn-tileTitle">
Go Programming Blueprints
</span>
</a>
</li>
<li class="Learn-tile">
<a href="https://www.amazon.com/Go-Action-William-Kennedy/dp/1617291781">
<img
class="Learn-tileThumbnail Learn-tileThumbnail--book"
alt="Go in Action thumbnail." src="/images/books/go-in-action.jpg">
<span class="Learn-tileTitle">
Go in Action
</span>
</a>
</li>
<li class="Learn-tile">
<a href="https://www.gopl.io/">
<img
class="Learn-tileThumbnail Learn-tileThumbnail--book"
alt="The Go Programming Language thumbnail." src="/images/learn/go-programming-language-book.png">
<span class="Learn-tileTitle">
The Go Programming Language
</span>
</a>
</li>
</ul>
<div class="WhoUsesCaseStudy-librariesWrapper">
<div class="headerWithLink">
<h3>Monitoring and tracing</h3>
</div>
<ul class="WhoUsesCaseStudy-librariesList">
<li class="WhoUsesCaseStudy-library">
<a class="WhoUsesCaseStudy-libraryTitle" href="https://pkg.go.dev/github.com/opentracing/opentracing-go?tab=overview">opentracing/opentracing-go</a>
<p>Vendor-neutral APIs and instrumentation for distributed tracing</p>
</li>
<li class="WhoUsesCaseStudy-library">
<a class="WhoUsesCaseStudy-libraryTitle" href="https://pkg.go.dev/github.com/jaegertracing/jaeger-client-go?tab=overview">jaegertracing/jaeger-client-go</a>
<p>An open source distributed tracing system developed by Uber formats</p>
</li>
<li class="WhoUsesCaseStudy-library">
<a class="WhoUsesCaseStudy-libraryTitle" href="https://pkg.go.dev/github.com/grafana/grafana?tab=overview">grafana/grafana</a>
<p>An open-source platform for monitoring and observability</p>
</li>
<li class="WhoUsesCaseStudy-library">
<a class="WhoUsesCaseStudy-libraryTitle" href="https://pkg.go.dev/github.com/istio/istio?tab=overview">istio/istio</a>
<p>An open-source service mesh and integratable platform</p>
</li>
</ul>
<a class="WhoUsesCaseStudy-librariesViewMoreLink" href="https://pkg.go.dev/search?q=tracing">View More</a>
</div>
<div class="WhoUsesCaseStudy-librariesWrapper">
<div class="headerWithLink">
<h3>CLI Libraries</h3>
</div>
<ul class="WhoUsesCaseStudy-librariesList">
<li class="WhoUsesCaseStudy-library">
<a class="WhoUsesCaseStudy-libraryTitle" href="https://pkg.go.dev/github.com/spf13/cobra?tab=overview">spf13/cobra</a>
<p>A library for creating powerful modern CLI applications and a program to generate applications and CLI applications in Go</p>
</li>
<li class="WhoUsesCaseStudy-library">
<a class="WhoUsesCaseStudy-libraryTitle" href="https://pkg.go.dev/github.com/spf13/viper?tab=overview">spf13/viper</a>
<p>A complete configuration solution for Go applications, designed to work within an app to handle configuration needs and formats</p>
</li>
<li class="WhoUsesCaseStudy-library">
<a class="WhoUsesCaseStudy-libraryTitle" href="https://pkg.go.dev/github.com/urfave/cli?tab=overview">urfave/cli</a>
<p>A minimal framework for creating and organizing command line Go applications</p>
</li>
</ul>
<a class="WhoUsesCaseStudy-librariesViewMoreLink" href="https://pkg.go.dev/search?q=command%20line%20OR%20CLI">View More</a>
</div>
<div class="WhoUsesCaseStudy-librariesWrapper">
<div class="headerWithLink">
<h3>Other projects</h3>
</div>
<ul class="WhoUsesCaseStudy-librariesList">
<li class="WhoUsesCaseStudy-library">
<a class="WhoUsesCaseStudy-libraryTitle" href="https://pkg.go.dev/github.com/golang-migrate/migrate?tab=overview">golang-migrate/migrate</a>
<p>A database migration tool written in Go</p>
</li>
</ul>
<a class="WhoUsesCaseStudy-librariesViewMoreLink" href="">View More</a>
</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>