概述
Go 帮助企业自动化和扩展
开发运维 (DevOps) 团队帮助工程组织自动执行任务并改进其持续集成以及持续交付和部署 (CI/CD) 流程。DevOps 可以打破开发孤岛并实施工具和自动化,以增强软件开发、部署和支持.
独立 DevOps 顾问Silvia Fressard写道,站点可靠性工程 (SRE) 诞生于 Google,旨在使该公司的“大型站点更加可靠、高效和可扩展” 。“他们开发的实践很好地响应了谷歌的需求,以至于亚马逊和 Netflix 等其他大型科技公司也采用了它们。” SRE 需要综合开发和运维技能,并且“使软件开发人员能够掌控其应用程序在生产中的持续日常运维。”
Go 服务于 DevOps 和 SRE 这两个兄弟,从其快速的构建时间和精简的语法到其安全性和可靠性支持。Go 的并发性和网络特性也使其成为管理云部署的工具的理想选择 - 随时支持自动化,同时随着开发基础设施的增长而扩展速度和代码可维护性.
DevOps/SRE 团队编写的软件范围从小脚本到命令行界面 (CLI),再到复杂的自动化和服务,Go 的功能集对每种情况都有好处.
主要优势
使用 Go 强大的标准库和静态类型轻松构建小脚本
Go 的快速构建和启动时间。Go 的广泛标准库——包括用于 HTTP、文件 I/O、时间、正则表达式、exec 和 JSON/CSV 格式等常见需求的包——让 DevOps/SRE 可以直接进入他们的业务逻辑。另外,Go 的静态类型系统和显式错误处理使即使是小脚本也更加健壮.
使用 Go 的快速构建时间快速部署 CLI
每个站点可靠性工程师都编写了“一次性使用”脚本,这些脚本变成了许多其他工程师每天使用的 CLI。小型部署自动化脚本变成了rollout管理服务。使用 Go,当软件范围不可避免地蔓延时,DevOps/SRE 处于成功的有利位置。当这种情况发生时,从Go开始会让你处于成功的有利位置.
使用 Go 的低内存占用和文档生成器扩展和维护更大的应用程序
Go 的垃圾收集器意味着 DevOps/SRE 团队不必担心内存管理。Go 的自动文档生成器 (godoc) 使代码自文档化——降低维护开销并从一开始就建立最佳实践.
精选用户
客户 | 简单介绍 | 使用 go 的项目 |
---|---|---|
Docker 是一种用 Go 编写的软件即服务 (SaaS) 产品,DevOps/SRE 团队利用它来“推动大规模的安全自动化和部署”,支持他们的 CI/CD 工作. | ||
Drone 是一个基于容器技术构建的持续交付系统,用 Go 编写,它使用一个简单的 YAML 配置文件(docker-compose 的超集)来定义和执行 Docker 容器内的管道. | ||
etcd 是一种高度一致的分布式键值存储,它提供了一种可靠的方式来存储需要由分布式系统或机器集群访问的数据,它是用 Go 编写的. | ||
IBM 的 DevOps 团队通过 Docker 和 Kubernetes 使用 Go,以及其他用 Go 编写的 DevOps 和 CI/CD 工具。该公司还支持通过特定于 Go 的 API 连接到其消息传递中间件. | ||
Netflix 使用 Go 来处理大规模数据缓存,并使用名为 Rend 的服务管理个性化数据的全局复制存储. | ||
Microsoft 在 Azure Red Hat OpenShift 服务中使用 Go。此 Microsoft 解决方案为 DevOps 团队提供 OpenShift 集群,以保持合规性并专注于应用程序开发. | ||
Terraform 是一种用于安全高效地构建、更改和版本控制基础架构的工具。它支持许多云提供商,例如 AWS、IBM Cloud、GCP 和 Microsoft Azure——而且它是用 Go 编写的. | ||
Prometheus 是一个开源系统监控和警报工具包,最初构建于 SoundCloud。大多数 Prometheus 组件都是用 Go 编写的,这使得它们易于构建和部署为静态二进制文件. | ||
YouTube 使用 Go 和 Vitess(现在是 PlanetScale 的一部分),这是它的数据库集群系统,用于通过通用分片对 MySQL 进行水平扩展。自 2011 年以来,它一直是 YouTube 数据库基础架构的核心组件,并且已经发展到包含数万个 MySQL 节点. |
开始
有关 DevOps 和 SRE 的Go书籍
监控和追踪
-
opentracing/opentracing-go
供应商中立的 API 和用于分布式跟踪的工具
-
jaegertracing/jaeger-client-go
优步格式开发的开源分布式追踪系统
-
grafana/grafana
用于监控和可观察性的开源平台
-
istio/istio
开源服务网格和可集成平台
CLI 库
-
spf13/cobra
一个用于创建强大的现代 CLI 应用程序的库和一个在 Go 中生成应用程序和 CLI 应用程序的程序
-
spf13/viper
Go 应用程序的完整配置解决方案,旨在在应用程序中工作以处理配置需求和格式
-
urfave/cli
用于创建和组织命令行 Go 应用程序的最小框架