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 資深工程師

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章