跳到主要内容

《本地优先软件》

在我们打造 Pixcall 的过程中,深受本地优先软件这一理念影响

“本地优先软件”是一种软件设计原则:让用户在使用软件过程中既能拥有云服务的协作性又能像使用传统本地软件那样拥有完整的数据所有权

和本地软件相比,云服务能够从任何设备访问数据并且和任何人实时协作,在无缝协作层面有巨大优势。但云服务也存在缺陷:

  • 云服务的所有数据访问都通过服务器进行,用户只能做云服务商允许做的事情。换句话说,云服务商才是真正拥有数据所有权的对象,并且控制着所有数据。
  • 云服务的数据和云服务完全绑定,如果云服务关闭,数据也会变得不可使用。即便能导出数据,离开了云端服务,通常也无法继续发挥数据的价值。

而“传统”的本地软件,数据都在本地磁盘上读取和写入,用户对数据拥有完全的所有权和控制权,不依赖不可控的云端服务,也不被云服务商的用户条款给限制。但另一方面,本地软件的数据是孤立的,难以在多个设备之间同步,更无法做到和他人实时协作。

总体而言,云给了用户协作,而本地软件给了用户所有权。数据所有权和实时协作并不天然对立,是否有鱼和熊掌兼得的方案,让产品既具有云服务所有优点,同时允许用户拥有数据所有权?

本地优先软件正好可以应对这一挑战。在云服务中,服务器上的数据被视为数据的主要权威副本,客户端的数据只是从属于服务器,任何数据获取和修改都必须连接到服务器。而在本地优先应用程序中,交换了数据主体的角色,本地设备(电脑或手机)上的数据变成了主要副本,服务器仍然存在但它们的主要作用只是保存数据的辅助副本以帮助数据在多台设备之间同步。这种数据主体的改变带来全然不同的产品形态,也是本地优先软件最重要的特征——优先使用本地存储和本地网络而不是远程数据中心的服务器来管理数据。

理想的本地优先软件具备以下七个特质

  1. 本地运行没有网络延时
  2. 支持多端同步
  3. 网络不是必选项
  4. 支持多人协作
  5. 更有生命力的数据
  6. 天然具备安全和隐私
  7. 用户拥有完全的所有权和控制权

1.本地运行没有网络延时

传统的云服务,数据存储在云端服务器,数据修改和数据查询操作都需要往返服务器。虽然现在大部分情况下网络速度已经足够快了,但在如跨国、户外等一些场景下,仍然存在网络带宽不足甚至网络连接不稳定的情况,这种时候云服务的体验会迅速下降。

而本地优先软件因为数据的主要副本保存在本地设备上,数据相关的操作首先读写入本地磁盘数据来完成,数据同步工作则在后台悄悄进行,操作过程中不需要等待服务器的来回请求,不受网络条件影响,使用过程会顺畅无比。

2.支持多端同步

本地优先的软件可以将数据保存在每台设备的本地存储中,并且这些数据可以在多个设备之间同步。通常来说同步服务会将完整的数据副本备份在云服务器上,并通过云服务器作为数据同步的中心节点实时同步多个连接的设备。

3.网络不是必选项

本地优先软件在本地有不依赖网络的运行环境,而且数据的主要副本存储在每个设备的本地文件系统中。这种设计让用户即使在离线时也可以正常使用,当网络连接可用时,再与其他设备同步。而且本地优先软件的数据同步不一定需要通过中心云服务或者通过互联网来完成,可以使用蓝牙、本地WiFi 将数据同步到附近的设备。

4.支持多人协作

相比传统的云服务,本地优先软件在多人协作场景时会遇到更多技术困难,是本地优先软件需要面对的重大挑战之一。在技术层面上CRDT(无冲突复制数据类型)有潜力成为实现本地优先软件的基础技术,在本地优先软件非实时、去中心的协作场景下,CRDT 更关注实现无需人工处理冲突的最终一致性。

5.更有生命力的数据

传统云服务数据和云服务功能完全绑定,如果云服务关停(在商业社会里这种情况司空见怪),用户也无法再访问云服务产生的数据了,即便有数据导出,离开了运行环境的数据也会变得难以使用。对本地优先软件来说,因为数据以及读取和修改数据所需的软件都存储在本地计算机上,数据的寿命会长得多。即便软件运营公司不再更新软件,操作系统升级换代,在必要得情况下,依然可以在虚拟机里安装原始软件来使用数据。

更严苛的做法是,在一开始构建软件的时候,对用户产生的数据使用标准数据格式。

6.天然具备安全和隐私

不是所有的云服务商都有能力提供一流的安全团队来保障云端数据免受外部攻击,而且即便是道德标准很高如谷歌这样的公司也依然会以多种方式分析用户的数据。面对云服务,涉及数据安全和隐私问题时,用户唯一能做的就是完全信任云服务商。

而对本地优先软件而言,本地客户端提供了完整的功能和数据,并不需要一个全知全能的云中心。本地优先的应用程序可以通过*端到端数据加密方案来保障数据安全和隐私。*在端到端加密方案里,做为数据中转的云全程只传输和保存加密后的数据,天然规避了云服务商的主动做恶并能有效阻挡来自第三方的网络攻击。

7.用户拥有完全的所有权和控制权

云服务的数据所有权不是用户的,当用户的行为被平台认定为违反平台规则、侵犯他人权益、触犯相关法律法规、甚至只是平台自己犯了严重的技术或者运营错误导致数据不可用时,就能明白这一点。而在本地优先的应用程序中,数据的所有权始终归用户所有。

在数据控制权方面,云服务中用户访问和修改数据的方式受到服务提供商的 API、产品功能和服务条款的限制。而本地优先软件的所有数据都存储在用户自己的设备上,因此用户可以自由地任意处理这些数据。

您可以访问《Local-first software》,或者该文章的译文《本地优先软件》了解更多关于本地优先软件的理念。