概述
Go 帮助企业实现自动化和扩展
开发运营 (DevOps) 团队帮助工程组织自动化任务并改进其持续集成和持续交付和部署 (CI/CD) 流程。DevOps 可以推翻开发孤岛并实施工具和自动化,以增强软件开发、部署和支持。
网站可靠性工程 (SRE) 诞生于 Google,目的是让该公司的“大型网站更可靠、更高效、更具可扩展性”,独立 DevOps 顾问 Silvia Fressard 写道。“他们开发的实践很好地满足了 Google 的需求,以至于其他大型科技公司,例如 Amazon 和 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。小型部署自动化脚本会变成推出管理服务。使用 Go,当软件范围不可避免地扩大时,DevOps/SRE 处于非常有利的位置,可以取得成功。从 Go 开始,当这种情况发生时,你将处于非常有利的位置,可以取得成功。
使用 Go 的低内存占用和文档生成器扩展和维护大型应用程序
Go 的垃圾回收器意味着 DevOps/SRE 团队不必担心内存管理。Go 的自动文档生成器 (godoc) 使代码自文档化——降低维护开销,并从一开始就建立最佳实践。
特色用户
客户 | 简介 | 使用 go 的项目 |
---|---|---|
Docker 是一个软件即服务 (SaaS) 产品,用 Go 编写,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 书籍
监控和跟踪
-
open-telemetry/opentelemetry-go
用于监控和分布式跟踪的供应商中立 API 和工具
-
jaegertracing/jaeger-client-go
由 Uber 格式开发的开源分布式跟踪系统
-
grafana/grafana
用于监控和可观察性的开源平台
-
istio/istio
开源服务网格和可集成平台
CLI 库
-
spf13/cobra
用于创建功能强大的现代 CLI 应用程序的库,以及用于在 Go 中生成应用程序和 CLI 应用程序的程序
-
spf13/viper
为 Go 应用程序提供一个完整的配置解决方案,旨在应用程序中处理配置需求和格式
-
urfave/cli
用于创建和组织命令行 Go 应用程序的最小框架