- 背景
Capital one创立于1988年,最早是弗吉尼亚州Signet银行的信用卡部门;1994年,Signet将信用卡部门独立出来并在纽交所上市,于1995年更名为Capital One。自上市以来,Capital One的股价一路走高,成长为美国第五大零售银行和第八大银行。
在Capital One发展史上,其多次通过并购拓展业务,并延伸到了英国和加拿大。尤为令人瞩目的是,2008年金融危机之后,Capital One接连吃下了ING集团美国直销银行业务和汇丰银行美国信用卡业务。
在零售银行和互金界,Capital One几乎无人不知,前些年更是神一般的存在。来自Capital One的海归精英炙手可热,他们创办或者在很多互金平台担任要职。
如今,Capital One总资产接近4000亿美元,是美国主要的信用卡发卡行和汽车金融服务商之一。虽然 2014 年后,Capital One业绩开始下滑,但纵观其发展史,在竞争激烈、巨头林立的美国银行业,它所取得的成就堪称奇迹。这背后得益于Capital One很早就确立了数据驱动的战略,被视为大数据金融的先驱,也因此在金融科技兴起之后得以封神。
在 JFrog SwampUp 2020用户大会上,来自 Capital One 的资深研发经理Wayne Chatelain分享了他们内部的建设唯一可信源的方法和收益。Wayne 在公司内部负责 SRE 相关的工作,提供公司级别的 Artifactory 服务,帮助公司内部其他团队构建应用。那么我们来看看他们为什么要建设唯一可信源。
2.什么是唯一可信源?
唯一可信源是企业内部所有通过审批批准的软件唯一存放的仓库。这些软件包括 war 包,jar 包,Docker 镜像,zip 包,以及第三方开源组件或者商业软件的授信版本。
为什么需要建立唯一可信源?
很多银行仍然使用 FTP 进行 war 包,zip 等交付包的管理,这样会导致交付包缺失信息,版本管理的配置变更在哪,版本是否通过了代码扫描,漏洞扫描,自动化测试和测试团队的 Approve?这些信息的缺失会导致沟通成本急剧上升,造成人力和时间的大量浪费。随意获取有漏洞的依赖库,或者使用违反公司 License策略的依赖包,也会给公司带来直接损失。如果没有唯一可信源,各个团队,特别是分布在多个地区的开发团队将花费大量的时间在配置变更,版本传递和部署上。
3.如何建设唯一可信源?
3.1 首先,定义实施唯一可信源的目标:
- 创建唯一可信源仓库。
- 确保产品全部使用唯一可信源仓库里的制品。
- 定制制品审批规则和准入门槛。
- 在 CI/CD 流水线中自动化
- 唯一可信源的可维护性。
3.2 创建唯一可信源仓库
3.3创建仓库模型:Capital One 基于 JFrog 的最佳实践进行仓库的命名:
- 用虚拟仓库把所有 local 和 remote 仓库聚合
- 根据包的类型,按团队进行划分
- 根据开发,测试,生产环境实行制品晋级制度,区分生产和非生产的包
- 第三方组件通过隔离仓库晋级到唯一可信源仓库
总体发布流程:
- 开发则通过流水线进行构建
- 流水线集成各自扫描,自动化测试并验证结果,记录为制品的元数据
- 通过 JFrog Distribution 服务分发到各个数据中心的 Artifactory Edge节点,在准生产环境中进行自动化验证。
- 验证通过之后制品晋级到生产仓库,进行生产环境的自动化部署。
制品晋级的流程:
- 开源组件漏洞扫描(JFrog Xray)
- License 扫描(JFrog Xray)
- 静态代码扫描
- 动态应用安全扫描
- 黑名单扫描
- Metadata 属性验证(Artifactory 元数据验证)a.开发,QA,测试元完成验证 b.技术 Lead/产品负责人审批通过验证
- 制品签名验证
- 企业报表验证
- 制品的所属人验证
- 合规性例外验证
这里 Artifactory 的元数据验证能够作为质量门禁,控制软件包的质量,值得大家参考。
制品的分发流程:
- 流水线中触发制品的分发
- a.完成制品的构建
- b.推送到 Artifactory
- 触发审批接口
- 制品验证阶段
- 编排分发的工作流
- 异步状态轮询
- 流水线暂停直到审批结果都通过
- 检查证书签发状态
- 确认签名证书完成
- 验证制品分发到了所有 Edge 节点
- 流水线从 Edge 节点拉取制品
- 流水线仅仅拉取Edge 里被审批过的制品
- 审批能够被部署到生产环境的制品
- Artifactory Edge 只存放被审批通过的制品
- 流水线仅仅拉取Edge 里被审批过的制品
最终结果:
通过制品的晋级,分发,审批流程,测试 Artifactory Edge 节点里存放的制品库可以认为是企业的唯一可信源。
- 开源组件和自己构建的组件基于审批和准入机制入库
- 通过接口调用实现自动化的审查和审批
- 自动化的分发包到 Edge 节点,实现多机房部署
- 和 CI/CD 流水线进行集成和分发
- 未审批的包无法推送到 Edge 节点,无法被部署的生产,避免部署错误。
唯一可信源的工作流:
- 将所有制品存储在唯一的 Artifactory仓库
- 触发发布动作
- 验证制品元数据记录
- 分发制品
- 发布制品到唯一可信源
- 当在 Artifactory Edge 节点的老版本失效时,通过Artifactory 同步删除的通过,在主节点删除某个老版本,将能够自动同步删除 Edge 节点上的老版本。
4.收益
在银行内部通过唯一可信源的建设,可以实现以下收益:
- 所有业务团队有唯一可信的依赖库和二方库
- 所有业务团队有唯一可信的发布版本库
- 所有审批的过程数据都汇总成为元数据绑定到发布版本上
- 部署工具有唯一可信的部署来源,基于元数据校验进行自动化部署
参考:
https://baijiahao.baidu.com/s?id=1670085533834899304&wfr=spider&for=pc
https://www.youtube.com/watch?v=me3kwaQI4Gk&feature=emb_logo