三月初,和朋友线上小聚,我分享了自己对未来软件模式的一点思考。就我个人来说,我自己和公司使用的 SaaS 服务越多,我越有隐私和数据安全的担忧。对个人来说,「隐私」是使用 SaaS 服务不得不交的「保护费」,你只要想用,就没得选择;对公司来说,「隐私」可以用钱解决,如果你注重公司数据的「隐私」,可以通过 NDA 或者额外的协议(比如 SaaS 服务商所谓的 enterprise plan,言下之意就是你要修改我的协议条款,那么对不起,同样的东西你就要多交些钱做保护费)来保证。但是「数据安全」,无论个人和公司,似乎都没得选,只有事故来临时有无赔偿或者赔偿多寡的区别。安全三要素(confidentiality, integrity, availability)中,我最担心的是的 availability,也就是可访问性。它最不起眼,当它正常运作时,你感受不到它的存在;当它被剥夺时,就大难临头。
过去两年,著名的 SaaS 服务都有「辉煌」的可访问性事故。slack 明显的宕机就有好几次,其它如 figma,github,Notion 等时不时就会来个小宕机。印象深刻的一次是 AWS S3 宕机几个小时,结果几乎我使用的所有 SaaS 服务都有不同程度的问题。有时候我就想,像项目管理软件(如 jira / shortcut / asana)这样的工具,为何不能做成一个数据都存放在本地,用 CRDT 来保证数据的最终一致性,靠 p2p 或者 S3 冗余的「本地优先」的富客户端呢?
以下是我当时分享的手稿:
我从「分久必合合久必分」的角度,看待客户端软件的发展:过去的几十年间,客户端软件基本上都是在哑客户端(dummy client)和富客户端(rich client)之间反复游走,直至互联网开始吞噬一切。最近十年,虽然客户端的功能开始逐渐增强,但还脱离不了服务器的控制 —— 在很多客户端应用中,哪怕是一个简单的排序动作,也要让指令在服务器上走一遭。我觉得随着客户端硬件的能力越来越强,各种客户端软件基础组件(比如 libp2p)越来越完善,这种局面应该得到终结。凭什么一个像 slack 这样的主要是公司内部使用的软件,不能把数据和运算都主要在本地进行,以 p2p 的模式运作呢(如果在一个办公室的子网下,p2p 还可以通过 mDNS 发现彼此并用本地网络交互,无需绕半个地球走互联网)?诚然,数据的一致性(可以通过 CRDT),安全性(主要是 authorization),以及对本地存储的消耗都是潜在的问题,但并不不可解决的问题。我觉得如果应用能够提供足够好的使用体验,数据和应用逻辑都放在本地,靠云存储做冗余的「本地优先」的软件也许能够腾飞,取代现在让人越来越感到不安的 SaaS 服务。
不过,在我看来,新的软件产品取代 SaaS 服务最大的阻碍在于两个方面:
- 对用户而言,如何让大部分事情都在本地完成的富客户端使用的体验跟现有的 SaaS 一致?这个极其关键,当用户不再为体验上的问题困扰时,隐私和安全才能成为加分项。
- 对软件提供商而言,如何构建其商业模式?SaaS 按月订阅的方式似乎不可用,而一次性付费的传统软件交付模式又不够性感,无法讲出一个好故事。没有好的故事就拿不到好的融资,也就无法完成鸡生蛋,蛋生鸡的闭环。
这是我自己不成熟的想法,对这两个问题,尤其是第二个问题,我并没有一个太多思路。虽然我笃定这是一个未来的趋势,但还很遥远,SaaS 有其看上去牢不可破的地位。
这种牢不可破的地位最近一周却发生了裂痕。因为俄乌战争的缘故,一些公司一系列也许不得已而为之但却着实光怪陆离的操作,让 SaaS 赖以为生的底层逻辑突然就以一种「自断经脉」的方式被推倒。一直以来,「软件即服务」不光是个口号,还是个承诺:客户可以放心地把某些软件功能交由服务商来运营和管理,数据的安全性(包括可访问性)由 SLA 来约定。可是如果服务商掐断客户对软件服务的访问,甚至连获取数据备份的机会都不复存在,客户对软件服务商还有信任可言么?我们都知道:信任的累积是需要时间的,但坍塌往往就在一瞬间,且很难回到之前的局面。
曾几何时,我们为软件从桌面转移到互联网,数据从本地存储转移到云端带来的巨大的便利性喝彩,漠视对数据安全,尤其是数据可访问性的担忧,现在,可怕的后果开始慢慢显现。
也许,现在真就到了一个 SaaS 要逐渐谢幕,而富客户端软件重拾昔日荣光的时刻?