我認為 「Go 之旅」(A Tour of Go) 是我見過迄今為止最好的程式語言入門指南。它非常簡潔,且能讓你對該語言約 80% 的核心概念有相當不錯的概覽。當我們希望開發人員學習 Go 並快速投入生產環境時,我們都會建議他們從「Go 之旅」開始。
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,隨後被 MercadoLibre 市場、MercadoPago 金融科技平台、MercadoLibre 的物流解決方案及其他託管解決方案所使用。鑑於這些解決方案所要求的高服務水準——平均每個使用者 API 每分鐘處理 800 萬到 1,000 萬次請求——該團隊利用 Go 實現了每個請求小於 10 毫秒的處理速度。
API 團隊還部署了 Docker 容器(一種同樣以 Go 編寫的軟體即服務產品),以虛擬化開發環境,並透過 Docker Engine 快速部署其微服務。該系統支援更大的關鍵任務 API,這些 API 在 Go 語言中每分鐘處理超過 2,000 萬次請求。
其中一個 API 重要地運用了 Go 的併發原語(concurrency primitives),以高效地多工處理來自多個服務的 ID。該團隊僅用了幾行 Go 程式碼就實現了這一點,而該 API 的成功說服了核心 API 團隊將越來越多的微服務遷移到 Go。對 MercadoLibre 而言,最終成果是改善了成本效益與系統回應時間。
用 Go 實現可擴展性
過去,該公司的許多架構都是基於 Grails 和 Groovy,並由關聯式資料庫提供支援。然而,這種具有多層結構的大型框架很快就遇到了可擴展性問題。
將該遺留架構轉換為用於建置 API 的新穎且極簡的 Go 框架,簡化了中間層並帶來了巨大的效能優勢。例如,一個大型 Go 服務現在只需 20 MB 的記憶體,即可在單台機器上執行 70,000 次請求。
「
Go 對我們來說簡直太棒了。它非常強大且易於學習,結合後端基礎架構,在可擴展性方面對我們有極大幫助。
使用 Go 讓 MercadoLibre 將該服務所需的伺服器數量削減至原本的八分之一(從 32 台降至 4 台),且每台伺服器的運作功耗更低(原本需要 4 個 CPU 核心,現在只需 2 個)。透過 Go,該公司淘汰了 88% 的伺服器,並將剩餘伺服器的 CPU 需求減半——帶來了巨大的成本節約。
在開發人員與雲端供應商之間,MercadoLibre 使用了一個名為 Fury 的平台——這是一個用於以雲端無關(cloud-agnostic)方式建置、部署、監控和管理服務的平台即服務(PaaS)工具。因此,任何想要使用 Go 建立新服務的團隊,都可以存取各種服務類型的成熟模板,並能快速在 GitHub 上啟動一個包含入門程式碼、服務 Docker 映像檔和部署管道的儲存庫。最終結果是一個能讓工程師專注於建置創新服務,同時避免設定新專案繁瑣步驟的系統,並有效地標準化了建置與部署管道。
如今,Mercadolibre 大約一半的流量是由 Go 應用程式處理的。
MercadoLibre 為開發者使用 Go
目前 MercadoLibre 基礎架構的程式語言「通用語」(lingua francas)是 Go 和 Java。每個應用程式、每個程式、每個微服務都託管在各自的 GitHub 儲存庫中,此外公司還使用一個額外的工具包 GitHub 儲存庫來解決新問題,並讓客戶能與其服務進行互動。
這些廣泛且精心策劃的 Go 和 Java 工具包,讓程式設計師能夠快速且在強大支援下開發新應用。此外,在一個擁有超過 2,800 名開發人員的社群中,MercadoLibre 設有多個內部群組,可針對 Go 的部署提供聊天與指導,無論是在不同開發中心或不同國家之間皆然。該公司還促進內部工作小組為新的 MercadoLibre Go 開發人員提供培訓課程,並為外部開發人員舉辦 Go 聚會,以協助建立更廣泛的拉丁美洲 Go 開發者社群。
Go 作為招聘工具
MercadoLibre 對 Go 的推崇也已成為該公司強大的招聘工具。MercadoLibre 是阿根廷最早使用 Go 的公司之一,也可能是拉丁美洲在生產環境中如此廣泛使用該語言的最大公司。總部位於布宜諾斯艾利斯,周邊有許多新創公司與新興科技企業,MercadoLibre 對 Go 的採用已塑造了整個潘帕斯草原地區的開發者市場。
「
我們對該語言的宏觀哲學理念非常有共鳴。我們熱愛 Go 的簡潔,並發現其非常明確的錯誤處理機制對開發人員來說是一大獲益,因為這能帶來更安全、更穩定的生產環境程式碼。
布宜諾斯艾利斯如今是一個競爭非常激烈的程式設計師市場,為軟體工程師提供了許多就業選擇,該地區對技術的高需求帶來了優渥的薪資、豐富的福利,以及選擇雇主時的自主權。因此,MercadoLibre 與該地區所有工程師的雇主一樣,致力於提供一個令人興奮的工作場所與紮實的職涯道路。Go 已被證明是 MercadoLibre 的關鍵差異化優勢:該公司為外部開發人員舉辦 Go 工作坊,讓他們前來學習 Go;當他們喜歡所從事的工作以及所交流的人員時,他們很快就會認同 MercadoLibre 是一個具有吸引力的工作場所。
Go 賦能開發人員
MercadoLibre 使用 Go 是因為它在處理大規模系統時的簡潔性,而這種簡潔性也是該公司開發人員熱愛 Go 的原因。
該公司還使用如 Go by Example 和 Effective Go 等網頁來教育新進程式設計師,並分享以 Go 編寫的具代表性內部 API,以加速理解與熟練度。MercadoLibre 的開發人員能獲得擁抱該語言所需的資源,進而利用自己的技能與熱情開始編程。
「
Go 在編寫商業邏輯方面非常出色,而我們正是編寫這些 API 的團隊。
MercadoLibre 利用 Go 富有表現力且簡潔的語法,使開發人員更容易編寫在現代雲端平台上高效執行的程式。雖然開發速度為公司帶來了成本效益,但開發人員個人也能從 Go 帶來的快速學習曲線中受益。MercadoLibre 不僅能讓經驗豐富的工程師透過 Go 快速建置關鍵應用程式,就連入門級工程師也能編寫出 MercadoLibre 在其他語言中通常只敢交給資深工程師負責的服務。例如,一組關鍵的使用者 API(每分鐘處理近 1,000 萬次請求)是由入門級軟體工程師開發的,其中許多人對程式設計的了解僅限於大學剛修過的課程。同樣地,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——涵蓋銀行與商業、遊戲與媒體、科技及其他產業,企業類型多元,包括 American Express、PayPal、Capital One、Dropbox、IBM、Monzo、New York Times、Salesforce、Square、Target、Twitch、Uber,當然還有 Google。
若要進一步了解 Go 如何能像協助 MercadoLibre 一樣,幫助您的企業建置可靠且可擴展的軟體,請立即造訪 go.dev。
關於 MercadoLibre
Go 提供了簡潔、高效的程式碼,能隨著 MercadoLibre 線上商務的成長而輕鬆擴展,並透過讓工程師以更少的程式碼服務不斷增長的用戶群,顯著提升了開發人員的生產力。