随着车企、手机厂商、家电等制造企业业务的快速发展,软件应用开发规模也随之不断扩大。不同类型的交付制品的管理也成为DevOps落地的一大难题。制品分散管理,存储随意,下载困难,分发缓慢等现象长期受到产线用户挑战,急需快速解决。经过业务场景分析及用户调研后,总结为以下通用问题:
痛点
1,制品存量大
制品达到PB级别,分散存储到S3及EMC存储上,管理分散,浪费存储,并且数据量在成倍增长。
没有合理的制品清理机制,导致过多无效存储
2,制品质量缺失
制品无质量标签,筛选版本复杂,增加迭代时间,测试人员经常下错版本,浪费时间
制品无版本概念,经常出现制品覆盖现象,最终导致发布失败
3,制品分发复杂
由于存量过大,国内多地研发中心、海外研发中心同步制品不可行,多地传输浪费带宽
制品无统一管理,分散到不同团队,不同集群上,不便于数据资产梳理
制品往往需要分发到不同的工厂、合作伙伴、售后站及IoT终端,场景复杂
4,制品下载缓慢
单文件最大达到100G+,下载时经常出现丢包、中断等现象,用户体验极差,浪费时间
解决方案
1,解决性能瓶颈
在下述部署条件下进行性能测试,得到了一份超级满意的测试报告,在极端数据读写的压力下,6节点Artifactory的每小时吞吐量达到了10TB级别,目前基本可以承载国内所有软件研发企业制品的吞吐量,具体测试报告可以联系JFrog的工程蛙们了解测试细节。
2,解决制品大批量下载问题
JFrog提供高性能下载工具jfrog cli,可实现分片、多线程、断点续传等下载方式,基本可以打满网络带宽
JFrog在服务端提供cache技术,可实现有ssd磁盘缓存热文件策略,如缓存空间大,可缓存所有热文件,提升下载速度
由于服务端网络端口依然存在瓶颈,可使用p2p技术进行分流,提升下载速度3-4倍
3,异地分发能力
私有化部署+Saas服务,实现制品库多云多数据中心混合架构,通过仓库联邦及高速分发两种策略,链接世界所有节点,实现制品分发
用户案例
某手机厂商案例
1,某手机厂商,使用JFrog Artifactory 6个节点,架构设计如下:
承载业务量:
接管整机构建daily及Release项目50个,每月420T整机制品包,目前共存储4PB+数据
接管组件构建项目11000个,每周组件个数231000,150T组件包,目前共存储1PB+数据
每小时上传流量接近3TB,下载流量接近2TB
峰值上传流量15G/S,下载流量5G/S
制品库存储总量达到了6PB
2,解决质量缺失
通过JFrog Artifactory的元数据及AQL功能,确保每个制品均具备10条以上的质量数据标签,实现开发与测试之间零沟通,使版本具备自动化筛选能力,避免下错版本,浪费时间。
具体实现为,开发团队构建制品版本,并将过程数据、需求数据、测试数据、匹配机型数据等自动补全在制品的元数据属性中,如未携带此数据,则无法成功上传。测试人员在使用制品进行烧机测试时,则通过自动化脚本,自动筛选符合自己机型并具备一定质量属性的制品,自动测试,整个版本筛选过程无需人与人的沟通,一切自动化完成,提高效率,避免出错。
通过此项改进,获取了如下收益:
打造制品可信平台,确保所有交付组件包携带质量元数据,便于快速定位版本
制品清理机制,定期实现制品清理
3,解决制品分发
在此方案架构下,为了统一管理集团所有产线制品,后期将制品分布在5个Artifactory集群中管理,其中app应用使用一个物理集群,不同产线整机版本各使用一个集群,私服及Docker镜像使用一个集群。由前段CI工具统一控制制品写入位置及读取位置。另外在成都、重庆、上海分中心建立只读集群、实现制品快速分发,多地可读。同时在印度、印尼、孟加拉、阿尔及利亚等地工厂建立只读集群,按需分发制品到工厂。
为了优化下载速度,该方案中使用了JFrog Artifactory的p2p下载功能,在不同地域的分厂中没有设置只读节点,而是使用p2p的peer节点,节约成本,加速下载。整体制品库架构如下:
免责声明:市场有风险,选择需谨慎!此文仅供参考,不作买卖依据。