CA Technologies 介绍
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInVGcq5iYiFGN1QGMxEjNyQWYiBjZxAzN0UzY0UGO2gzY3IjNj9CXyEzLcNDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL3M3Lc9CX6MHc0RHaiojIsJye.jpeg)
CA 是全球领先的软件生命周期管理工具提供商:
● 全球10多个研发中心。
● 业务:基础设施管理,应用程序生命周期管理,安全,DevOps。
● 业务线复杂,需要搭建统一的快速发布平台支持所有的业务产品线。
CA 经过一系列的技术演进,已经实现了高效的自动化发布平台,支持 CA 内部所有产品线的研发,测试和发布,CA 是如何做到的?
CA 快速发布平台的目标非常明确,是将之前发布产品的周期从数月,减少到数天或者数小时,并且保证高质量的发布产品。
CA 软件发布流程中的痛点
● 不同产品线使用不一致的工具链。
● 自研件存储在 SCM。
● 构建耦合度高 – 构建时间达到16小时。
● 18-24个月的发布周期。
● 缺少自动化测试 – 软件发布需要2300的人工测试
● 缺少”完成”的定义。
● 没有代码扫描工具。
CA 构建快速发布平台的过程
1. 使用统一的快速发布工具栈
● 使用 Github,因为它具备社交编程的能力,支持离线提交,并且对于新毕业的程序猿,接受度非常高。
● 在 CI 服务器选择上,60%使用 TeamCity, 剩下的大部分使用 Jenkins。
● SonarCube – 使用 Sonar 进行静态代码扫描,能够检查代码库里是否有 copy-paste 的代码,如果有的话,需要进行重构。
● BlackDuck – 进行第三方代码扫描。能够检查是否存在从第三方代码 copy-paste 到了本地代码库的抄袭,避免软件授权纠纷。同时能够进行漏洞扫描,避免有漏洞的第三方包进入内部系统。
● Artifactory – 管理第三方依赖(NPM,YUM,Docker,Debian 等),存储所有自研件到本地仓库。为所有自研件添加元数据,为之后的产品发布提供自动化上线的 REST API。
2. 有了工具栈,然后呢?
●CA 的自研件通常会比较大,当转变为 DevOps 模式时,高频率的拷贝,构建,测试会花费大量的时间。
● Clone 到远程研发中心通常比较慢。
· 仓库的复制受到带宽影响。
· 内网复制到外网复制的差距在7-10倍。
所以CA 需要先定义”完成”目标
● 在多研发中心里按需复制工件。
● 在几分钟之内创建出一条运行环境。
● 产品能够实现自动升级(如果有更新发布)。
● 能够实现按需的扩容构建环境。
3. CA 快速发布平台工具链实践
● Nutanix
Nutanix 是 CA 现有的 IT 基础设施平台,用于装机,网络,部署等等。
● Vmware + Centos/Docker
Vmware实现 底层虚拟化,快速创建虚机环境, 为Centos 或者 Docker提供计IaaS 服务。
● Artifactory
使用 Artifactory 作为异地复制,和本地缓存的中央仓库。 所有人访问的是本地的缓存,提供开发和构建的效率。所有的二进制包,无需担心存储,数据备份,Artifactory 都已经保管好。
同时,Artifactory 是一站式的Docker 的镜像注册中心,因为所有的自研件,yum 仓库,第三方依赖,bower,NPM都存储在 Artifactory。
Artifactory 提供了 多Docker注册中心的支持,这为 CA 提供了 dev 的 Docker 仓库,以及生产环境的 Docker 仓库。
使用 Bintray 作为全球分发的平台,为全球的用户提供了快速下载软件的通道。包含了软件在全球下载量的统计,以及权限的控制。
● Github Cache
由于 CA 的代码库非常大,所以需要为Git提供 CDN。CA 构建了内部的 Github Cache,目的是解决跨研发中心的大量代码克隆,快速为程序猿创建 workspace,已经构建环境。
CA 通过 webhook 封装 Git,用户的仓库权限,仓库复制,SSH key 配置等都通过 webhook 配置到底层 Git。当用户改变了仓库内容,SSH 配置,都会通过 webhook 反映到底层。
这个系统使用 Nodejs 实现,用户的 clone 请求通过 Apache代理到 Git.
● Jenkins服务
使用 Docker 打包 Centos 和 Ubuntu 的Jenkins 镜像,为整个公司提供公共镜像,任何团队可以重用基本 Jenkins 镜像,并且实现按需的创建构建环境。
统一快速发布平台带来的价值
CA通过搭建统一快速发布平台,为 CA 带来了巨大的变化,这些变化包含:
● 已经实现跨研发中心按需复制二进制包。
● 能够实现在数分钟之内,快速构建一套环境,用户测试和部署。
● 为产品发布实现最小化的配置。
● 12GB 的构建结果之前需要400分钟拷贝到另一个研发中心。现在在新的方式下,拷贝只需花费12分钟,这得益于 Docker 的镜像打包,以及 Artifactory 基于 Checksum 的存储,不会重复传输未变化的文件。
● 产品实现自动化更新。
● 按需扩容构建集群。