Firebase Hosting 团队为 Google Cloud 客户提供静态 Web 托管服务。他们提供一个位于全球内容分发网络后面的静态 Web 主机,并为用户提供易于使用的工具。该团队还开发了从上传网站文件到注册域名再到跟踪使用情况等功能。

在加入 Google 之前,Firebase Hosting 的技术堆栈是用 Node.js 编写的。当团队需要与其他几项 Google 服务进行交互时,他们开始使用 Go。他们决定使用 Go 来帮助他们轻松高效地扩展,因为他们知道“并发性将继续成为一大需求”。团队软件工程师 Michael Bleigh 说,“我们相信 Go 的性能会更好”,“而且我们喜欢 Go 比我们考虑的其他语言更简洁”。

从一项用 Go 编写的微型服务开始,该团队分阶段迁移了其整个后端。该团队逐步确定了他们想要实现的大型功能,并在这一过程中用 Go 对其进行重写,并迁移到 Google Cloud 和 Google 的内部集群管理系统。现在,Firebase Hosting 团队已用 Go 替换了 100% 的后端 Node.js 代码。

该团队编写 Go 的经验始于一位工程师。“通过同伴学习,以及 Go 通常易于上手,团队中的每个人现在都有 Go 开发经验,”Bleigh 说。他们发现,虽然大多数刚加入团队的人没有任何 Go 经验,“但他们中的大多数人在几周内就能高效工作。”

Bleigh 代表团队说:“使用 Go,很容易看出代码是如何组织的以及代码的作用。”“Go 通常非常易读且易于理解。该语言的错误处理、接收器和接口都易于理解,因为该语言中采用了惯用法。”

随着团队的扩展,并发性仍然是团队关注的重点。软件工程师 Robert Rossney 分享说,“Go 使得将所有困难的并发性内容放在一个地方变得非常容易,并且在其他所有地方都是抽象的。”Rossney 还谈到了使用专门为并发性而构建的语言的好处,他说,“在 Go 中还有很多方法可以实现并发性。我们必须学习每条路线何时最优,如何确定问题何时是并发性问题,如何调试——但这源于这样一个事实,即你实际上可以在 Go 代码中编写这些模式。”

总的来说,团队中没有我们对 Go 感到沮丧的时候,它只是让路让你工作。

— Robert Rossney软件工程师

数十万客户使用 Firebase 托管来托管他们的网站,这意味着 Go 代码每天用于处理数十亿个请求。“自迁移到 Go 以来,我们的客户群和流量已经翻了一番,而无需进行微调优化”Bleigh 分享说。使用 Go,该团队看到了软件和团队的性能改进,并获得了极好的生产力提升。“总的来说,”Rossney 提到了,“……团队中没有我们对 Go 感到沮丧的时候,它只是让路让你工作。”

除了 Firebase 托管团队外,Google 的工程团队在其开发过程中也采用了 Go。了解核心数据解决方案Chrome团队如何使用 Go 大规模构建快速、可靠且高效的软件。

Firebase Firebase

关于 Firebase

Firebase 是 Google 的移动平台,可帮助你快速开发高质量的应用并发展你的业务。

Firebase Hosting 团队分享了他们使用 Go 的历程,包括从 Node.js 迁移后端、新 Go 开发人员轻松上手以及 Go 如何帮助他们扩展。