在 Target 推荐 GoLang

上个月初,作为季度企业架构研讨会的一部分,Target 技术社区提出了将 GoLang 提升为团队在选择如何构建应用程序时的推荐状态的案例。

背后的故事

Go 的简要说明

GoLang 是一种开源编程语言,最初由 Google 于 2009 年由 Robert Griesemer、Rob Pike 和 Ken Thompson 开发。它专注于使高速、本地编程变得容易。Go 的一个独特功能是其内置的并发原语,称为goroutines 和channels

两年前

Go 很快到达了 Target,并慢慢开始向需要高输入/输出和并发性的大型企业计划展示价值。随着工程师在整个组织中移动,更大的技术社区的一部分开始提倡使用 Go。随着使用量的增加,企业架构团队开始注意到并举行了一次会议,讨论 Go 在我们的推荐技术指南中的位置,该指南旨在确保整个组织团队的统一技术方向。

在 2016 年的研讨会期间,由于 GoLang 在 Target 还相对年轻,团队犹豫是否要对 GoLang 给出广泛的建议。他们引用了对 Go 社区长寿的担忧,并希望密切关注以确保该语言不仅仅是我们工程社区内部的一种时尚。此外,关于雇佣 Go 程序员的能力还有另一个合理的担忧。当时在我们社区中使用 Go 的大多数人都是通过自学在工作中学习的。这意味着企业面临的风险是,如果 Go 逐渐流行起来,寻找开发人员来支持使用该语言开发的项目将变得更加困难。

推广Go

获得用户

在接下来的两年里,Target 的许多应用程序开始使用 Go。在加入我们之前,团队开始寻找更多了解 Go 的开发人员。随着时间的推移,EA 团队继续围绕 Go 进行讨论,因为他们继续关注 Go 在我们团队中的发展。

回到Workshop

当我加入 Target 时,我知道我想深入参与在我周围发现的技术社区(Shameless Plug:Target 拥有最好的学术技术社区和自学成才的技术人员之一,你应该看看我们:- ))。我开始参与聊天室,并就我周围的问题进行对话。我发现 Go 在我们的指南中被列为“有限使用”,这意味着在开始认真研究项目之前,需要确定为什么 Java(或其他 JVM 语言,如 Kotlin 和 Groovy),Target 的独家推荐语言,不应该是用过的。在找到了一个在 Go 中拥有大型项目的充满热情的社区后,我开始与 Enterprise Architecture 就该主题进行对话,并提供来自整个社区的关于它被使用的地方的证据。

令人惊讶的是,我了解到我在企业架构方面为自己赢得了很多东西,但主要是我在 Target 支持 Go 社区的坚韧不拔。12 月初,《推荐技术指南》中提出了另一个关于推广 Go 的问题。我决定支持这项工作,在我的支持下,我们决定是时候回到研讨会上,考虑 Go 在我们的现场指南中的位置了。

Workshop

我准备通过研究我们使用 Go 的项目并找出为什么这么多人喜欢 Go 来支持将语言提升到推荐状态。这是因为我们大多数人都这样做的原因。我发现我们喜欢简化的语法、强大的标准库、强大的外部社区以及精心构建和维护的库。我们喜欢在部署容器时可以构建的快速编译时间和非常小的镜像。随着我们不断为客户发展和扩展我们的技术解决方案,我们发现 Go 中的并发原语特别有用。

几周后,我发现自己站在 CIO 团队面前,我们的大多数主要工程师都在听我解释我对 Go 的立场。一些人对我们围绕 JVM 的总体一致性以及我们可以在 Spring 和 Ratpack 等框架中产生的独特集成表示担忧。经过良好的讨论,我们得出结论,与社区合作,我们可以将类似的集成构建到这里构建的 Go 应用程序中。

最后,我们确实确定 GoLang 应该成为团队推荐的技术,主要关注系统工程任务和 Go 的优势有意义的范围。我们都对 Go 项目在过去两年取得的进展以及使用 Go 的团队感到非常满意。

未来与 Go 同行

既然 Go 是 Target 的工程人员推荐的技术,我们可以更自由地使用 Go,与同样推荐的 JVM 语言结合使用。我们继续使用这两种语言来做我们最擅长的事情,帮助我们的客人发现快乐。我们的 GoLang 社区庆祝了——然后我们愉快地回到了我们的 sprint go get


关于作者

James Bell 是 Target Technology Services 的一名工程师,负责客户可靠性工程,帮助实现更可靠的技术解决方案。他是GREASE的作者, 并定期参加 MSP 领域的技术活动。他对架构、分布式计算和技术布道充满热情。