2029选举网站技术架构与开发规划

本文介绍了2029英国大选网站的技术规划,包括架构设计、数据模型、第三方API集成、存储方案选择以及JavaScript应用等开发细节,为长期项目提供技术路线图。

2029选举:引言

自启动英国2029选举网站已有8个多月,现在正是撰写介绍文章的好时机,以便后续深入探讨更多技术细节。

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

然而在选举日当天,我决定因体验愉快而立即注册了election2029.uk域名,创建了新的GitHub仓库和GCP项目,并推送了初始占位页面。关于2024年网站的技术细节,请参阅我早先关于选举之夜的帖子——除非为了比较,否则我不打算重提任何技术内容。

对于2029网站,我设定了更广泛的目标受众和更长的开发周期。很少有"小型"项目(就贡献者数量和预期耗时而言)的截止日期如此之长。虽然下次英国大选日期尚未确定,但我个人合理推测可能在2029年5月。即使预期在2028年底或2029年初才会引起关注,从首次注册到网站需要真正具有吸引力仍有超过4年时间。

选举日期作为一个截止期既"非常宽松"(我从未处理过如此长的时间跨度)又非常紧迫(如果在选举结束后才完成,将毫无意义)。

截至2025年3月,网站已具备大部分预期功能,因此我希望数据架构是合适的,即使数据呈现方式可能会有很大变化。仅在过去8个月中,我在技术方面就获得了许多乐趣,并希望通过博客文章分享这些经验。

本文不涉及任何技术细节,但值得概述我的目标:

需求

  • 对选举爱好者和普通公众都有价值且信息丰富(我认为思考"普通选民"想知道什么可能是最大挑战之一)
  • 用户完全免费——无订阅、广告甚至cookie
  • 用户访问快速——任何页面都应瞬间加载,且数据使用量应非常小(外部JavaScript库可能是数据传输的主要部分,仅在看可视化内容如地图、图表或桑基图时才需要)
  • 个人成本低廉——除非网站意外爆红,否则不应担心日常运营成本(即使最乐观估计,也仅在大选 campaign 的几周内可能产生财务影响)
  • 个人开发乐趣——如果项目变成负担而非乐趣(且假设没有大量用户会感到失望),我可以直接关闭它(不过我认为这极不可能发生)
  • 事实准确——这不是表达政治倾向或进行政治分析的平台(在选择纳入哪些投票等问题上始终存在潜在偏见风险,但实际上我不会排除任何主流内容)

未来文章主题

我计划逐步撰写以下主题的文章(部分文章可能涵盖多个主题):

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

如有其他希望涵盖的主题,请在评论区告知。

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