Firebase 托管团队为 Google Cloud 客户提供静态网络托管服务。它们提供位于全球内容交付网络后面的静态 Web 主机,并为用户提供易于使用的工具。该团队还开发了从上传站点文件到注册域再到跟踪使用情况的功能.
在加入 Google 之前,Firebase Hosting 的技术栈是用 Node.js 编写的。当团队需要与其他几项 Google 服务进行互操作时,他们开始使用 Go。他们决定使用 Go 来帮助他们轻松高效地扩展,因为他们知道“并发性将继续成为一个大需求”。团队中的软件工程师 Michael Bleigh 说,他们“相信 Go 的性能会更好”,并且“喜欢 Go 比他们正在考虑的其他语言更简洁”.
从一个用 Go 编写的小服务开始,该团队通过一系列动作迁移了整个后端。该团队逐步确定了他们想要实现的大型功能,并在此过程中用 Go 重写它们并迁移到 Google Cloud 和 Google 的内部集群管理系统。现在 Firebase 托管团队已经用 Go 替换了 100% 的后端 Node.js 代码.
该团队的 Go 编写经验始于一名工程师。Bleigh 说:“通过点对点学习和Go通常很容易上手,现在团队中的每个人都拥有Go开发经验。” 他们发现,虽然大多数新加入团队的人没有任何Go经验,但“他们中的大多数人在几周内就富有成效。”
“使用 Go,很容易看到代码的组织方式以及代码的作用,”Bleigh 代表团队说。“Go 通常非常具有可读性和可理解性。由于语言中的习语,语言的错误处理、接收器和接口都很容易理解。”
随着团队的扩展,并发性仍然是团队关注的焦点。软件工程师罗伯特·罗斯尼 (Robert Rossney) 分享道:“Go 可以很容易地将所有硬并发的东西放在一个地方,其他地方都被抽象化了。” Rossney 还谈到了使用考虑到并发性构建的语言的好处,他说“在 Go 中也有很多方法可以实现并发性。我们必须了解每条路线何时最佳,如何确定问题何时是并发问题,如何调试——但这是因为您实际上可以在 Go 代码中编写这些模式。”
“一般来说,团队中没有一段时间让我们对 Go 感到沮丧,它只是让你做工作.”
”数十万客户使用 Firebase Hosting 托管他们的网站,这意味着 Go 代码每天用于处理数十亿个请求。“自从迁移到 Go 以来,我们的客户群和流量已经翻了几倍,而无需微调优化” Bleigh 分享道。使用 Go,团队在软件和团队中都看到了性能改进,并获得了出色的生产力提升。“一般来说,”Rossney 说,“……团队中没有一段时间让我们对 Go 感到沮丧,它只是让你做工作。”
除了 Firebase 托管团队之外,Google 的工程团队也在他们的开发过程中采用了 Go。了解Core Data Solutions 和Chrome 团队如何使用 Go 来大规模构建快速、可靠和高效的软件.
About Firebase
Firebase 是 Google 的移动平台,可帮助您快速开发优质应用并发展业务.
Firebase 托管团队分享了他们与 Go 的合作历程,包括他们从 Node.js 的后端迁移、新 Go 开发人员的入职流程以及 Go 如何帮助他们扩展.