Capital One 在三月份刚刚发布了开源项目 Hygieia 的版本 2.0,新的特性包括:支持多个团队;新增了一个程序级别的仪表板,以展示多个团队的统一视图;一个 Jenkins 输出发布工具,以及一个 GitHub 的 Webhook 调用端。Hygieia 在一个单一面板的 HTML 客户端中集成了多种部件,包括用户故事追踪、repository、构建、质量、部署以及监控工具,让用户能够方便地访问各种重要的 DevOps 指标。
新的程序级别仪表板可以聚合多个团队、或大型团队的信息,这些团队可能会使用不同的工单和用户故事追踪工具、代码仓库以及构建工具。在管道的每个阶段都会显示重要的指标,例如产品的健康情况:
图片来源:capitalone.io
此外,在程序视图中还将显示管道的速度以及提交的数量:
Hygieia 中的仪表板可进行自定义:用户可以选择 VersionOne 或 Jira 进行用户故事的追踪,选择 Subversion 或 GitHub 作为代码仓库,选择 Jenkins 或 Hudson 进行构建,选择 Selenium 和 SonarQube 用于质量检测,以及选择 uDeploy 或 Jenkins 进行部署。除此之外,还有更多的插件可以进行选择。
下图展示了一个团队级别仪表板的示例:
Hygieiak 中的仪表板可以提高整个流程的透明度,以此帮助用户建立反馈循环,而这正是精益开发与 DevOps 的基本概念。这些仪表板中包含了各种可交互元素,可连接到相关的工具,并深入了解其中的内容。
InfoQ 与 Capital One 的 Hygieia 团队进行了一次访谈:
InfoQ:能否请你做个简单的自我介绍,并描述一下你在 Hygieia 的开发中所扮演了的角色?
我的名字叫做 Tapabrata Pal(人们通常叫我“Topo”),是 Hygieia 社区的管理员。
Capital One 一直致力于 DevOps 方面的工作,我们曾经尝试寻找各种商业性与开源的仪表板工具。如今市面上已经出现了一些优秀的工具,但他们都没有提供我们所需的内容,即持续交付管道的健康状况,包括提交至生产部署环境的代码,以及软件的健康状况以及质量方面的重要信息。
因此,在 2013 年夏季,我的同事 Amit Mawkin 与我共同开发了一个概念验证。在成功地开发出这个概念验证之后,我们就为开发团队、主管以及项目的担保资金负责人进行了演示。我们的开发是以一种“Inner Source”的形式进行的,这也符合 Capital One 的开源项目开发流程。在 Capital One,员工对于开源项目的使用与贡献的兴趣和渴望呈现出了爆炸式的增长,同时,我们也增强了负责开发内部软件的工程团队的实力。我们相信,使用开源软件而不是具有许可的产品能够带来巨大的利益。
我们在 2013 年晚些时候在内部发布了这个产品,对其进行了充分的测试,并且进行了多次重构与重新设计。在 2015 年夏天,我们将这一项目进行了开源(取名为 Hygieia)。
如今,我担任了 Hygieia 社区管理员的职责。这个项目的主要贡献者包括 Amit Mawkin、Jeffery Damick 与我本人,我们每人负责的内容都对应着 Capital One 中的一条产品线。
InfoQ:Hygieia 是如何改善 Capital One 的持续交付流程的?
要使持续交付流程在任何组织中取得成功,透明性是一个关键的需求点。这种透明性体现在交付管道中的每个阶段。如果你所参与的某个大型产品是由多个敏捷团队共同开发的,那么这一点将显得尤为重要。透明性的另一个方面在于快速反馈。参与产品开发过程的每个人都应了解管道的健康状况,包括产品负责人、开发者、测试工程师、运维工程师、信息安全工程师、发布工程师以及管理者等等。
通过使用 Hygieia 仪表板,我们将能够增进管道的透明性。每个参与者都能够看到(a)团队所开发的用户故事,哪些故事尚未完成,哪些部分已经完成。(b)哪些代码已经提交,提交的频率是多少,是哪些人提交了代码。(c)有哪些构建正在进行中,哪些构建失败了,造成失败的原因是什么。(d)代码的静态代码分析结果,代码的安全扫描结果,单元测试结果以及测试覆盖率,功能性测试用例执行结果。(e)各种运行环境,以及代码在这些环境中的部署状态。(f)通过一个部署管道,展示哪个版本的软件部署在哪个环境中,以及哪些部署失败了。
除了以上功能之个,我们最近还发布了该产品的一个更新版本,你可以看到不同开发阶段中代码提交的移动情况,包括对 DEV、QA、INT 环境中的代码提交、构建以及部署。每个阶段都会显示等待进入下一阶段的提交数量,以着重表示每个阶段之间的等待时间。这有助于团队讨论如何减少等待时间。我们认为这是实施精益开发的正确方式,它能够加速持续交付管道的运行。
InfoQ:这个产品的主要优点体现在哪里,它对于组织中的哪些角色能够带来最大的利益?
已经有许多工具能够帮助团队创建一个持续交付管道,而每个工具都可能有其不同之处。这些不同点取决于各种因素,包括产品本身使用的技术栈、团队的选择、工具是否可用等等。这些工具都带有各自不同的仪表板,以显示整个管道信息中的一小部分。
Hygieia 则能够展示整个管道的完整视图,包括用户故事或需求,乃至生产环境中的代码部署。它能够恰到好处地显示信息(这是令我感到自豪的部分),让产品团队中的相关人员能够采取正确的行动,以修复某些出错的部分。它同时展示了质量方面的信息,让产品负责人决定是否要在下一个 sprint 中加入某些质量改进方面的工作。通过其中展示的信息,还能够帮助团队对于管道本身的设计展开讨论:测试用例的运行时间是否过长?某个流程是否让
Hygieia 所展示的某些信息能够让我们为交付管道引入一些积极的改动。举例来说,在 Hygieia 内部发布的早期阶段,许多团队的仪表板上所显示的单元测试覆盖率以及未关闭的严重代码分析问题结果有些惨不忍睹。这些团队采取了相应的措施,在常规的 sprint 中加入了某些改进性的工作,而他们也从管理者那里得到了良好的支持。
对于 Hygieia 的使用者,我敢说这些仪表板能够帮助参与软件开发过程的所有人:包括管理者、产品负责人、开发者、测试工程师、应用安全工程师、发布工程师等等。
InfoQ:该产品目前所支持的部署编排工具是 uDeploy,是否有计划提供与其他工具的对接?
是的。通过我们提供的 Jenkins 插件,使用 Jenkins 进行应用部署的团队就能够将应用部署状态提交至 Hygieia。我们在内部正在设计与 Chef 和 Ansible 的集成。
Hygieia 不依赖于具体的工具,整个产品的架构选用了基于插件的架构。我们已经为内部团队所使用的工具,以及在行业中非常流行的一些工具提供了插件。如果某个团队选用了其他工具,也可以非常方便地创建新的插件。我们还提供了 REST API,可通过远程调用这些 API 将数据发布至 Hygieia 中。我们希望社区能够为 Hygieia 做出回馈。
InfoQ:你是否能够展望一下未来的特性路线图?
我们将继续改进这个产品,以加入一些对于社区来说非常重要的特性集。我们正在致力于开发与 AppDynamics、Chef、Ansible 以及其他一些测试工具的集成。
以下是 Hygieia 未来会改进的两个方面:
(a)对于各环境的监控,我们希望能够在仪表板中展示大量与基础设施相关的信息
(b)在整个流程中展现特性的流动以及代码提交信息。请回想一下持续交付的观念,它的目的就在于更快地交付业务价值,并保证产品具有良好的质量。因此。业务人员需要了解这个产品所带来的价值。我是狗食(dogfooding)过程的忠实拥戴者。在组织内部,我们有许多大型的内部产品团队都在积极地使用该产品。Hygieia 会注意到它拥有一个活跃的、令人自豪的社区,这是因为我们的内部使用者为我们提供了大量反馈。我们将定期开发与发布新的特性。
InfoQ:你还有哪些内容希望为读者分享吗?
在 Capital One,我们相信开源是一种开展业务的良好方式,并且有充分的理由证明这一点:它是一种让人们聚集在一起创建优秀产品的强大方式,并且能够让人们理解互利的思想。银行业重新洗牌的时机已经成熟,这也是为什么 Capital One 要选择拥抱开源的方式重新定义该行业的产品、服务和数字体验,它能够以一种更合理的方式将人与利益连结在一起。
查看英文原文: DevOps Dashboard Hygieia Aggregates End-to-End View of the Delivery Pipeline
评论