中国银行DevOps的建设依据刚才的分解,我们是围绕这五个方面:

    • 第一个是做流程体系,要建立统一、协作的流程,通过流程我们实现在开发、测试和运维各个团队之间密切的合作,打通我们的交付流程
    • 第二,模型和规范,根据前期做的经验,我们把所有软件开发过程中遵循的规范、规则和要求写到相应的规范文件里边。同时对于X86这条线的产品,DevOps应用怎么做,我们形成了相应的模型,模型和规范中心内进行发布和执行。
    • 第三,交付流水线,在交付流水线上我们把开发和测试阶段上用到的技术往后推,让他们在生产环境进行复用,不断地优化我们的自动化部署和自动化测试的资产。同时要把代码复查和安全方面的软规范的要求也集成到交付流水线中去。
    • 第四,度量评价体系。
    • 第五,文化环境,我们通过组织各种活动,包括跟高校运维社区的活动和内部的活动,把各个相反方都撮合在一起,形成了比较融洽的文化环境。

    image.png

    实施的效果
    image.png

    image.png
    image.png
    image.png
    中国银行业务类型比较复杂,根据我们的分析分成了三大应用产品:

    • 第一类应用产品基于AIX系统应用产品,我们建立了AIX交付流水线
    • 第二个核心银行系统所应用的产品,我们也建立了基于ZOS的交付流水线
    • 还有就是基于X86架构的产品,一共是三条交付流水线

    这三条交付流水线贯穿了从需求到构建,到开发,到代码复查,到测试,到功能测试环节,一直到生产整个过程。我们是通过版本在流水线的流动也搭建了数据中心和软件中心之间的桥梁,让部门之间的协作更加融合。
    右边这个图说的是我们的部署系统,在流水线里边我们的部署系统是我们的核心,这个部署系统在开发过程中主要是跟我们的构建和组包的工具是相关联的。在开发完成了以后,我们形成了相应的执行码以后就会直接把包传送到我们的部署系统里边去,通过部署系统进行自动的部署,然后部署到我们的开发环境,然后进行后面自动化的单元测试和内部测试。
    image.png
    在功能测试环节,我们开发人员完成了代码提交,提交到配置管理系统以后,配置管理系统会经过相应版本的审核,审核完成了以后会自动的推到相应的部署系统,部署系统会自动的在功能测试环境进行部署,部署完了以后进行相应的测试。
    这是在开发和测试过程。到了数据中心以后,我们这个版本通过两边的协作建立了通道,我们的版本可以通过软件中心的产品库推送到数据中心的版本发布平台。在这里部署系统就和数据中心的版本发布平台进行关联,版本发布平台收到了版本以后会自动的推送到相应的部署平台上去,在演练环境里边进行自动部署,部署完了以后会有一个业务验证性的测试。
    这里边演练和生产中间,它俩之间网络是不通的,这个版本是从这儿推到演练环境的部署平台,演练和生产之间的桥梁这儿就结束了。后面是在另外一个网络里进行的,因为金融系统对安全的要求会更高一些。在宣传环境里边,对用户安全管理要求非常高,部署系统会跟用户管理系统做一个对接,然后自动的管理我们要部署的目标环境用户,自动获取,然后进行自动部署。
    image.png
    原来版本从开发部门提到产品库以后会做相应的合规性检查,检查完了以后会放到相应的产品库地址上去,并且同时会内部发邮件到数据中心的调度团队。调度团队收到邮件以后会取出版本,也要进行版本的合规性检查,因为他们对版本有另外一套规则的验证,如果检查合规的话就会放到数据中心的版本服务服务器上去。
    实施DevOps流程以后,通过互相的工具改造,流程进行了精简和优化。我们把在数据中心做版本检查这一块的版本检查点前移到前面去,移到了开发中心的版本检查点,我们就不会因为他检查的不合格,使得版本的回退这种事情的发生。这前面也都是自动化的完成,检查完了以后自动把版本推送到了演练环境的部署平台。
    image.png
    在这里边涉及到的几个工作步骤:

    • 第一个依据版本的标识会把版本从软件中心自动的推到服务器上,因为生产和演练是不连的,所以要放在中间的桥梁上。
    • 演练的部分直接推送到演练对应服务器指定的地址。我们要把版本再推到生产环境的相应指定位置
    • 第三,平台自动获取版本,会找相应的生产环境对应的版本,拿到部署的平台上去。

    image.png
    WAS这一块,手工模式部署拿到的普通用户在控制台上的操作,这个时候我在控制台上做WAS部署就可以顺利的完成。采用自动化流程了以后我们的第一个方案是通过部署平台来实现目标环境自动化的部署。通过第一个方案需要普通的部署用户拥有根目录下的权限,有几个文件是需要权限的。后来这个方案拿到了总行和数据中心安全团队进行评估的时候被否定了,权限会有漏洞,安全是第一位的。
    所以第一个模式就被打回来了,其实第一个是最高效和最快的,但是因为有安全的隐患。后来WAS专家们在一起又商量采用了第二个方案,在目标环境和部署系统之间增加一个堡垒机,部署系统通过WAS的堡垒机向目标环境进行WAS的部署。
    image.png
    在这个方案里边我们也进行了反复的验证,里边遇到了很多问题,WAS堡垒机的版本和你要带部署目标环境一定要在大版本保持一致。如果目标环境是8.0,这个一定得是8.0,如果是8.5就不行。这之间要有匹配。如果你的目标环境WAS版本非常多的话,这个堡垒机今后维护起来就是一个问题。第二个问题待会儿再详细讲,WAS本身有很多的坑在里边。
    image.png
    在流水线建设上还有一些自动化测试的应用,在自动化测试的应用上主要建设了自动化测试的平台,通过运用自动化的工具,主要开展了以组装测试为主的,并且涵盖了代码复查和性能测试等多种测试能力。同时也建立了分级的测试体系,有组装测试、功能测试和验证性测试。根据我们的交付流水线我们也建立了不同的应用模型。
    image.png

    image.png