2029年英国大选网站技术架构揭秘

本文介绍了作者为2029年英国大选构建网站的技术规划,包括架构选择、数据模型设计、第三方API集成、存储方案及多环境部署等关键技术细节。

引言

我启动英国2029年大选网站已经超过8个月了,现在是时候写一篇介绍性文章,以便后续深入讨论更详细的技术主题。

2024年英国大选宣布后不久,我在 https://jonskeet.uk/election2024 创建了一个小型网站,最初是为了跟踪Sam Freedman的选举预测并与实际结果进行比较。网站的范围有所扩大,但从未打算做得特别精致或面向广大受众。从第一次代码推送到大选日的总时间约为4周。

然而,在大选日当天,我决定非常享受这次体验,于是当天注册了election2029.uk域名,创建了新的GitHub仓库和新的GCP项目,并推送了一个初始占位页面。关于2024年网站的更多细节,请参阅我早先关于选举之夜的文章——除了用于比较的目的外,我不打算回顾任何技术细节。

对于2029年的网站,我的目标受众更广,时间跨度也更长。我怀疑很少有"小型"项目(就贡献者数量和预期花费的时间而言)的截止日期如此之长。我们尚未确定下次英国大选的日期,但我个人相当有信心会在2029年举行——我个人猜测是2029年5月。如果我们预计对下次大选的兴趣在2028年底或2029年初开始升温,那么从首次注册日期到我预计网站真正需要具有相当吸引力的时候,我还有超过4年的时间。

选举日期是一个有趣的截止日期,它既是"非常宽松的"(我从未在如此长的时间尺度上工作过),又是非常紧迫的(如果网站在选举结束后才完成,那就毫无意义了)。

该网站已经(2025年3月)具备了我预期包含的大部分功能,因此我希望大部分数据模式是合适的,即使数据呈现方式可能会有很大变化。即使在过去的8个月里,我在技术方面也获得了许多乐趣,我希望能通过博客文章分享相当多的内容。

这篇文章不涉及任何技术方面,但我认为值得概述一下我想要实现的目标。

需求

  • 对选举爱好者和普通公众都有价值且信息丰富。(我认为思考"普通选民"想知道什么可能是最大的挑战之一。)
  • 对用户完全免费——无订阅、广告,甚至无Cookie。
  • 对用户快速——我认为没有任何理由页面加载不应该眨眼之间完成,并且应该真正使用非常少量的数据。(外部JavaScript库可能占数据传输的大部分,这些库仅在你想要查看可视化内容(如地图、图表或桑基图)时才需要。)
  • 对我而言成本低廉——我不应该最终不得不担心网站每天花费多少,除非它出乎意料地变得非常受欢迎……即使在我最疯狂的梦想中,这也只可能在大选活动本身的几周内产生财务影响。(作为对此的注意事项,如果我认为我有一个值得访问但难以获得关注的网站,我考虑在某个时候付费做广告。显然,我很希望在热门播客或类似平台上被提及,然后通过口碑获得流量。)
  • 对我而言有趣——如果这开始变得更像一件苦差事而非乐趣(并且假设在那个时候我没有重要的用户基础会感到失望),我可以直接关闭它。不过,我认为这极不可能发生。
  • 基于事实——这并非旨在表达我的政治倾向,也不是练习政治分析的机会。在选择纳入哪些民意调查等方面总是存在潜在的偏见风险,但现实地说,我怀疑我实际上会排除任何主流的民意调查。(我不会做538风格的民调机构评级。)

未来文章主题

我预计会陆续撰写以下主题的文章——我怀疑有些文章会包含多个主题。

  • 高层架构和技术选择
  • 数据模型:ElectionContext和ElectionCoreContext
  • 第三方API和数据转换
  • 存储选择(Firestore和文件)
  • JavaScript的乐趣
  • 在1MB文档中存储超过200万个邮政编码
  • 不变性、记录和性能
  • 业余项目中的多环境
  • 在Cloud Run中构建"后台服务"

如果你希望我涵盖任何其他主题,请在评论中告知。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计