运行单一服务的二十年
本文内容
自 2006 年起不间断地维护着一项专门的网络服务,这件事本身就提供了一个观察互联网基础设施如何演变的独特视角。一个持续运转了将近二十年的系统,活过了数不清的技术时代、硬件世代和编程范式。
最初不过是一段直截了当的脚本,可它必须不断地去适应一个持续变动的环境,才能一直保持可用。
从早期的服务器环境过渡到现代的数据库架构,要求在表面之下持续不断地、悄无声息地重建。虽然对外的功能——送出一张图片,把一个数字加一——完全没有变过,但驱动这个过程的内部引擎,为了跟上新的标准和新的安全协议,已经被重写过好几遍。
法律变了,服务留下了
不断变动的法律环境,对长期运营来说是一项同样重大的挑战。二十年间,管理互联网上数据收集与隐私的那套规则,已经被从根本上重写过。
那些在两千年代初还完全无法想象的规定,如今已经是严格的法律要求。运营一个今天服务着 2210 个活动集成的计数服务,就要求在数据最小化这件事上采取一套严谨的做法。
每一条被存下来的信息,都必须在现行的隐私法律之下站得住脚。这项服务能活这么久,靠的不是往里添加复杂的跟踪功能,而是主动地把不必要的数据收集一层层剥掉,并保证核心的机制在法律上无懈可击、在技术上稳固可靠。
上线、扩张、关停
运行了几十年的服务的稳定性与现代软件初创公司的快速生命周期形成了鲜明对比。科技行业受到不断追求增长、货币化和收购的推动。
服务经常被推出,积极扩张,随后在未能达到指数增长目标时被关闭。像基于图像的计数器这样的专门工具通过拒绝这种超高速增长模式而生存下来。
它被设计出来,就是为了以最大的可靠性去完成一件单一的、界定得很窄的任务。由于没有外部投资人,也没有复杂的商业模式,这套基础设施能够平稳地运转下去,为那些依赖它的教区网站、兴趣博客和社区论坛,提供一份靠得住的资源。
为长期维护而建,不是为替换而建
这种长期视角从根本上改变了处理维护的方式。每一项架构决策都不是针对眼前的创新性进行评估,而是针对在未来五年内无人值守运行的潜力。
数据库架构针对耐久性进行了优化,代码库故意保持较小,并且严格最小化了对外部库的依赖。
目标是造出一个有韧性的系统,能扛住网络技术不停歇的翻搅。走到二十年这个节点上,这件事证明了:数字基础设施不必靠不断地颠覆才配称得上有价值;有时候,最大的技术成就,仅仅是安安静静、可可靠靠地一直能用。