金融行业巨头 ING 如何搭建统一持续交付平台

ING 实现 DevOps 的背景

全球排名第11大的资产管理公司—–ING 荷兰国际集团(International Netherlands Groups),是由荷兰最大保险公司 (Nationale-netherlanden) 与荷兰最大的邮政银行 (NBM) 合并而成,已有155年历史。据美国《财富》(FORTUNE)杂志统计,以资产净值计算,荷兰国际集团位居全球500家大企业的第8位。在提供综合性金融财经业务方面(银行与保险业务),居世界第一位。 

今天,ING 集团已经在全球搭建了统一持续交付平台,完美的支持全球12个国家的银行和零售服务,软件交付速度可以达到分钟级别,这个速度在金融行业里面是非常超前的。

来看看他们实现 DevOps 的旅程,在2009年之前,ING 的软件开发模式是瀑布式开发,从想法到产品交付,花费很长的时间。瀑布模式下带来的问题:

  • 定位问题成本太高
  • 交付周期太长
  • 交付结果令人失望
从2009年之后,ING 开始落地 Agile 开发方式,确实带来了一些好处:

  • 开发速度变快
  • 需求和实现差距变小

但是仍然存在问题,例如只解决了开发软件的问题,没有解决运维的问题,软件交付周期仍然很长。

从2013年开始进行 DevOps 落地,看到了很多好处:

  • 交付软件的速度变快
  • 团队中每个人都有相同的目标
  • 能够看到哪里有改进的空间

ING 的自动化实践

 

ING 的目标非常明确,就是不惜代价自动化一切!建立一条自动化流水线,让所有的代码都通过这个流水线变成产品发布。

构建自动化

 

每个团队自由选择构建工具,进行自动化构建,自由选择测试工具,在构建后执行测试,并且将构建的包,以及测试结果存储在 Artifactory。

测试自动化

 

自动化测试包含代码检查,性能测试 JMeter,UI 功能测试 Selenium 等等。

部署自动化

 

包部署到 Artifactory 之后,通过 Ansible/Puppet 进行持续部署,当然团队有选择部署工具的自由。

ING 搭建统一持续交付流水线

目标

 

之前,ING 公司 IT 部门有1000多个团队,每个团队都有自己的上线流程,每个团队都在重复踩坑,开发重复的功能来支持上线。所以 ING 为公司所有 IT 部门搭建了统一持续交付流水线,让公司所有团队都受益,也叫作”CDaaS”,提供端到端的上线服务。

 

流水线架构图

 

ING 提供的统一交付平台对接了很多工具,覆盖了代码管理,构建管理,工件管理,部署管理,环境管理等上线所需的功能,为 ING 的内部 IT 团队提供了可靠的交付流水线。

代码管理

 

使用 Gitlab 作为代码中央仓库,和 CD流水线无缝对接。目前在内部 Gitlab 上有5000+用户,1000+用户组,项目超过13000个。

包管理

 

使用 Artifactory 进行包管理,已经管理的工件超过3,500,000个,类型包含 Maven,Docker,Rpm,Npm,Python 等等。

 

Artifactory 提供所有工件的容灾备份,通过 Artifactory 的实时复制功能,在两个数据中心之间进行实时同步,确保数据中心1发生故障后,数据中心2能够立刻接管服务。

同时在单个数据中心之内,各有两个 Artifactory 作为高可用集群,来处理瞬时的大并发下载请求,例如并发下载 jar 包,Docker 镜像。

 

金融企业的仓库架构是什么样的?

  1. 通过 Artifactory 统一代理所有外网的包。
  2. 仓库架构分为 ING 内部,第三方仓库,和公开库三种类型。
  3. 每个团队有本地开发库,测试库,发布库。自主控制所属的仓库。
  4. 基于仓库级别的权限管理,控制仓库的访问权限是私有,还是公开。

安全的流水线

 

金融行业最大的需求是安全。如何搭建一条权限可控的流水线?这里面有几个要素:

  1. 团队通过 Artifactory 定义团队,每个团队可以决定自己的工件是否能够分享给别的团队。
  2. 工件每个团队维护自己的工件仓库,默认只有自己团队能够访问。
  3. 系统团队维护自己的 Redhat Linux 系统。
  4. 工具链CDaaS – 提供统一的交付平台门户网站。

    OpenLDAP – 提供统一认证,鉴权机制。

    Vault – 统一管理 Access Token,密码,API Key,以及审计等功能。

  5. 构建使用 Jenkins + Docker
  6. 部署使用 CA 的 Release Automation。

在流程中工件传递的每一步,都需要涉及到用户的安全认证,鉴权。想要在任何一个步骤进行 Hack,都变得不容易。

构建管理

 

  • 每个团队自主维护 Jenkins,独立支配,目前已有379个 Jenkins。
  • Jenkins 跑在 Docker 容器里
  • 在 Provision Jenkins 时,自动关联好 CDaaS 的相关服务,例如对接的 Artifactory,代码扫描工具等等。
  • 自由选择安装哪些 Jenkins 插件
  • 容器通过 Mesos + Marathon 进行调度管理,Jenkins 和 Sonar 都跑在容器里。
  • 使用 Ceph 进行文件存储的高可用和容灾备份。

部署管理

使用 CA 公司提供的 Release Automation (Nolio) 实现自动化部署。Nolio 提供了可视化的部署编排平台,让部署实现可重用的持续部署。

统一持续交付平台带来的收益

  • 项目交付速度达到分钟级别。
  • 软件交付的质量得到巨大提升。大量漏洞安全的问题被提前发现和解决。
  • 流水线已经支持了523个应用,持续交付到终端用户。
  • 不强制开发者使用,但已经有600个团队主动使用了这个平台,作为持续交付的服务。
  • 减少了50%上线事故的发生。
  • 超高的发布频率,每月20000次发布。
看完 ING 的 DevOps 平台介绍以及落地 DevOps 带来的收益,不知道您是不是也心动了呢?