MercadoLibre 與 Go 一同成長

MercadoLibre
Quotation mark.

我認為Go 導覽是迄今為止我所看過對程式語言的最佳介紹,它真的很簡單,而且可以讓您公平地概覽可能達 80% 的語言。當我們希望開發人員學習 Go,並快速投入生產時,我們會告訴他們從 Go 導覽開始。

— Eric Kohan軟體工程經理  at MercadoLibre

Go 協助整合的生態系統吸引開發人員並擴大電子商務規模

MercadoLibre, Inc. 是拉丁美洲最大的線上商務生態系統,並在 18 個國家設有據點。這家公司成立於 1999 年,總部位於阿根廷,已轉向 Go 來協助擴充和現代化其生態系統。隨著 MercadoLibre 的線上商務成長,Go 提供乾淨、有效率的程式碼,可輕易擴充,並透過讓工程師在撰寫較少程式碼的同時服務不斷增加的受眾,來提升開發人員的生產力。

MercadoLibre 利用 Go 進行擴充

早在 2015 年,MercadoLibre 內部就逐漸感受到,他們現有的 API 架構(基於 Groovy 和 Grails)已達到極限,而公司需要不同的平台才能持續擴充。MercadoLibre 的平台正在(且持續)呈指數成長,這為其開發人員創造了許多額外的工作:Groovy 和 Grails 都需要開發人員做出許多決策,而 Groovy 是一種動態程式語言。這對於快速擴充成長而言並非良好的組合,因為 MercadoLibre 需要非常有經驗的開發人員,在這個非常耗費資源的環境中進行開發和調整,才能達到預期的效能。測試執行時間很慢,建置和部署時間也很慢。因此,程式碼效率和可擴充性的需求變得和程式碼開發速度的需求一樣重要。

Go 改善系統效率

舉一個 Go 對網路效率的貢獻範例,核心 API 團隊建置並維護公司微服務解決方案核心的最大 API。這個團隊會建立使用者 API,而這些 API 會再由 MercadoLibre Marketplace、MercadoPago FinTech 平台、MercadoLibre 的運輸和物流解決方案,以及其他託管解決方案使用。由於這些解決方案需要很高的服務水準(平均每個使用者 API 每分鐘有 800 萬到 1000 萬個要求),因此團隊採用 Go 來提供服務,每個要求的處理時間不到 10 毫秒。

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

一個 API 充分利用 Go 的並行原語,從多個服務有效率地多工 ID。團隊僅用幾行 Go 程式碼就能達成這項任務,而這個 API 的成功讓核心 API 團隊決定將更多微服務移轉到 Go。MercadoLibre 的最終成果是改善成本效益和系統回應時間。

Go 的可擴充性

過去,公司堆疊的大部分都基於 Grails 和 Groovy,並由關聯式資料庫支援。然而,這個擁有多個層級的大型架構很快地遇到可擴充性的問題。

將那個舊式架構轉換成 Go 作為一個新的、非常精簡的 API 建置架構,簡化了那些中間層,並產生極佳的效能效益。例如,一個大型 Go 服務現在能夠在僅有 20 MB RAM 的情況下,每台機器執行 70,000 個請求。

「Go 對我們來說簡直太棒了。它非常強大且易於學習,而且在後端基礎架構方面,在可擴充性方面對我們有很大的幫助。」

— Eric Kohan軟體工程經理  在 MercadoLibre

使用 Go 讓 MercadoLibre 能夠將他們用於這個服務的伺服器數量減少到原本的八分之一(從 32 台伺服器減少到 4 台),而且每台伺服器都能以較低的電力運作(原本是 4 個 CPU 核心,現在減少到 2 個 CPU 核心)。透過 Go,公司避免了 88% 的伺服器,並將剩餘伺服器的 CPU 減半,產生了驚人的成本節省。

MercadoLibre 介於開發人員與雲端供應商之間,使用稱為 Fury 的平台,這是一個平台即服務工具,用於以與雲端無關的方式建置、部署、監控和管理服務。因此,任何想要以 Go 建立新服務的團隊都可以使用各種服務類型的經過驗證範本,並可以在 GitHub 中快速建立一個儲存庫,其中包含入門程式碼、服務的 Docker 映像和部署管線。最終結果是一個系統,讓工程師可以專注於建置創新服務,同時避免設定新專案的繁瑣階段,同時有效標準化建置和部署管線。

現在,Mercadolibre 大約一半的流量是由 Go 應用程式處理的。

MercadoLibre 對開發人員使用 Go

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

這些廣泛且經過精心策劃的 Go 和 Java 工具包允許程式設計人員快速且在大量支援下開發新應用程式。此外,在一個擁有超過 2,800 名開發人員的社群中,MercadoLibre 有多個內部群組可供聊天和指導部署 Go,無論是在不同的開發中心或不同的國家/地區。該公司還培養內部工作小組,為新的 MercadoLibre Go 開發人員提供培訓課程,並主辦 Go 聚會,供外部開發人員參與,以協助建置更廣泛的拉丁美洲 Go 開發人員社群。

Go 作為招募工具

MercadoLibre 對 Go 的倡導也已成為該公司的強大招募工具。MercadoLibre 是阿根廷最早使用 Go 的公司之一,也許是拉丁美洲使用該語言如此廣泛於生產環境中最大的公司。MercadoLibre 總部位於布宜諾斯艾利斯,附近有許多新創公司和新興科技公司,它對 Go 的採用已形塑了潘帕斯草原上開發人員的市場。

「我們確實非常認同該語言的宏觀哲學。我們喜愛 Go 的簡潔性,我們發現其非常明確的錯誤處理對開發人員來說是一大進步,因為它能產生更安全、更穩定的生產環境程式碼。」

— Eric Kohan軟體工程經理  在 MercadoLibre

布宜諾斯艾利斯現已成為程式設計師競爭非常激烈的市場,為電腦程式設計師提供了許多就業機會,而該地區對技術的高度需求帶來了優渥的薪資、福利,以及在選擇雇主時能有選擇性的能力。因此,MercadoLibre(就像該地區所有工程師和程式設計師的雇主一樣)致力於提供令人興奮的工作場所和強大的職涯發展道路。Go 已被證明是 MercadoLibre 的關鍵差異化因素:該公司為外部開發人員舉辦 Go 工作坊,以便他們前來學習 Go,當他們享受自己所做的事和他們交談的人時,他們很快就會發現 MercadoLibre 是個誘人的工作場所。

Go 讓開發人員得心應手

MercadoLibre 採用 Go 是因為它在規模化系統中很簡潔,但這種簡潔性也是該公司的開發人員喜愛 Go 的原因。

該公司也會使用網頁,例如Go by ExampleEffective Go來教育新程式設計師,並分享以 Go 編寫的代表性內部 API,以加速理解和熟練度。MercadoLibre 的開發人員取得他們需要來採用這項語言的資源,然後運用他們自己的技能和熱情開始編寫程式。

「Go 非常適合撰寫商業邏輯,而我們就是撰寫這些 API 的團隊。」

— Federico Martin Roasio技術專案負責人  at MercadoLibre

MercadoLibre 採用 Go 的表達性和簡潔語法,讓開發人員更容易撰寫在現代雲端平台上高效執行的程式。雖然開發速度為公司帶來成本效率,但開發人員個別受益於 Go 提供的快速學習曲線。MercadoLibre 的資深工程師不僅能夠使用 Go 非常快速地建置高度關鍵的應用程式,甚至連入門級工程師都能夠撰寫服務,在其他語言中,MercadoLibre 只會將這些服務託付給資深開發人員。例如,一組關鍵使用者 API(每分鐘處理近千萬個請求)是由入門級軟體工程師開發的,其中許多人只知道大學最近課程的程式設計。同樣地,MercadoLibre 已經看到精通其他程式語言(例如 Java 或 .NET 或 Ruby)的開發人員在短短幾週內就能夠快速學習 Go,開始撰寫生產服務。

使用 Go,MercadoLibre 的建置時間快三倍 (3x),而且他們的測試套件執行速度驚人地快 24 倍。這表示該公司的開發人員可以進行變更,然後比以前更快建置和測試該變更。

而且將 MercadoLibre 的測試套件執行時間從 90 秒縮短到使用 Go 只要 3 秒,對其開發人員來說是一個巨大的好處,讓他們可以在更快的測試完成時保持專注(和背景)。

MercadoLibre 充分利用這項成功,不僅致力於持續教育其程式設計師,還致力於持續的 Go 教育。該公司每年都會派關鍵工程主管參加 GopherCon 和其他 Go 活動,MercadoLibre 的基礎架構和安全團隊鼓勵所有開發團隊隨時更新 Go 版本,而且該公司有一個團隊正在開發一個Go-meli-toolkit:一個完整的 Go 函式庫,用於介接 Fury 提供的所有服務。

讓你的企業開始使用 Go

就像 MercadoLibre 從一個概念驗證專案開始實作 Go,其他數十家大型企業也採用了 Go。

全球有超過一百萬名開發人員使用 Go,橫跨銀行和商業、遊戲和媒體、科技和其他產業,在像 美國運通PayPal、第一資本、Dropbox、IBM、Monzo、紐約時報、Salesforce、Square、Target、Twitch、Uber 和 Google 等多元化的企業中。

若要進一步了解 Go 如何協助你的企業建立可靠且可擴充的軟體,就像 MercadoLibre 所做的那樣,請立即前往 go.dev

MercadoLibre MercadoLibre

關於 MercadoLibre

Go 提供乾淨且有效率的程式碼,隨著 MercadoLibre 的線上商業成長而輕鬆擴充,並透過讓他們的工程師在撰寫較少程式碼的同時服務於持續增加的受眾,來提升開發人員的生產力。