托管团队采用Go语言的起源:一位工程师的经验
托管团队提供全球内容交付网络后面的静态网络托管服务,为云客户提供方便易用的工具。他们开发了一套功能强大的工具,从上传网站文件到注册域名再到跟踪使用情况,一应俱全。
在加入托管网站之前,团队的技术堆栈是基于Node.js编写的。然而,当团队需要与其他几个服务进行互操作时,他们开始采用Go语言。选择Go的原因是为了帮助他们更轻松、高效地扩展,并且他们意识到并发性将继续是一个重要需求。团队中的软件工程师们表示,他们相信Go语言将会表现得更好,而且他们喜欢Go语言的简洁性,这是其他考虑中的语言所不具备的。
从用 Go 编写的小型服务开始,团队通过一系列举措迁移了整个后端。 团队逐渐确定了他们想要实现的大型功能,并在此过程中用 Go 重写了它们,并迁移到了云和内部集群管理系统。 托管团队现已将后端 Node.js 代码 100% 替换为 Go。
该团队使用 Go 编写的经验始于一名工程师。 “学习和围棋通常很容易通过同行学习来掌握,现在团队中的每个人都有围棋开发经验,”说。 他们发现,虽然团队中的大多数新人没有任何 Go 经验,但“他们中的大多数人在几周内就变得富有成效”。
“使用 Go,可以很容易地看到代码是如何组织的以及代码做了什么”,团队代表说道。 “Go 总体上非常具有可读性和可理解性。由于语言中的习惯用法,该语言的错误处理、接收器和接口很容易理解。”
随着团队规模的扩大,并发性仍然是团队的焦点。 软件工程师 () 分享道:“Go 使我们能够轻松地将所有硬并发内容放在一个地方,而在其他地方则将其抽象出来。” 还谈到使用该语言的好处,他说:“在 Go 中实现并发的方法也有很多。我们必须了解每条路线何时是最优的、如何确定何时出现并发问题、如何调试——但这是因为你实际上可以用 Go 代码编写这些模式。”
成千上万的客户使用托管来托管他们的网站,这意味着 Go 代码每天用于处理数十亿个请求。 “自从迁移到 Go 以来,我们的客户群和流量成倍增加,而无需进行微调优化,”分享道。 使用 Go,团队发现软件和团队的性能都得到了改善,生产力也得到了显着提高。 “一般来说,”他说,“……在团队中,我们不会因使用 GO 而感到沮丧托管网站,它只是让你做事。”