1. 程式人生 > >HERE 科技使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD 系統

HERE 科技使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD 系統

本篇文章是根據 AWS 釋出在 Youtube 上的視訊資料翻譯並整理而來,介紹的是 AWS re:Invent 2017大會上分享的 HERE Technology 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD 系統,支援數千活躍開發者的案例。 本次主講人有三位,分別是 Suresh Prem(HERE principal system engineer),Yoav Landman(JFrog CTO、Co-Founder)和 Yong Kim(AWS Storage Business Development)。

AWS 儲存和 EF 概覽

AWS EF 是涵蓋了塊儲存、檔案儲存和物件儲存的託管雲端儲存服務,全稱是 AWS Elatic File System(https://aws.amazon.com/efs/)。

AWS EF 主要特點是高可用、低延遲和成本低廉(相對於在 AWS 上 DIY 儲存方案),眾多行業領軍企業都採用了 AWS EF 的儲存方案,這些企業包括 Netflix、GE、Atlassian 等等。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

JFrog Artifactory

JFrog Artifactory 是全球領先的企業級二進位制製品管理解決方案,包括谷歌、蘋果、思科、甲骨文等等眾多行業標杆企業都是其付費使用者。二進位制製品作為軟體研發的成果,會被部署到生產環境,最終提供服務給使用者,所以,這些製品應該被很好地管理起來。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

隨著 DevOps 潮流的到來,二進位制製品的量呈爆炸式增長,對儲存也提出了很多的要求。挑戰不只是儲存這些二進位制檔案,還包括如何在檔案管理層提供 API,如何提供各種語言的倉庫,甚至還包括一些自動化流程的等等。Artifactory 本身能夠支援從原始碼到部署環境的自動化流程,自動化的普及更加速了二進位制的產生速率。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

在這個過程中,Xray 負責對二進位制進行漏洞掃描,而 Bintray 負責二進位制的分發,Mission Control 負責整個流程的控制和管理,核心作用是確保整個流程更順暢,這些產品協作起來就構成了一條從原始碼到 Kubernetes 的流水線。隨著流水線越來越成熟,軟體供應鏈會逐漸建立起來,軟體會像管道中的流水一樣流動起來。整個軟體的交付流程會越來越快,交付效率也會大幅度提升,這正是 DevOps 所追求的。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

當然,Artifactory 也支援在 AWS 雲環境中部署,所以,使用者可以使用 JFrog 部署在 AWS 上的 Artifactory,也可以在自己私有的 AWS 資源中部署。

Artifactory 目前支援了幾乎所有開發語言倉庫,因此使用 Artifactory 的開發者數量非常龐大。據統計有超過5萬開發者在使用,效能上可以支援超過1.5萬次每秒的併發請求,每天有超過 10TB 的資料在系統中流轉。Artifactory 支援高度自定義的元資料,可以記錄 DevOps 整個生命週期的資訊,因此可以將其作為"DevOps 資料庫"來使用。另外,Artifactory 通常以叢集模式提供服務,支援隨時擴容和縮容,具有良好的"彈性"。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

Artifactory 中的二進位制檔案基於 CheckSum 碼進行儲存,具有相同的 CheckSum 編碼的檔案只儲存一份,因此大幅度提升了儲存資源的使用率,有效減低了儲存成本。在倉庫複製的時候,也只會複製增量的部分,提升轉儲效率,也更方便垃圾回收。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

面對各種異構的儲存型別,Artifactory 提供了可擴充套件的儲存架構,方便對接企業已有的儲存資源,於此同時增加了快取機制,從而進一步提升整體效能。整體架構如下圖所示:

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

下面給出了一個配置的示例。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

這個示例裡面提供了多種的 BinaryProvider,組成一個複雜的配置結構,每一份資料有2個例項互為冗餘作為備份。

Aritfactory 另一個非常重要的特性就是複製,支援跨地域的多例項間複製,滿足異地協同開發的需求,也可作為災備方案,如下圖所示:

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

例項和例項之間複製可支援 Push 和 Pull 另種模式,支援事件驅動和定時執行等方式。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

以上這些特性基本構成了整個流水線,這個流水線比傳統我們所理解的 CI&CD 流水線更巨集觀,是整個組織結構級別,當然其影響對於多地域協同的組織也是非常顯著的。隨著各種自動化工具的完善,這個流程運轉將更加流暢,自動化使得開發人員更多,而運維人數迅速下降,但每個人的能力會得到很大提升。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

案例分享

HERE Technology 是一家提供基於位置服務(LBS)的公司,服務場景主要包括無人機導航,車載導航,地圖服務等等。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

HERE 已經有大量的使用者,這些使用者包括具體的人、汽車、地圖應用等等,公司在超過56個國家擁有超過7000名員工。公司有超過30年的位置資訊服務的經驗,詳情如下;

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

HERE Technology 一直採取雲優先(Cloud First)的策略,那麼整個公司的產品研發也自然基於雲端來完成。公司是 AWS 客戶,同時8年以來一直是 AWS 的合作伙伴。如此龐大的跨國研發團隊是如何協作呢?他們採用了在 AWS 上部署 JFrog Artifactory 的方式。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

通過 Artifactory 託管 NPM、YUM 和 Docker 等倉庫,同時將 Artifactory 與其他的一些工具結合,實現了端到端的生產環境自動化部署方案。三個例項同時提供服務,通過負載均衡器分分流,確保叢集的高可用。

之前採用 AWS EBS 服務作為儲存,後來切換成 EFS,但總體架構並沒有改變,在多個 Region 之間進行復制,以滿足容災備份的需求,具體架構如下:

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

由於 EFS 效能比 EBS 更優,整個方案的能力也大幅提升,目前託管了超過300個倉庫,有120多萬工件儲存在 Artifactory 中,整個工件儲存量達到21TB,值得注意的是,雖然系統如此龐大,依然能夠提供99.5%的服務水平。從監控資料可以看到,整個系統的吞吐量水平達到2.8GB/s, 每天的上傳和下載量也是非常可觀。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

HERE 使用 AWS EF 和 JFrog Artifactory 打造百萬級工件 CI&CD

總結

HERE 科技作為一家一直專注在位置服務的技術公司,一直追逐最先進的技術和最高的效率。在雲優先的策略的驅動下,採用了基於 AWS+Artifactory 作為雲端 DevOps 方案,實現了端到端的自動化解決方案的同時,也大幅度提升了公司的研發能力。其工件規模達到百萬級別,且數千研發人員分佈全球多地,對於眾多希望落地 DevOps 的公司來說,是一個很值得借鑑的案例。

作者:付輝,JFrog 資深工程師

歡迎轉載,但轉載請註明作者與出處。謝謝!