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

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

DevOps Artifactory AWS JFrog

本篇文章是根據 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 等等。

技術分享圖片


JFrog Artifactory

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

技術分享圖片


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

技術分享圖片


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

技術分享圖片


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

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

技術分享圖片


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

技術分享圖片


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

技術分享圖片


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

技術分享圖片


這個示例裏面提供了多種的 BinaryProvider,組成一個復雜的配置結構,每一份數據有2個實例互為冗余作為備份。

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

技術分享圖片


實例和實例之間復制可支持 Push 和 Pull 另種模式,支持事件驅動和定時執行等方式。

技術分享圖片


技術分享圖片


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

技術分享圖片


案例分享

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

技術分享圖片


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

技術分享圖片


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

技術分享圖片


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

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

技術分享圖片


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

技術分享圖片


技術分享圖片


總結

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

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

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


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