本地优先与对抗工具锁定
在做数据工程的过程中,我发现了一个叫 Vault 的技术领域。它不是某一个单一的工具,而是一套用来管理加密、密钥分发和本地数据保护的方案。这个词不是我在书本上读到的,而是在解密微信本地数据库的时候,从技术文档里面碰到的。我一头扎了进去,发现这个领域正好贯穿了我这几天在做的事情。
我的工作流变成了这样一个模式。所有的开发都在本地机器上完成,不在远程服务器或者云控制台里面写代码。程序写好之后,部署到一个受控的环境中去执行数据提取,提取完之后把结果拿回本地做分析。这个过程跟持续交付的原则一致。开发环境和生产环境分离,是同一个逻辑。
但这里面有一个更深层的动机。软件本身是有设计意图的。很多工具在设计的时候,就把你的操作限制在它的框架里面了。一旦你把数据放进去了,想再拿出来就很麻烦。格式封闭,导出受限,迁移成本越来越高。这就是所谓的路径依赖。早期的一个选择,会因为后续的累积投入而变得越来越难逆转。
我想做的事情其实很简单,把数据的控制权留在自己手里。本地文件,开放格式,可迁移的结构。这样即使以后换工具了,数据还是我的,不需要被任何厂商锁定。这不是什么技术理想主义,只是一种务实的策略。因为谁也不知道十年后这些平台还在不在,它们的导出功能还开不开放。
对抗软件设计,不是要跟谁作对。而是在选择工具的时候,多想一步它的出口在哪里。进去容易出来难的东西,从一开始就值得警惕。
参考文献
- HashiCorp Vault 官方文档. How Vault works. https://developer.hashicorp.com/vault/docs/about-vault/how-vault-works
- Humble, J., & Farley, D. (2010). Continuous Delivery. Addison-Wesley. https://continuousdelivery.com/
- David, P. A. (1985). Clio and the economics of QWERTY. American Economic Review, 75(2), 332–337. https://econpapers.repec.org/article/aeaaecrev/v_3a75_3ay_3a1985_3ai_3a2_3ap_3a332-37.htm