最初由平台工程和站点可靠性总监
Posted: Sat Dec 21, 2024 7:16 am
最初由平台工程和站点可靠性总监 Torleiv Flatebo 在GovDelivery 博客上发布
尽管 GovDelivery 已有 15 年历史,但我们始终是一家软件即服务公司,以在尖端政府软件方面不断突破极限而自豪。尽管如此,在过去十年中,技术发生了变化,我们也发生了变化——我们经历了许多不同的后端和前端,才达到现在的水平。
100M-lt蓝色#-190x110今天,我们很高兴地宣布,GovDelivery 技术 在全球拥有超过 1 亿用户,每天可处理超过 5000 万条消息。(更多信息请参阅我们首席执行官 Scott Burns 的公告。)
鉴于这种规模和影响力,平台背后的技术比以往任何时候都更加重要。在 GovDelivery 的平台工程小组中,我们支持并致力于配置管理、部署工具、持续集成、数据中心自动化和后端服务,以支持 1,000 多个机构和 1 亿多公民之间的通信。自然,我有时会问:“构建如此规模的技术是什么感觉?”
三个指导原则使我们的技术战略得以扎实实施:
面向未来的架构:我们考虑过所使用的工具,并有意识地选择了能够让我们的平台扩展到 1 亿用户甚至更多的工具,通过处理大量流量并快速将新功能推向市场。
开放、敏捷和协作的过程:我们结合监控、开源、拉取请求、Scrum 和 CI 来制作我们自豪的软件。
大规模可靠性:正常运行时间对我们来说非常重要,我们有聪明的人认真思考如何使其变得更好,无论它现在有多好。
我们基础设施的第一个版本运行在 Windows 上,而且我们到处都是 Java。这让我们走得比我想象的要远,但随着我们的用户数量从 1000 万、2000 万、5000 万增长到现在的 1 亿,我们的架构已经发展成为一个更具可扩展性的系统。
我们当前的架构主要运行在 Ruby on Rails 和 Java 上,我们所有的工程师都使用 Mac OSX 或 Linux,我们的团队坚信测试驱动开发 (TDD)、拉取请求和持续集成 (CI)。一致性至关重要 — —设计可扩展性也同样重要。架构的核心(概念和技术上)是一组 REST API,它们可以实现跨产品线的功能并减少代码重复。例如,我们发送了大量电子邮件(今年已经超过 60 亿封,并且还在不断增加),因此当新应用程序需要发送电子邮件时,我们会将其连接到管理复杂性的集中式 API,而新应用程序只需进行 REST 调用即可免费获得许多功能。随着我们扩展 GovDelivery 产品线 — — 使用 NuCivic 的开放数据平台和 Textizen 的交互式文本消息传递 — — 这一策略使我们能够相当无缝地增长和扩展功能。
不过,如果认为一路上没有坎坷和教训,那就太愚蠢了。随着我们的成长,我们遇到了各种各样的扩展问题,我们努力不断学习和发展。我们使用一些规则来帮助我们:
偏向协作和一致性:我们都在开放的空间中一起工作,并且我们大量使用持久聊天室来促进团队之间的沟通,并让每个人都能看到正在发生的事情。
打破 孤岛:我们定期在团队之间进行交叉,并指定嵌入到其他团队的角色,以提供知识转移,并为任何需要升级或需要其他团队协助的问题提供立即解决的渠道。
将 50% 的容量视为 100%:我们需要能够随时翻倍。
使用指标(深思熟虑):有些问题并不是真正的问题,我们使用数据来帮助了解它是否是夜间的颠簸,或者是否是更大问题的指标。
隔离并分类所有生产事故或异常:及早发现问题是识别新问题并在其影响客户之前解决它们的关键。
透明度:将所有问题放在一个地方,让每个人都可以随时看到。
专注产品团队:尽可能专注于一些计划,并从 MVP 到 Beta 再到 1.0。
优先考虑规模问题:不要因为某个问题似乎遥不可及而忽视或遗忘它们;需要认真确定范围并加以解决。
不要重新发明轮子:我们首先会使用开源工具。查看我们的 github 了解 冰岛电话号码列表 我们正在做什么。
下一步
我们拥有一支出色的工程师团队,他们不断努力预测扩展问题,并处理生产中出现的性能问题。(SaaS 在这方面确实帮了我们大忙;我们可以在眨眼间解决所有客户的问题。)我们不断寻求创新。新公司正在使用许多新技术。我们喜欢新东西,但我们也必须在使用最新容器或工具的同时平衡我们的规模、效率和安全需求。
我们现在正在关注的一些事情:
当我们将堆栈分解为更多服务时,如何进一步自动化新应用程序的启动?有哪些方法可以消除复杂性和重复性?
我们能否降低部署时的风险并加快部署周期?
我们如何融入下一代配置管理、云服务和监控/指标?
来帮帮我们

尽管 GovDelivery 现在是一家拥有 200 多名员工的公司,但团队中的每个成员都被授权并被鼓励帮助回答这些问题并发现新问题。这是我们继续大规模创新的唯一方法。当然,这是一项艰苦的工作,但也很有趣和重要。我们正在大规模地为公众利益构建软件。我们一直在寻找渴望接受挑战的优秀人才。如果您有兴趣加入 GD 工程团队,请查看GovDelivery.com/Company/Careers,在圣保罗或华盛顿特区停留,或者随时给我们写信(或发送请求)。
让我们共同努力,为下一个1亿人建设这个系统。
(编者注:如果您想了解更多有关 GovDelivery 的规模以及我们的客户对该平台的影响,请查看govdelivery.com/100M上的 100M 公告)
尽管 GovDelivery 已有 15 年历史,但我们始终是一家软件即服务公司,以在尖端政府软件方面不断突破极限而自豪。尽管如此,在过去十年中,技术发生了变化,我们也发生了变化——我们经历了许多不同的后端和前端,才达到现在的水平。
100M-lt蓝色#-190x110今天,我们很高兴地宣布,GovDelivery 技术 在全球拥有超过 1 亿用户,每天可处理超过 5000 万条消息。(更多信息请参阅我们首席执行官 Scott Burns 的公告。)
鉴于这种规模和影响力,平台背后的技术比以往任何时候都更加重要。在 GovDelivery 的平台工程小组中,我们支持并致力于配置管理、部署工具、持续集成、数据中心自动化和后端服务,以支持 1,000 多个机构和 1 亿多公民之间的通信。自然,我有时会问:“构建如此规模的技术是什么感觉?”
三个指导原则使我们的技术战略得以扎实实施:
面向未来的架构:我们考虑过所使用的工具,并有意识地选择了能够让我们的平台扩展到 1 亿用户甚至更多的工具,通过处理大量流量并快速将新功能推向市场。
开放、敏捷和协作的过程:我们结合监控、开源、拉取请求、Scrum 和 CI 来制作我们自豪的软件。
大规模可靠性:正常运行时间对我们来说非常重要,我们有聪明的人认真思考如何使其变得更好,无论它现在有多好。
我们基础设施的第一个版本运行在 Windows 上,而且我们到处都是 Java。这让我们走得比我想象的要远,但随着我们的用户数量从 1000 万、2000 万、5000 万增长到现在的 1 亿,我们的架构已经发展成为一个更具可扩展性的系统。
我们当前的架构主要运行在 Ruby on Rails 和 Java 上,我们所有的工程师都使用 Mac OSX 或 Linux,我们的团队坚信测试驱动开发 (TDD)、拉取请求和持续集成 (CI)。一致性至关重要 — —设计可扩展性也同样重要。架构的核心(概念和技术上)是一组 REST API,它们可以实现跨产品线的功能并减少代码重复。例如,我们发送了大量电子邮件(今年已经超过 60 亿封,并且还在不断增加),因此当新应用程序需要发送电子邮件时,我们会将其连接到管理复杂性的集中式 API,而新应用程序只需进行 REST 调用即可免费获得许多功能。随着我们扩展 GovDelivery 产品线 — — 使用 NuCivic 的开放数据平台和 Textizen 的交互式文本消息传递 — — 这一策略使我们能够相当无缝地增长和扩展功能。
不过,如果认为一路上没有坎坷和教训,那就太愚蠢了。随着我们的成长,我们遇到了各种各样的扩展问题,我们努力不断学习和发展。我们使用一些规则来帮助我们:
偏向协作和一致性:我们都在开放的空间中一起工作,并且我们大量使用持久聊天室来促进团队之间的沟通,并让每个人都能看到正在发生的事情。
打破 孤岛:我们定期在团队之间进行交叉,并指定嵌入到其他团队的角色,以提供知识转移,并为任何需要升级或需要其他团队协助的问题提供立即解决的渠道。
将 50% 的容量视为 100%:我们需要能够随时翻倍。
使用指标(深思熟虑):有些问题并不是真正的问题,我们使用数据来帮助了解它是否是夜间的颠簸,或者是否是更大问题的指标。
隔离并分类所有生产事故或异常:及早发现问题是识别新问题并在其影响客户之前解决它们的关键。
透明度:将所有问题放在一个地方,让每个人都可以随时看到。
专注产品团队:尽可能专注于一些计划,并从 MVP 到 Beta 再到 1.0。
优先考虑规模问题:不要因为某个问题似乎遥不可及而忽视或遗忘它们;需要认真确定范围并加以解决。
不要重新发明轮子:我们首先会使用开源工具。查看我们的 github 了解 冰岛电话号码列表 我们正在做什么。
下一步
我们拥有一支出色的工程师团队,他们不断努力预测扩展问题,并处理生产中出现的性能问题。(SaaS 在这方面确实帮了我们大忙;我们可以在眨眼间解决所有客户的问题。)我们不断寻求创新。新公司正在使用许多新技术。我们喜欢新东西,但我们也必须在使用最新容器或工具的同时平衡我们的规模、效率和安全需求。
我们现在正在关注的一些事情:
当我们将堆栈分解为更多服务时,如何进一步自动化新应用程序的启动?有哪些方法可以消除复杂性和重复性?
我们能否降低部署时的风险并加快部署周期?
我们如何融入下一代配置管理、云服务和监控/指标?
来帮帮我们

尽管 GovDelivery 现在是一家拥有 200 多名员工的公司,但团队中的每个成员都被授权并被鼓励帮助回答这些问题并发现新问题。这是我们继续大规模创新的唯一方法。当然,这是一项艰苦的工作,但也很有趣和重要。我们正在大规模地为公众利益构建软件。我们一直在寻找渴望接受挑战的优秀人才。如果您有兴趣加入 GD 工程团队,请查看GovDelivery.com/Company/Careers,在圣保罗或华盛顿特区停留,或者随时给我们写信(或发送请求)。
让我们共同努力,为下一个1亿人建设这个系统。
(编者注:如果您想了解更多有关 GovDelivery 的规模以及我们的客户对该平台的影响,请查看govdelivery.com/100M上的 100M 公告)