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团队进行了一次访谈:
我的名字叫做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中的一条产品线。
要使持续交付流程在任何组织中取得成功,透明性是一个关键的需求点。这种透明性体现在交付管道中的每个阶段。如果你所参与的某个大型产品是由多个敏捷团队共同开发的,那么这一点将显得尤为重要。透明性的另一个方面在于快速反馈。参与产品开发过程的每个人都应了解管道的健康状况,包括产品负责人、开发者、测试工程师、运维工程师、信息安全工程师、发布工程师以及管理者等等。
通过使用Hygieia仪表板,我们将能够增进管道的透明性。每个参与者都能够看到(a)团队所开发的用户故事,哪些故事尚未完成,哪些部分已经完成。(b)哪些代码已经提交,提交的频率是多少,是哪些人提交了代码。(c)有哪些构建正在进行中,哪些构建失败了,造成失败的原因是什么。(d)代码的静态代码分析结果,代码的安全扫描结果,单元测试结果以及测试覆盖率,功能性测试用例执行结果。(e)各种运行环境,以及代码在这些环境中的部署状态。(f)通过一个部署管道,展示哪个版本的软件部署在哪个环境中,以及哪些部署失败了。
除了以上功能之个,我们最近还发布了该产品的一个更新版本,你可以看到不同开发阶段中代码提交的移动情况,包括对DEV、QA、INT环境中的代码提交、构建以及部署。每个阶段都会显示等待进入下一阶段的提交数量,以着重表示每个阶段之间的等待时间。这有助于团队讨论如何减少等待时间。我们认为这是实施精益开发的正确方式,它能够加速持续交付管道的运行。
已经有许多工具能够帮助团队创建一个持续交付管道,而每个工具都可能有其不同之处。这些不同点取决于各种因素,包括产品本身使用的技术栈、团队的选择、工具是否可用等等。这些工具都带有各自不同的仪表板,以显示整个管道信息中的一小部分。
Hygieia则能够展示整个管道的完整视图,包括用户故事或需求,乃至生产环境中的代码部署。它能够恰到好处地显示信息(这是令我感到自豪的部分),让产品团队中的相关人员能够采取正确的行动,以修复某些出错的部分。它同时展示了质量方面的信息,让产品负责人决定是否要在下一个sprint中加入某些质量改进方面的工作。通过其中展示的信息,还能够帮助团队对于管道本身的设计展开讨论:测试用例的运行时间是否过长?某个流程是否让
Hygieia所展示的某些信息能够让我们为交付管道引入一些积极的改动。举例来说,在Hygieia内部发布的早期阶段,许多团队的仪表板上所显示的单元测试覆盖率以及未关闭的严重代码分析问题结果有些惨不忍睹。这些团队采取了相应的措施,在常规的sprint中加入了某些改进性的工作,而他们也从管理者那里得到了良好的支持。
对于Hygieia的使用者,我敢说这些仪表板能够帮助参与软件开发过程的所有人:包括管理者、产品负责人、开发者、测试工程师、应用安全工程师、发布工程师等等。
是的。通过我们提供的Jenkins插件,使用Jenkins进行应用部署的团队就能够将应用部署状态提交至Hygieia。我们在内部正在设计与Chef和Ansible的集成。
Hygieia不依赖于具体的工具,整个产品的架构选用了基于插件的架构。我们已经为内部团队所使用的工具,以及在行业中非常流行的一些工具提供了插件。如果某个团队选用了其他工具,也可以非常方便地创建新的插件。我们还提供了REST API,可通过远程调用这些API将数据发布至Hygieia中。我们希望社区能够为Hygieia做出回馈。
我们将继续改进这个产品,以加入一些对于社区来说非常重要的特性集。我们正在致力于开发与AppDynamics、Chef、Ansible以及其他一些测试工具的集成。
以下是Hygieia未来会改进的两个方面:
(a)对于各环境的监控,我们希望能够在仪表板中展示大量与基础设施相关的信息(b)在整个流程中展现特性的流动以及代码提交信息。请回想一下持续交付的观念,它的目的就在于更快地交付业务价值,并保证产品具有良好的质量。因此。业务人员需要了解这个产品所带来的价值。
我是狗食(dogfooding)过程的忠实拥戴者。在组织内部,我们有许多大型的内部产品团队都在积极地使用该产品。Hygieia会注意到它拥有一个活跃的、令人自豪的社区,这是因为我们的内部使用者为我们提供了大量反馈。我们将定期开发与发布新的特性。
在Capital One,我们相信开源是一种开展业务的良好方式,并且有充分的理由证明这一点:它是一种让人们聚集在一起创建优秀产品的强大方式,并且能够让人们理解互利的思想。银行业重新洗牌的时机已经成熟,这也是为什么Capital One要选择拥抱开源的方式重新定义该行业的产品、服务和数字体验,它能够以一种更合理的方式将人与利益连结在一起。
查看英文原文: DevOps Dashboard Hygieia Aggregates End-to-End View of the Delivery Pipeline