MercadoLibre 与Go一起成长

MercadoLibre
Quotation mark.

我认为Go边学边练是迄今为止我见过的对一门语言最好的介绍,它真的很简单,它让您大致了解了这门语言的 80%。当我们想让开发人员学习 Go 并快速投入生产时,我们告诉他们从 Go 边学边练开始

— Eric Kohan软件工程经理  at MercadoLibre

Go 帮助集成生态系统吸引开发人员并扩展电子商务

MercadoLibre, Inc. 拥有拉丁美洲最大的在线商务生态系统,业务遍及 18 个国家/地区。该公司成立于 1999 年,总部位于阿根廷,已转向 Go 帮助其扩展和现代化其生态系统。Go 提供了干净、高效的代码,可以随着 MercadoLibre 在线商务的增长而轻松扩展,并通过允许他们的工程师在编写更少代码的同时为不断增长的受众提供服务来提高开发人员的生产力.

MercadoLibre为了规模转向Go

早在 2015 年,MercadoLibre 就越来越意识到他们现有的基于 Groovy 和 Grails 的 API 框架已经达到极限,公司需要一个不同的平台来继续扩展。MercadoLibre 的平台曾经(并将继续)呈指数级扩展,这为其开发人员创造了大量额外工作:Groovy 和 Grails 都需要开发人员做出大量决策,而 Groovy 是一种动态编程语言。这对于快速扩展增长来说不是一个好的组合,因为 MercadoLibre 需要在这个资源密集型环境中非常有经验的开发人员来开发和调整以实现所需的性能。测试执行时间很慢,构建和部署时间很慢。因此,对代码效率和可扩展性的需求变得与对代码开发速度的需求一样重要.

Go提高系统效率

作为 Go 对网络效率贡献的一个例子,核心 API 团队在公司微服务解决方案的中心构建和维护最大的 API。该团队创建用户 API,而这些 API 又被 MercadoLibre 市场、MercadoPago FinTech 平台、MercadoLibre 的运输和物流解决方案以及其他托管解决方案使用。由于这些解决方案需要高服务级别——平均用户 API 每分钟有 8 到 1000 万个请求——该团队使用 Go 以每个请求不到 10 毫秒的速度为它们提供服务.

API 团队还部署了 Docker 容器——一种软件即服务 (SaaS) 产品,也是用 Go 编写的——以虚拟化他们的开发并通过 Docker 引擎轻松部署他们的微服务。该系统支持更大的关键任务 API,在 Go 中每分钟处理超过 2000 万个请求

一个 API 重要地使用了 Go 的并发原语来有效地复用来自多个服务的 ID。该团队仅用几行 Go 代码就可以实现这一点,而这个 API 的成功说服了核心 API 团队将越来越多的微服务迁移到 Go。MercadoLibre 的最终结果是提高了成本效率和系统响应时间.

Go可扩展性

从历史上看,该公司的大部分技术栈都基于由关系数据库支持的 Grails 和 Groovy。然而,这个具有多层的大型框架很快就被发现遇到了可扩展性问题.

将旧架构转换为 Go 作为构建 API 的新的、非常瘦的框架,简化了这些中间层,并产生了巨大的性能优势。例如,一个大型 Go 服务现在能够在每台机器上运行 70,000 个请求,而只需 20 MB 的 RAM

“Go对我们来说太棒了。它非常强大且非常容易学习,并且具有后端基础设施,在可扩展性方面对我们来说非常有用.”

— Eric Kohan软件工程经理  at MercadoLibre

使用Go 允许 MercadoLibre 将他们用于此服务的服务器数量减少到原始数量的八分之一(从 32 个服务器减少到 4 个),而且每台服务器可以以更少的功率运行(最初是四个 CPU 内核,现在减少到两个 CPU核)。借助 Go,该公司取消了 88% 的服务器,并将其余服务器的 CPU 减少了一半——从而节省了大量成本.

MercadoLibre 位于开发人员和云提供商之间,它使用一个名为 Fury 的平台——一种平台即服务工具,用于以与云无关的方式构建、部署、监控和管理服务。因此,任何想要在 Go 中创建新服务的团队都可以访问适用于各种服务类型的经过验证的模板,并且可以在 GitHub 中使用入门代码、服务的 Docker 映像和部署快速启动存储库管道。最终结果是一个系统,允许工程师专注于构建创新服务,同时避免设置新项目的乏味阶段——同时有效地标准化构建和部署管道.

今天,大约一半的 Mercadolibre 流量是由 Go 应用程序处理的.

MercadoLibre 为开发人员使用 Go

MercadoLibre 基础设施的编程语言目前是 Go 和 Java。每个app、每个程序、每个微服务都托管在自己的 GitHub 存储库中,此外,该公司还使用一个额外的 GitHub 工具包存储库来解决新问题并允许客户与其服务进行交互.

这些广泛且精心策划的 Go 和 Java 工具包使程序员能够在强大的支持下快速开发新应用程序。此外,在拥有 2,800 多名开发人员的社区中,MercadoLibre 拥有多个内部群组,可用于在不同的开发中心或不同的国家/地区就部署 Go 进行聊天和指导。该公司还成立了内部工作组,为新的 MercadoLibre Go 开发人员提供培训课程,并为外部开发人员举办Go聚会,以帮助建立更广泛的拉丁美洲Go开发人员社区.

Go作为招聘工具

MercadoLibre 的 Go 倡导也已成为该公司强大的招聘工具。MercadoLibre 是阿根廷最早使用 Go 的公司之一,并且可能是拉丁美洲最大的公司,在生产中广泛使用该语言。MercadoLibre 总部位于布宜诺斯艾利斯,附近有许多初创企业和新兴技术公司,采用 Go 为潘帕斯草原的开发人员塑造了市场.

“我们真的看到了更大的语言哲学。我们喜欢 Go 的简单性,我们发现它非常明确的错误处理对开发人员来说是一种收获,因为它可以在生产中产生更安全、更稳定的代码.”

— Eric Kohan软件工程经理  at MercadoLibre

布宜诺斯艾利斯如今是程序员竞争非常激烈的市场,为计算机程序员提供了许多就业选择,该地区对技术的高需求推动了丰厚的薪水、丰厚的福利以及在选择雇主时具有选择性的能力。因此,与该地区所有工程师和程序员雇主一样,MercadoLibre 努力提供令人兴奋的工作场所和强大的职业道路。事实证明,Go是 MercadoLibre 的一个关键差异化因素:公司为外部开发人员组织Go研讨会,这样他们就可以过来学习Go,当他们喜欢自己正在做的事情和与之交谈的人时,他们很快就会认识到 MercadoLibre 是一个诱人的地方去工作.

Go 赋能开发者

MercadoLibre 使用 Go 是因为它在大规模系统中的简单性,但这种简单性也是该公司的开发人员喜欢 Go 的原因.

该公司还使用 Go by Example Effective Go 等网页来教育新程序员,并共享用 Go 编写的具有代表性的内部 API,以加快理解和熟练程度。MercadoLibre 开发人员获得接受该语言所需的资源,然后利用自己的技能和热情开始编程.

“Go 非常适合编写业务逻辑,而我们是编写这些 API 的团队.”

— Federico Martin Roasio技术项目负责人  at MercadoLibre

利用 Go 富有表现力和简洁的语法,使开发人员可以更轻松地编写在现代云平台上高效运行的程序。虽然开发速度为公司带来了成本效益,但开发人员可以从 Go 提供的快速学习曲线中受益。MercadoLibre 的经验丰富的工程师不仅能够使用 Go 非常快速地构建高度关键的应用程序,而且即使是入门级工程师也能够编写服务,而在其他语言中,MercadoLibre 只会信任更高级的开发人员。例如,一组关键的用户 API(每分钟处理近 1000 万个请求)是由入门级软件工程师开发的,其中许多人只从大学最近的课程中了解编程. 同样,MercadoLibre已经看到已经精通其他编程语言(如Java或.NET或Ruby)的开发人员学习 Go 足够快,在短短几周内开始编写生产服务.

使用 Go,MercadoLibre 的构建时间快了三倍 (3x),他们的测试套件运行速度快了惊人的 24 倍。这意味着公司的开发人员可以进行更改,然后比以前更快地构建和测试更改.

使用 Go将 MercadoLibre 的测试套件运行时间从 90 秒减少到仅 3 秒,这对其开发人员来说是一个巨大的福音——允许他们在完成更快的测试的同时保持专注(和上下文).

利用这一成功,MercadoLibre 不仅致力于对其程序员的持续教育,而且还致力于持续的 Go 教育。公司每年都会向 GopherCon 和其他 Go 活动派遣关键工程负责人,MercadoLibre 的基础设施和安全团队鼓励所有开发团队保持 Go 版本保持最新,并且公司有一个团队开发Go-meli-toolkit:一个完整​​的 Go库来连接 Fury 提供的所有服务.

让您的企业开始使用 Go

正如 MercadoLibre 开始实施 Go 的概念验证项目一样,其他数十家大型企业也正在采用 Go.

全球有超过 100 万的开发人员在使用 Go——跨越银行和商业、游戏和媒体、技术和其他行业,在美国运通PayPal、Capital One、Dropbox、IBM、Monzo、纽约时报、Salesforce、 Square、Target、Twitch、优步,当然还有谷歌.

要详细了解 Go 如何帮助您的企业像 MercadoLibre 一样构建可靠、可扩展的软件,请立即访问go.dev

MercadoLibre MercadoLibre

About MercadoLibre

Go 提供了干净、高效的代码,可以随着 MercadoLibre 在线商务的增长而轻松扩展,并通过允许他们的工程师在编写更少代码的同时为不断增长的受众提供服务来提高开发人员的生产力.