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

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

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

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

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

随着扩展,并发仍然是团队的重点。软件工程师 Robert Rossney 分享道,“Go 可以很容易地将所有复杂的并发问题集中在一个地方,而在其他地方则被抽象化了。”Rossney 还谈到了使用为并发而设计的语言的好处,他说,“Go 中也有很多进行并发的方法。我们不得不学习何时使用每种方法最好,如何确定问题是否是并发问题,如何调试——但这源于事实上你确实可以用 Go 代码编写这些模式。”

总的来说,团队中没有哪个时候我们会对 Go 感到沮丧,它只是默默地工作,让你能够完成任务。

— Robert Rossney软件工程师

成千上万的客户通过 Firebase Hosting 托管他们的网站,这意味着 Go 代码每天被用于处理数十亿次请求。“自迁移到 Go 以来,我们的客户群和流量已经翻倍了多次,而且从未需要进行微调优化,”Bleigh 分享道。借助 Go,团队在软件和团队方面都取得了性能改进,生产力也得到了显著提升。“总的来说,”Rossney 提到,“……团队中没有哪个时候我们会对 Go 感到沮丧,它只是默默地工作,让你能够完成任务。”

除了 Firebase Hosting 团队,Google 各地的工程团队也已在其开发过程中采用了 Go。阅读 Core Data SolutionsChrome 团队如何使用 Go 来构建快速、可靠且高效的大规模软件。

Firebase Firebase

关于 Firebase

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

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