Go 语言在 Google 中的应用¶
Note
本文由黄健宏翻译自 《Go 1.18 and Google Cloud: Go now with Google Cloud》 。
Go 团队在 3 月 15 日发布了 Go 1.18 正式版, 这是该语言的最新版本。 在经历了十多年的设计之后, 这个版本给开发者带来了他们渴望已久的特性: 泛型、模糊测试和模块工作区。 通过这个版本, Go 成为了第一个无需第三方支持、直接将模糊测试整合至其核心工具链的主要语言, 从而使得 Go 在开发安全的应用程序方面更具竞争力。
Go 语言于 2007 年在 Google 创立, 旨在帮助开发者构建快速、可靠和安全的软件, 它跟其他传统语言的其中一个显著不同, 就是 Go 是为现代的多核计算世界而生的。 基于这一点, Go 现在已经被广泛用于开发云应用程序、服务和基础设施。 如今, Go 正在为 Google 最大的几个产品提供动力, 而这些产品又被许许多多客户用于扩展他们的业务。 很多大大小小的组织都对 Go 喜爱有加, 而被称为“Gopher”的 Go 开发者社区更是已经发展成了一个人数超过两百万用户之众的全球关系网络。
在云中使用 Go 的力量¶
在公开的资源库中, 超过 75% 的 CNCF 项目(包括 Kubernetes 在内)都是用 Go 编写的, 而截至 2021 年 5 月为止, 全球共有 10% 的开发者在使用 Go 编写程序。 Google 提供高性能的基础设施来运行关键的、云原生的开源项目。 我们的现代云基础设施以 Kubernetes 为核心, 并通过对 Istio 和 Knative 的有力支持构建出领先的服务, 比如 Google Kubernetes Engine (GKE), 管理应用平台 Anthos , 还有 Cloud Function 和 Cloud Run 。 除此之外, Google 还在各种应用中广泛使用 Go , 包括为 Google Search 提供动力的索引平台, 为 Google Chrome 超过十亿用户提供动力的服务器端优化, 以及构建 Google Cloud 的基础设施。
新版亮点¶
随着 Go 1.18 版本出现的泛型是 Go 语言自诞生以来最大的变化。 Go 开发者告诉我们, 他们认为 Go 缺少一些关键的特性, 而泛型就是其中至关重要的一项。 通过 Go 1.18 , 新来的和业已存在的 Go 开发者可以利用泛型带来的生产力、性能和维护方面的优势。 我们看到, 在短暂的测试期间, 已经有地鼠开始使用泛型来构建新型的库和项目。 随着时间的推移, 这种创造力将会越来越强。
这次的新版 Go 还带来了对模糊测试的本地支持。 模糊测试(fuzzing)是一种漏洞测试, 这种测试通过向软件的某个部分传入任意数据以暴露未知的错误, 它正成为企业开发中的一种常见测试方案。 Go 现在是第一个不需要第三方集成、直接提供模糊测试支持的主要语言, 这种做法使得开发者可以用最小的额外成本开始构建安全的软件。 Go 对模糊测试的创新支持不仅可以为当前的代码提供安全保障, 还可以随着代码和依赖关系的发展提供持续保护。 随着对软件的攻击变得越来越普遍和复杂, 漏洞检测可能会成为企业开发生命周期的其中一个关键部分, 而 Go 的模糊测试特性可以在生命周期的早期就将漏洞捕获。
使用 Go 实现安全的构建¶
开源软件是大部分网络世界的结缔组织, 而 Google 正在努力让开源软件变得更安全。 在 Google , 我们一直在努力提高对开源安全状况的感知, 并致力于帮助企业确保软件供应链的安全。 Go 被设计用于创建安全的应用程序, 并尽可能地将风险降到最低。 Go 会将应用程序编译成单一一个没有本地依赖的二进制文件, 并且只使用标准库又或者少数几个经过严格审查的 Go 依赖来构建应用程序的情况并不罕见。 Go 的依赖管理使用了防篡改的透明日志, 其内置的工具可以帮助确保你的依赖都是符合你期待的。 Go 拥有原生的加密功能, 这些功能被广泛地应用在各个网络当中, 其中包括 Google 的关键组件。 Go 甚至支持无发行版的容器, 从而让你无需担心任何本地依赖关系。 Google Cloud 的云产品, 比如用于 CI/CD 和构件注册表(Artifact Registry)的 Cloud Build, 可以直接访问 Go 的漏洞数据库, 并为你提供关于安全威胁的即时警告。
“Google 致力于为全世界赖以生存的在线基础设施和应用程序提供帮助。 这项使命的一个关键之处在于能够理解和验证开源依赖链的安全性。” Google 研究员兼基础设施副总裁 Eric Brewer 说: “无论是在帮助确保开发者能够建立安全的应用程序, 还是在理解发现漏洞时带来的风险, 又或者减少网络安全攻击造成的影响方面, Go 的 1.18 版本都迈出了重要的一步”。
这次发布是 Go 的一个重要里程碑, 它将帮助世界各地的开发者构建出能够运行在任何基础设施之上的应用程序, 并且这些应用将拥有更好的性能和更高的安全性。 有关此次发布的更多信息以及如何开始使用 Go, 请访问 Go 的官方网站。
Note
对 Go 语言感兴趣的朋友, 欢迎通过我的译作《Go 语言趣学指南》和《Go Web 编程》学习 Go 语言。