本篇文章是根据 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_第1张图片


JFrog Artifactory

JFrog Artifactory 是全球领先的企业级二进制制品管理解决方案,包括谷歌、苹果、思科、甲骨文等等众多行业标杆企业都是其付费用户。二进制制品作为软件研发的成果,会被部署到生产环境,最终提供服务给用户,所以,这些制品应该被很好地管理起来。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第2张图片


随着 DevOps 潮流的到来,二进制制品的量呈爆炸式增长,对存储也提出了很多的要求。挑战不只是存储这些二进制文件,还包括如何在文件管理层提供 API,如何提供各种语言的仓库,甚至还包括一些自动化流程的等等。Artifactory 本身能够支持从源代码到部署环境的自动化流程,自动化的普及更加速了二进制的产生速率。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第3张图片


在这个过程中,Xray 负责对二进制进行漏洞扫描,而 Bintray 负责二进制的分发,Mission Control 负责整个流程的控制和管理,核心作用是确保整个流程更顺畅,这些产品协作起来就构成了一条从源代码到 Kubernetes 的流水线。随着流水线越来越成熟,软件供应链会逐渐建立起来,软件会像管道中的流水一样流动起来。整个软件的交付流程会越来越快,交付效率也会大幅度提升,这正是 DevOps 所追求的。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第4张图片


当然,Artifactory 也支持在 AWS 云环境中部署,所以,用户可以使用 JFrog 部署在 AWS 上的 Artifactory,也可以在自己私有的 AWS 资源中部署。

Artifactory 目前支持了几乎所有开发语言仓库,因此使用 Artifactory 的开发者数量非常庞大。据统计有超过5万开发者在使用,性能上可以支持超过1.5万次每秒的并发请求,每天有超过 10TB 的数据在系统中流转。Artifactory 支持高度自定义的元数据,可以记录 DevOps 整个生命周期的信息,因此可以将其作为"DevOps 数据库"来使用。另外,Artifactory 通常以集群模式提供服务,支持随时扩容和缩容,具有良好的"弹性"。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第5张图片


Artifactory 中的二进制文件基于 CheckSum 码进行存储,具有相同的 CheckSum 编码的文件只存储一份,因此大幅度提升了存储资源的使用率,有效减低了存储成本。在仓库复制的时候,也只会复制增量的部分,提升转储效率,也更方便垃圾回收。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第6张图片


面对各种异构的存储类型,Artifactory 提供了可扩展的存储架构,方便对接企业已有的存储资源,于此同时增加了缓存机制,从而进一步提升整体性能。整体架构如下图所示:

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第7张图片


下面给出了一个配置的示例。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第8张图片


这个示例里面提供了多种的 BinaryProvider,组成一个复杂的配置结构,每一份数据有2个实例互为冗余作为备份。

Aritfactory 另一个非常重要的特性就是复制,支持跨地域的多实例间复制,满足异地协同开发的需求,也可作为灾备方案,如下图所示:

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第9张图片


实例和实例之间复制可支持 Push 和 Pull 另种模式,支持事件驱动和定时执行等方式。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第10张图片


HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第11张图片


以上这些特性基本构成了整个流水线,这个流水线比传统我们所理解的 CI&CD 流水线更宏观,是整个组织结构级别,当然其影响对于多地域协同的组织也是非常显著的。随着各种自动化工具的完善,这个流程运转将更加流畅,自动化使得开发人员更多,而运维人数迅速下降,但每个人的能力会得到很大提升。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第12张图片


案例分享

HERE Technology 是一家提供基于位置服务(LBS)的公司,服务场景主要包括无人机导航,车载导航,地图服务等等。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第13张图片


HERE 已经有大量的用户,这些用户包括具体的人、汽车、地图应用等等,公司在超过56个国家拥有超过7000名员工。公司有超过30年的位置信息服务的经验,详情如下;

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第14张图片


HERE Technology 一直采取云优先(Cloud First)的策略,那么整个公司的产品研发也自然基于云端来完成。公司是 AWS 客户,同时8年以来一直是 AWS 的合作伙伴。如此庞大的跨国研发团队是如何协作呢?他们采用了在 AWS 上部署 JFrog Artifactory 的方式。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第15张图片


通过 Artifactory 托管 NPM、YUM 和 Docker 等仓库,同时将 Artifactory 与其他的一些工具结合,实现了端到端的生产环境自动化部署方案。三个实例同时提供服务,通过负载均衡器分分流,确保集群的高可用。

之前采用 AWS EBS 服务作为存储,后来切换成 EFS,但总体架构并没有改变,在多个 Region 之间进行复制,以满足容灾备份的需求,具体架构如下:

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第16张图片


由于 EFS 性能比 EBS 更优,整个方案的能力也大幅提升,目前托管了超过300个仓库,有120多万工件存储在 Artifactory 中,整个工件存储量达到21TB,值得注意的是,虽然系统如此庞大,依然能够提供99.5%的服务水平。从监控数据可以看到,整个系统的吞吐量水平达到2.8GB/s, 每天的上传和下载量也是非常可观。

HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第17张图片


HERE 使用 AWS EF 和 JFrog Artifactory 打造百万级工件 CI&CD_第18张图片


总结

HERE 科技作为一家一直专注在位置服务的技术公司,一直追逐最先进的技术和最高的效率。在云优先的策略的驱动下,采用了基于 AWS+Artifactory 作为云端 DevOps 方案,实现了端到端的自动化解决方案的同时,也大幅度提升了公司的研发能力。其工件规模达到百万级别,且数千研发人员分布全球多地,对于众多希望落地 DevOps 的公司来说,是一个很值得借鉴的案例。

作者:付辉,JFrog 资深工程师

欢迎转载,但转载请注明作者与出处。谢谢!