最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

英国税务局(HMRC Digital)的 DevOps 之旅

  • 2016-08-30
  • 本文字数:2779 字

    阅读完需:约 9 分钟

2016 年在伦敦举办的 DevOps 企业峰会上,最吸引大家眼球的莫过于英国皇家税收与关税局 (HMRC) 英国税务海关总署的 DevOps 和持续交付实践案例,在案例中他们逐步将部门的官僚文化改变为快速交付的数字税务服务。InfoQ 采访了其中的演讲者之一 Lyndsay Prewer,深入了解了他们的历程,以及目前的情况和最大的挑战。

InfoQ:能否详细介绍下您目前的职位?

Prewer:我是 Delivery Lead 的交付代表(Delivery Lead),目前在 HMRC Digital 工作。我带领一个产品团队,负责使 HMRC 数字服务更易于访问并提升其安全性。所以我经常跨部门协调工作,帮助他们通过小的常规增量,逐步提高交付服务的质量。

InfoQ:你第一次知道 DevOps 是在什么时候?

Prewer:担任这个职务之前,我在帮助一个私营部门提高交付频率,从每年一次提高到每周 n 次。首先建立持续交付的文化就是个大工程,然而这还远远不够。开发和运维是两个团队,有分别的 leader,这严重影响了下一步的进度。那时我第一次听说了 DevOps,还读了《Phoenix Project》这本书。我们的结论是营造一种 DevOps 的文化是实现持续交付的关键,但后来证明这也是一件很棘手的事情。

InfoQ:HMRC Digital 是如何开始 DevOps 的?第一步做了什么?为什么这么做?

Prewer:HMRC 之前外包了所有的 IT 业务,导致交付过程非常繁重,试想一下:繁琐的文档,超长的交付周期,很少的发布和周期性的变更冻结。后来成立了 HMRC Digital 部门,最开始只是一个很小的团队,负责交付小规模的 IT 解决方案。HMRC 缺乏这方面的专家和文化,所以需要从其他公司引进专家来帮助他们。HMRC 提供业务知识和方向,政府数字服务提供了一个专注于用户需求的框架(帮助绕过官僚的繁文缛节),Equal Experts 以及其他的咨询团队凭借他们在敏捷、精益和 DevOps 的经验,提供技术和专业知识,进行解决方案的迭代设计,构建和交付。

InfoQ:这是一个基层的行为,还是需要自上而下对 DevOps 的理解?

Prewer:HMRC 知道需要改变,但并不知道如何改变。专家们也都知道只有证明了新的方式能够带来价值,才能顺利地进行组织的改变。所以团队最初通过敏捷、精益和 DevOps 的实践,将一些小的变化应用到了生产环境。第一个线上的税收信用恢复服务,就是一个很好的案例,这个项目只用 8 周就完成了。这个服务让大部分用户都可以在线上更新他们的税收信用,免去了电话和纸质渠道带来的不便和费用。这些小的尝试,也坚定了 HMRC 继续对 Digital 部门进行投资的信心。

PaaS 平台的构建让这个团队获得了重要的成长,通过 DevOps 的特性,产品团队拥有了自治权。当一个新的产品团队来到这个平台时,他们马上就能获益于平台的自动构建和部署流程。而且,他们构建的服务还能充分利用平台提供的授权、审计、监控和报警等功能。这样一来,构建服务的团队也负责保证这个服务在生产环境中的运行,符合亚马逊的“you build, you run it”的原则。

InfoQ:目前 HMRC Digital 在 DevOps 方面有哪些进展?其中包含了组织的变化吗?

Prewer:每年的 12 月到 1 月 31 日(提交自行纳税申报的截止日期),HMRC 的线上流量都会激增,为了应对每年的流量高峰,HMRC 添加了另一个云服务商。第二个服务商在 2015 年 10 月被选定,12 月投入使用,力争对产品团队和他们的服务造成最小的影响。基础设施变更的顺利过渡,得益于 HMRC Digital 的 PaaS 平台和产品团队的自治。50 个产品团队中,只有 2 个 WebOps 团队在维护着这个平台。WebOps 专注于平台的基础设施建设,让其它产品团队能够将精力都放在核心业务上。

InfoQ:HMRC Digital 是否有计划在整个集团内推广 DevOps?

Prewer:HMRC Digital 的 PaaS 中集成了强大的监控和报警工具(ELK、Sensu 和 PagerDuty),不被使用的话这些工具没有任何意义。但教会这 50 个产品团队去正确的配置和使用这些工具并不容易,需要首先解决以下问题:

  1. 服务目录,为各个列出微服务的地图;
  2. 为每个团队和他们的微服务自动启动监控和报警工具;
  3. 定期更新内部的博客,讲述各个团队的案例,展示他们是如何使用这些工具支撑自己的业务和最终用户的。
    前两步需要团队去访问提前定义好的 kibana 面板和 grafana 面板,查看自己的微服务,当然他们也可以创建自己的面板。

而且,一旦达到了某个给定的错误阀值,微服务的报警就可以自动发送给对应的团队。每个微服务都可以自定义阀值,所以这些工具可以灵活地满足不同团队的需求。

InfoQ:在推进 DevOps 的过程中,HMRC 还遇到了哪些文化或技术上的挑战?

Prewer:HMRC Digital 每天要有数次生产环境的部署,平台上运行着 300 多个微服务。然而 HMRC 的遗留系统还保持着几个月的发布周期,峰值业务时会变更冻结,还有冗长的端到端测试安排。

很多情况下我们不得不将数字服务推送到遗留的后端服务上,两种“文化的碰撞”必然会产生摩擦。过去三年来,摩擦已经越来越少。几个月的发布周期,也由于频繁的系统更新而变得越来越短,变更冻结也不再是常态,桩和契约的使用大大减少了端到端的测试需求。

InfoQ:在 2016 年 DevOps 使用情况报告中显示,在 DevOps 和持续交付的投资能够促进业务更快、更可靠的交付。你同意这种说法吗?

Prewer:我 100% 同意。从一开始,我们就以迭代的方式设计和交付了服务。我们尽量将最小的更新以最快的速度推进到生产环境,然后开始迭代。比如“Tax Account Router”的项目,这是在 2015 年 11 月被引进的一个微服务,为的是应对 2016 年 1 月的流量高峰。这个微服务的作用是将所有的自行纳税申报用户,根据他们的用户类型(比如业务、个人或机构),引流到正确的登录页面。

这个项目开始后的第六周,第一个版本被发布到了生产环境,然而这时的版本只是围绕被路由的用户数量简单地生成了指标。这让我们能不对真实用户产生任何影响的情况下,验证他们的行为。然后我们在节流阀之后加上了路由的功能,同样是为了保证验证造成的影响最小。这个例子展示了我们如何在每次发布时添加最小的更新,将风险和浪费最小化。我们能做到这样,得益于我们的构建和部署流程,它能让代码变更在几小时内发布到生产环境。这是一个和普通的实践和过程,并没有投机取巧或绕过某些过程。

InfoQ:HMRC Digital 的 DevOps 之旅中有哪些挑战和障碍?

Prewer:DevOps 让 HMRC Digital 能每天将更新发布到数字服务的生产环境中。这对于业务和用户都有很大的帮助,但是如何让 HMRC 其余的部门在服务有细微差别的情况下保持同步是一个巨大的挑战。

通过小而专的产品团队参与业务,以及开发和运营专家的帮助,HMRC Digital 在服务交付上已经有了很大的进步。下一步就是在整个 HMRC 组织中,提高集成和反馈的回路。

查看英文原文 DevOps Gov Adoption at HMRC Digital


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-08-30 19:001542

评论

发布
暂无评论
发现更多内容

【云原生 | 从零开始学Docker】三、Docker实战之安装Nginx和Tomcat

泡泡

Docker 云计算 容器 云原生 9月月更

生成 UUID 的三种方式及测速对比!

掘金安东尼

前端 9月月更

java之面向对象1

喜羊羊

java; 9月月更

小公司里用SpringBoot做MySQL分库分表,踩了一些坑!

Java-fenn

Java

Flutter - Google 开源的移动 UI 框架

陈橘又青

谷歌 flutter 调试工具 9月月更

数据湖与数据仓库

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

Netty系列教程(二)Netty架构设计剖析

Java-fenn

Java

自动化测试中对多断言的思考和实践

Java-fenn

Java

【JavaWeb】JDBC快速入门时间

Java-fenn

Java

高项-第一章 信息化和信息系统(2)

索隆

项目管理 软考

数据结构与算法(四)——栈和队列

Java-fenn

Java

力扣142 - 环形链表||【二重双指针+哈希表】

Fire_Shield

链表 LeetCode 9月月更

高级前端二面面试题

夏天的味道123

JavaScript 前端

九个写 TypeScript 的坏习惯,看看你有没有?

Java-fenn

Java

k8s中几个基本概念的理解

Java-fenn

Java

弱隔离级别 & 事务并发问题

Java-fenn

Java

TAP 基于 Knative 的 云原生运行时

Java-fenn

Java

物理层基本概念

StackOverflow

编程 计算机网络 9月月更

OpenFeign引起的HTTP Status 400与Tomcat吞没数据

Java-fenn

Java

观察|数字经济新业态:云安全与生物医药CDMO合作成新趋势

Java-fenn

java;

架构师的十八般武艺:测试保障

agnostic

测试

SpringBoot 源码 | prepareEnvironment 方法解析

Java-fenn

Java

我的设计模式之旅 ⑦ 观察者模式

Java-fenn

Java

SpringBoot与Thymeleaf模板入门整合篇

Java-fenn

Java

css实现模糊镜效果及渐变字体和text-shadow冲突解决方案

Java-fenn

Java

阿里前端高频面试题

beifeng1996

JavaScript 前端

百度前端二面常见面试题合集

bb_xiaxia1998

JavaScript 前端

经常用 vant-weapp 开发小程序,却不知道如何开发一个组件?

若川

JavaScript 小程序 前端 前端开发 小程序开发

还在用开发者工具上传小程序? 快来试试 miniprogram-ci 提效摸鱼

若川

JavaScript 小程序 前端 小程序开发

字节前端高频面试题

helloworld1024fd

JavaScript 前端

vite 3.0 都发布了,经常初始化 vite 项目,却不知 create-vite 原理?揭秘!

若川

JavaScript vue.js 前端 nodejs vite

英国税务局(HMRC Digital)的DevOps之旅_DevOps & 平台工程_Manuel Pais_InfoQ精选文章