MercadoLibre 伴隨 Go 語言成長

MercadoLibre
Quotation mark.

我認為,Go 語言之旅是我見過最好的語言入門教程,它真的非常簡單,並且能讓你對這門語言的大約 80% 有一個大致的瞭解。當我們希望開發者學習 Go 語言並快速投入生產時,我們都會告訴他們從 Go 語言之旅開始。

—— Eric KohanMercadoLibre 軟體工程經理

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 Marketplace、MercadoPago FinTech 平臺、MercadoLibre 的運輸和物流解決方案以及其他託管解決方案使用。由於這些解決方案所需的服務水平很高——平均使用者 API 每分鐘有 8 到 1000 萬個請求——該團隊使用 Go 語言在每請求不到 10 毫秒的時間內為它們提供服務。

API 團隊還部署了 Docker 容器——一種軟體即服務 (SaaS) 產品,也用 Go 語言編寫——以虛擬化其開發並透過 Docker Engine 輕鬆部署其微服務。該系統支援更大的、任務關鍵型 API,這些 API 每分鐘處理超過 2000 萬個 Go 語言請求。

一個 API 重要地使用了 Go 的併發原語來有效地多路複用來自多個服務的 ID。團隊能夠用幾行 Go 程式碼實現這一點,這個 API 的成功說服了核心 API 團隊將越來越多的微服務遷移到 Go。MercadoLibre 的最終結果是提高了成本效率和系統響應時間。

Go 語言實現可擴充套件性

從歷史上看,該公司的大部分技術棧都是基於 Grails 和 Groovy,並由關係資料庫支援。然而,這個具有多層的大型框架很快就遇到了可擴充套件性問題。

將這種遺留架構轉換為 Go 作為構建 API 的全新、非常薄的框架,簡化了這些中間層並帶來了巨大的效能優勢。例如,一個大型 Go 服務現在能夠每臺機器執行 70,000 個請求,僅佔用 20 MB 記憶體。

Go 對我們來說簡直太棒了。它功能強大且易於學習,對於後端基礎設施而言,在可擴充套件性方面對我們幫助很大。

—— Eric KohanMercadoLibre 軟體工程經理

使用 Go 語言讓 MercadoLibre 將其用於此服務的伺服器數量減少了八分之一(從 32 臺伺服器減少到 4 臺),此外每臺伺服器的功耗也更低(原來是四個 CPU 核心,現在減少到兩個 CPU 核心)。藉助 Go 語言,該公司取消了 88% 的伺服器,並將剩餘伺服器的 CPU 減半——從而產生了巨大的成本節約。

MercadoLibre 位於開發人員和雲提供商之間,使用名為 Fury 的平臺——一個平臺即服務工具,用於以雲無關的方式構建、部署、監控和管理服務。因此,任何想要在 Go 中建立新服務的團隊都可以訪問各種服務型別的成熟模板,並且可以快速在 GitHub 中啟動一個包含入門程式碼、服務的 Docker 映象和部署管道的倉庫。最終結果是一個系統,它允許工程師專注於構建創新服務,同時避免設定新專案的繁瑣階段——所有這些都有效地標準化了構建和部署管道。

如今,MercadoLibre 大約一半的流量由 Go 應用程式處理。

MercadoLibre 將 Go 語言用於開發者

MercadoLibre 基礎設施的程式設計通用語言目前是 Go 和 Java。每個應用程式、每個程式、每個微服務都託管在自己的 GitHub 儲存庫中,此外,公司還使用一個額外的工具包 GitHub 儲存庫來解決新問題並允許客戶與其服務進行互動。

這些廣泛且精心策劃的 Go 和 Java 工具包允許程式設計師快速開發新應用程式並獲得大力支援。此外,在一個擁有 2800 多名開發人員的社群中,MercadoLibre 擁有多個內部群組,可以就部署 Go 提供聊天和指導,無論是在不同的開發中心還是不同的國家。公司還培育內部工作組,為新的 MercadoLibre Go 開發人員提供培訓課程,併為外部開發人員舉辦 Go 聚會,以幫助建立更廣泛的拉丁美洲 Go 開發人員社群。

Go 語言作為招聘工具

MercadoLibre 對 Go 語言的倡導也成為公司強大的招聘工具。MercadoLibre 是阿根廷首批使用 Go 語言的公司之一,並且可能是拉丁美洲在生產中廣泛使用該語言的最大公司。MercadoLibre 總部位於布宜諾斯艾利斯,附近有許多初創公司和新興科技公司,其對 Go 語言的採用塑造了潘帕斯草原地區開發人員的市場。

我們與該語言的宏大理念真正契合。我們喜歡 Go 的簡潔性,並且我們發現它非常明確的錯誤處理對開發人員來說是一種收穫,因為它在生產中會產生更安全、更穩定的程式碼。

—— Eric KohanMercadoLibre 軟體工程經理

布宜諾斯艾利斯如今是一個競爭激烈的程式設計師市場,為計算機程式設計師提供了許多就業選擇,該地區對技術的高需求推動了豐厚的薪水、優厚的福利以及選擇僱主時的自主權。因此,MercadoLibre——就像該地區所有工程師和程式設計師的僱主一樣——努力提供一個令人興奮的工作場所和強大的職業發展道路。Go 語言已被證明是 MercadoLibre 的一個關鍵差異化因素:公司為外部開發人員組織 Go 研討會,讓他們可以來學習 Go,當他們喜歡自己正在做的事情和與他們交談的人時,他們很快就會將 MercadoLibre 視為一個誘人的工作場所。

Go 語言賦能開發者

MercadoLibre 採用 Go 語言是因為其在規模化系統上的簡潔性,但這種簡潔性也是該公司開發人員熱愛 Go 語言的原因。

公司還使用諸如 Go by ExampleEffective Go 等網頁來教育新程式設計師,並分享用 Go 編寫的代表性內部 API,以加快理解和熟練程度。MercadoLibre 的開發人員獲得了掌握該語言所需的資源,然後利用他們自己的技能和熱情開始程式設計。

Go 在編寫業務邏輯方面表現出色,我們就是編寫這些 API 的團隊。

—— Federico Martin RoasioMercadoLibre 技術專案負責人

MercadoLibre 利用 Go 簡潔明瞭的語法,使開發人員更容易編寫能在現代雲平臺上高效執行的程式。雖然開發速度為公司帶來了成本效益,但開發人員個人也從 Go 提供的快速學習曲線中受益。MercadoLibre 經驗豐富的工程師不僅能用 Go 語言快速構建高度關鍵的應用程式,就連初級工程師也能編寫出在其他語言中 MercadoLibre 只會信任更資深開發人員的服務。例如,一套關鍵的使用者 API——每分鐘處理近千萬個請求——是由初級軟體工程師開發的,其中許多人只通過大學最近的課程瞭解程式設計。同樣,MercadoLibre 已經看到,已經精通其他程式語言(如 Java、.NET 或 Ruby)的開發人員,能夠足夠快地學習 Go 語言,並在短短幾周內開始編寫生產服務。

使用 Go 語言後,MercadoLibre 的構建時間快了三倍 (3x),他們的測試套件執行速度驚人地快了 24 倍。這意味著公司的開發人員可以更快地進行更改,然後構建和測試這些更改。

將 MercadoLibre 的測試套件執行時間從 90 秒縮短到僅 3 秒,這對開發人員來說是一個巨大的福音——讓他們在測試更快完成的同時保持專注(和上下文)。

憑藉這一成功,MercadoLibre 不僅致力於為其程式設計師提供持續教育,還致力於持續的 Go 語言教育。公司每年都會派主要工程領導參加 GopherCon 和其他 Go 語言活動,MercadoLibre 的基礎設施和安全團隊鼓勵所有開發團隊保持 Go 語言版本更新,並且公司擁有一支正在開發 Go-meli-toolkit 的團隊:一個完整的 Go 語言庫,用於連線 Fury 提供的所有服務。

讓您的企業開始使用 Go

就像 MercadoLibre 從概念驗證專案開始實施 Go 語言一樣,數十家其他大型企業也在採用 Go 語言。

全球有超過一百萬的開發人員使用 Go 語言——涵蓋銀行和商業、遊戲和媒體、技術以及其他行業,在像 美國運通貝寶、Capital One、Dropbox、IBM、Monzo、紐約時報、Salesforce、Square、Target、Twitch、Uber 以及當然還有 Google 等眾多企業中。

要了解更多關於 Go 語言如何幫助您的企業構建可靠、可擴充套件的軟體,就像在 MercadoLibre 所做的那樣,請立即訪問 go.dev

MercadoLibre MercadoLibre

關於 MercadoLibre

Go 語言提供簡潔、高效的程式碼,可以隨著 MercadoLibre 線上商業的增長而輕鬆擴充套件,並透過讓工程師在編寫更少程式碼的同時服務於不斷增長的受眾,從而提高開發人員的生產力。