金融行业巨头 ING 如何搭建统一持续交付平台
ING 实现 DevOps 的背景

来看看他们实现 DevOps 的旅程,在2009年之前,ING 的软件开发模式是瀑布式开发,从想法到产品交付,花费很长的时间。瀑布模式下带来的问题:
- 定位问题成本太高
- 交付周期太长
- 交付结果令人失望
- 开发速度变快
- 需求和实现差距变小
但是仍然存在问题,例如只解决了开发软件的问题,没有解决运维的问题,软件交付周期仍然很长。
- 交付软件的速度变快
- 团队中每个人都有相同的目标
- 能够看到哪里有改进的空间
ING 的自动化实践
构建自动化

测试自动化

部署自动化

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

流水线架构图

代码管理
包管理


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

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

- 团队通过 Artifactory 定义团队,每个团队可以决定自己的工件是否能够分享给别的团队。
- 工件每个团队维护自己的工件仓库,默认只有自己团队能够访问。
- 系统团队维护自己的 Redhat Linux 系统。
- 工具链CDaaS – 提供统一的交付平台门户网站。
OpenLDAP – 提供统一认证,鉴权机制。
Vault – 统一管理 Access Token,密码,API Key,以及审计等功能。
- 构建使用 Jenkins + Docker
- 部署使用 CA 的 Release Automation。
在流程中工件传递的每一步,都需要涉及到用户的安全认证,鉴权。想要在任何一个步骤进行 Hack,都变得不容易。
构建管理

- 每个团队自主维护 Jenkins,独立支配,目前已有379个 Jenkins。
- Jenkins 跑在 Docker 容器里
- 在 Provision Jenkins 时,自动关联好 CDaaS 的相关服务,例如对接的 Artifactory,代码扫描工具等等。
- 自由选择安装哪些 Jenkins 插件
- 容器通过 Mesos + Marathon 进行调度管理,Jenkins 和 Sonar 都跑在容器里。
- 使用 Ceph 进行文件存储的高可用和容灾备份。
部署管理
统一持续交付平台带来的收益
- 项目交付速度达到分钟级别。
- 软件交付的质量得到巨大提升。大量漏洞安全的问题被提前发现和解决。
- 流水线已经支持了523个应用,持续交付到终端用户。
- 不强制开发者使用,但已经有600个团队主动使用了这个平台,作为持续交付的服务。
- 减少了50%上线事故的发生。
- 超高的发布频率,每月20000次发布。