新互联网
AveryPennarun是Tailscale的首席执行官和联合创始人。这篇文章最初是在公司全员会议上发表的。
我们通常不会在公众面前过多谈论Tailscale的宏大愿景,以及我们真正的目标。我更倾向于关注当前存在的事物和未来几个月我们将要做的事情。未来有时候会让人分心。
但最近,我发现越来越多的公司开始购买Tailscale,不仅是因为它现在能做什么,还因为他们期待它在未来能够实现的大事。他们是对的!让我们这次来谈谈最宏大的愿景。
但在开始之前,让我们先回顾一下我们的起点。
老旧
DavidCrawshaw最初的一篇文章,写于2010年代晚期,名为《回忆局域网》,讲述了他1990年代做网络的经历。
坏消息是:如果你还记得1990年代的局域网,那么你可能已经老了。我们Tailscale团队中有很多人都记得1990年代的局域网。这与很多其他初创公司相比,存在一定的年龄差距。这种年龄差距使得Tailscale独树一帜。
任何初创公司的独特之处都可以成为优势或劣势,关键在于如何利用它。
成熟
“老”这个词还有另一个带有不同含义的说法——“成熟”。
我喜欢看到事情光明的一面。虽然年纪大了有一些缺点,比如我可能不能再像1997年编写我的第一个VPN(名为TunnelVision)时那样进行40小时的编程狂欢。但我们有经验,这使我们有可能第一次就把事情做好,而且用更少的时间。有时,如果我们幸运的话。
也许,当你足够老的时候,你已经看过几次技术周期的循环,并开始发现一些模式。
这就是我和Davids创立Tailscale时的情况。我们看到,自1990年代以来,很多事情都变得更好了。计算机的速度快了数百万倍,更多的人可以成为程序员,不再局限于C++和汇编语言,更多的人拥有了某种形式的计算机。加上应用商店、支付系统、图形技术等,这些都是好事。
但是,也有一些事情变得更糟了。许多曾经对开发者来说很简单的事情,现在变得困难了。这是我没有预料到的。我以为编程会变得如此简单,以至于我现在可能会失业。相反,科技行业演变成了一团乱麻,而且情况还在恶化!我们的复杂性塔楼已经高得令人难以置信,以至于我们认真考虑在上面涂抹大型语言模型(LLM),以生成那些难以理解的代码和框架,这样我们就不必自己写了。
而我们知道这些变化的人,正是那些拥有背景知识的人。
所有这些问题都是可以解决的。它们不必如此糟糕。
在讲述我对未来的愿景之前,我必须先告诉你我认为哪里出了问题。
不合理的扩展
今天的程序员急于成功。他们在编写第一行代码之前就开始规划如何支持十亿用户。实际上,我们现在训练他们这样做,但他们甚至没有意识到这一点。他们所学的一切都围绕着扩展性展开。
从计算机科学家开始教授大O符号时,我们就陷入了这个陷阱。在大O符号中,如果你使用不当,哈希表几乎在任何情况下都比数组更快。但实际上,这并不总是真的。当你有数十亿个条目时,哈希表可能更快;但当你只有10个条目时,它几乎总是更慢。
人们很难接受这个观点。他们总是选择那些可以扩展的算法和架构,即使在不需要扩展的情况下,另一种方法可能会快几千倍,也更容易构建和运行。
即使是我也几乎不敢相信我刚刚说的“快几千倍”并不是夸张。
我最近读到一篇文章,有人吹嘘他们使用Kubernetes扩展到了每月50万次页面浏览量。但这只是每秒0.2次请求。我可以用手机在电池供电的情况下轻松处理这些请求,而且大部分时间手机都会处于休眠状态。
在现代计算中,我们容忍长时间的构建过程,然后是Docker构建,上传到容器存储库,多分钟的部署时间,以及更长的时间才能将日志上传到可以查看的地方,这一切都是因为我们被灌输了“一切都需要扩展”的观念。人们会对最新的容器托管服务感到兴奋,因为它只需要几十秒就可以部署,而不是几分钟。但在1990年代,我可以在我的慢速电脑上运行一个启动时间以毫秒计的Perl或Python程序,每秒处理远超过0.2次请求,并立即打印日志到stderr,以便我可以反复进行编辑-运行-调试,每分钟多次。
我们是如何走到这一步的?
我们走到这一步是因为,有时候确实有人需要编写一个能够扩展到数千或数百万后端的程序,所以需要所有这些复杂的工具和技术。而美好的愿望让人们想象即使是最低级的仪表盘有一天也会变得非常受欢迎。
事实上,大多数事情都不需要扩展,也不需要这样做。我们创建Tailscale就是为了这些事情,让你可以把时间花在真正需要扩展的事情上。这些是开发者90%的时间都在处理的任务。即使是那些为数十亿用户开发应用程序的公司的开发者,也大多时间花在不需要扩展的事情上,比如仪表盘和梗图生成器。
作为行业,我们花费了所有的时间让困难的事情成为可能,却没有花时间让简单的事情变得简单。
互联网
程序员们都陷入了泥潭。随便问任何一个专业开发者,他们有多少时间真正用于解决问题,又有多少时间浪费在无用的开销上。
Tailscale的开发者体验比平均水平好,但我们也面临同样的问题。现代软件开发主要是无用的开销。
事实上,我们创立Tailscale并不是为了成为一家网络公司。网络在一开始并没有占据太多的位置。
真正发生的是,我和Davids聚在一起讨论,我们说,看,问题是开发者一直在扩展他们不需要扩展的东西,结果他们的生活变得很糟糕。(你可以想象“用一把美元擦眼泪”的表情包。)我们需要解决这个问题。但怎么做呢?
我们研究了很多选项,与很多人交谈,发现所有问题的根本原因都是互联网。以前事情很简单,还记得局域网吗?但当我们把局域网连接到互联网时,出现了越来越多的防火墙和攻击者,事情逐渐变糟。
当我们探讨过度复杂的领域时,大多数问题都没有本质上的复杂性。也就是说,这些问题可以通过简单的方式解决,但我们使用的解决方案却异常复杂。例如,日志系统只是将文本从一个地方流到另一个地方,但日志却要等5分钟才能显示出来。再比如编排系统,它们的工作仅仅是运行其他程序,而这本是Unix内核几十年来一直做得很好的事情。人们不断添加不必要的复杂层。但这些复杂层是可以移除的。
除了网络,你无法不使用网络来构建现代软件。但互联网让一切变得困难。这是因为网络本身具有本质的复杂性吗?
也许是的。但也可能是由于我们在错误的假设基础上构建了互联网,导致了错误的问题,然后我们不得不掩盖这些问题。这就是旧互联网。
与其在OSI模型的最顶层添加更多的层来试图隐藏问题,Tailscale正在构建一个新的OSI第三层——一个新互联网——基于新的假设,避免这些问题的产生。
多米诺效应
如果我们修复了互联网,一系列连锁反应将会发生,推动技术进化进入下一个阶段。
如果你想了解某个特定经济体系中的瓶颈,看看谁在收取租金。在科技界,那就是AWS。当然,苹果也在卖热门笔记本,但你可以选择其他品牌的笔记本或手机。微软曾经是所有东西的守门员,但现在你不再受Windows的束缚,除非你自己选择这样做。早在2000年初,那些认为“网络是新的操作系统”的人终于胜利了,我们只是忘记了庆祝。
但解放并没有持续太久。如果你部署软件,你很可能要向AWS支付租金。
为什么?是因为计算资源吗?AWS提供了可扩展的计算资源。
你可能会这么想。但许多人提供的计算资源要便宜得多。即使是中档MacBook,其SSD每秒处理的交易量也可能是云本地磁盘的10倍或100倍,因为云提供商将磁盘卖给10或100个人,同时收取全价。为什么你会支付高昂的费用,而不把关键网站托管在你超级快的MacBook上呢?
我们都知道原因:
IPv4
位置,位置,位置。你向云提供商支付高昂的租金,是因为你的个人电脑不在合适的位置来充当一个好的服务器。
它被防火墙和NAT(网络地址转换)设备阻挡,拥有动态IP地址,并且可能连接的是一个不对称的网络链路,这种链路掉线的频率足以让你感到不安。
你可以修复网络链路,重新配置防火墙,并通过NAT进行端口转发。如果你幸运的话,你还可以向ISP支付高昂的费用以获得静态IP地址,并可能设置冗余的互联网连接。我知道我的一些同事确实这么做了,在他们的车库里架设了一整套设备。但这需要大量的工作、专业知识,而且离你最初想要构建的那个简单的仪表盘、博客或猫咪视频网站相去甚远。相比之下,直接支付给托管服务商要容易得多,他们拥有所有你能买到的IP地址和网络带宽。
一旦你要支付费用,并且你是一家严肃的公司,你最好从一家信誉良好的提供商那里购买服务,因为这意味着你的数据将托管在他们的设备上,他们可以访问一切内容,因此你需要信任他们不会滥用这种访问权限。
正如那句老话所说:
没有人会因为买了AWS而被解雇。
这是IBM的一个类比。过去我们常说“没有人会因为买了IBM而被解雇。”我怀疑这句话现在是否还成立。为什么呢?
摆钟的摆动
我拒绝说“pendula”,让我们称之为“pendulums”。
IBM 的大型机仍然存在,而且可能会永远存在,但IBM曾经能够在商业计算的各个方面收取租金,而现在他们已经不能了。微软的到来打破了IBM的垄断,将集中式计算的火种带回给了使用相对弱小的PC的个人用户,这些PC出现在每个办公室和家庭中,运行着微软的软件。
我认为我们可以同意我们现在生活在一个后微软、以Web为中心的世界里。那么,这个世界是像IBM那样集中化的,还是像微软那样分布式的呢?[在我做演讲时,我做了一个调查,结果大约是50/50]。
所以,坏消息是,摆钟又摆回了另一边。IBM是集中的,然后微软是分布式的,而现在云+手机的世界再次变得集中化。
我们建立了一个巨大的集中式计算机系统,中间有几个巨型提供商,而在我们的办公桌上和口袋里则是一堆智能终端。即使是我们的智能手表,按照20年前的标准,也都是超级计算机。如果我们把它们用作超级计算机的话。但是,关闭AWS,它们就都变成了砖头。
我们很容易自欺欺人地认为整个系统是分布式的。是的,我们构建了复杂的分布式共识系统,我们的服务器有多个实例。但所有这些都是在云提供商的中心运行的。
这不是新的。IBM早在1960年代就开始进行多核计算和虚拟机的研究。现在的情况不过是加上了50年的摩尔定律而已。我们仍然有一个大垄断者,因为他们控制了唯一真正重要的东西,所以可以向所有人收取租金。
操作系统
每个人的态度仍然停留在1990年代,当时操作系统至关重要。这就是微软如何从IBM手中夺走火种并统治世界的原因,因为编写可移植的软件非常困难,如果你想让两个程序互相通信,或者让它们兼容,你就必须在同一台计算机上运行它们,这就意味着你需要标准化操作系统,而这个操作系统就是DOS,然后是Windows。
Web终结了这种垄断。现在JavaScript比所有的操作系统加起来更重要,一个新的元素控制着两个程序是否能够互相通信:HTTPS。如果你可以从一个东西到另一个东西进行HTTPS通信,你就可以互联。如果不能,那就别想了。
Centifications证书
HTTPS本质上是一个集中化的系统。它有客户端和服务器,有哑终端和处理工作的服务器。服务器有静态IP地址、DNS名称、TLS证书和开放的端口。客户端没有这些东西。服务器即使所有客户端都消失了也可以继续工作,但如果服务器消失了,客户端就什么也做不了。
我们并不是有意走到这一步的,主要是路径依赖的结果。我们遇到了安全问题和IPv4地址短缺,所以添加了防火墙和NAT,使得连接只能从客户端机器到服务器机器单向进行。因此,没有必要在客户端上放置证书,现在有10个不同的原因导致客户端无法成为服务器,而大家都已经习惯了这种情况,所以我们围绕这一点设计了一切。哑终端和集中式服务器。
一旦这种情况发生,当然会有某家公司崛起,成为枢纽-辐条网络的中心。AWS在这方面做得比任何人都好,公平地说,有人必须这么做。他们赢了。
Taildrop:新互联网的示例
快进到现在。我们在过去的五年里一直在努力使Tailscale成为这个问题的解决方案。每个设备都获得了证书、IP地址、DNS名称、端到端加密和身份认证,并且可以安全地绕过防火墙。每个设备都可以成为一个对等节点。我们做到了这一切,而没有增加任何延迟或开销。
这就是新互联网。我们已经建成了!它是未来,只是目前分布不均。对于使用Tailscale的人来说,我们已经削减了10层无用的东西。这就是为什么开发者在使用Tailscale后会有如此强烈的反应。Tailscale使互联网的工作方式回到了你最初想象的样子,直到你真正了解了互联网的工作原理。
我喜欢用Taildrop作为例子来说明这是如何实现的。Taildrop是我们早期开发的一个小功能,花费了几个月的时间。我们应该花更多时间打磨它,使其更易于使用。但在核心上,Taildrop只是一个HTTP PUT操作。发送方通过HTTP请求向接收方发送文件,说“这是一个名为X的文件”,然后发送文件。就是这样。这是世界上最显而易见的事情。为什么你会用其他方式来做?
好吧,在Tailscale之前,你没有选择。接收方是另一个客户端设备,而不是服务器。它被防火墙阻挡,没有任何开放的端口和身份认证。你唯一的选择是将文件上传到云端,然后再下载回来,即使发送方和接收方在同一个Wi-Fi网络上并肩而坐。这意味着你必须支付云服务的出口费用、存储费用以及运行管理这些事情的服务器所需的CPU时间。如果你上传了文件但没有人下载,你还得制定一个规则来决定何时删除存储中的文件。此外,你还需要支付费用以保持服务器在线,即使你根本不使用它。理论上,云员工可以访问文件,除非你对其进行加密。但你不能在没有某种方式交换加密密钥的情况下加密文件。接收方甚至怎么知道有文件等待接收?我们需要一个推送通知系统吗?为每个客户端平台都需要一个吗?等等。一层又一层的复杂性。
所有这些复杂性意味着你要向云服务提供商支付租金。传输文件——人们最早在互联网上做的事情之一,通过FTP免费完成——现在必须花钱,因为有人必须支付这笔租金。
有了Taildrop,传输文件不需要花钱。不是因为我们慷慨地从银行账户中拨款来提供免费的文件传输服务,而是因为成本开销完全消失了,因为它不是基于其他人使用的那个退化的互联网。
新互联网
Taildrop只是一个例子,一个简单的小例子,但它证明了一类程序的存在,这类程序由于Tailscale的存在可以变得简单10倍。
这一切的起点是连接性。缺乏连接性是导致集中化的原因,而集中化则是我们为每一个小小的程序支付租金、并且一切都变得缓慢、繁琐、复杂、难以调试的原因,就像IBM的批处理作业一样。我们将开始推倒这些多米诺骨牌。
用户之所以对Tailscale感到兴奋,不仅是因为它是一个VPN或代理,更是因为它背后有一种你无法从其他地方获得的东西。我们在移除一层又一层的复杂性,使你更容易专注于你最初想要做的工作。虽然并非所有人都看到了这一点,但他们终将会看到。当他们看到时,他们将能够发明出我们在这个旧的集中化世界中无法想象的新事物,就像Windows时代的分布式计算使许多在大型机时代不可想象的事情成为可能。
但有一个问题。如果我们想要解开这个连接性的乱局,这种连接性必须适用于……
每个人
将来会出现一个新的“有”和“没有”的世界。1970年,你是否有主框架;1995年,你是否有互联网;今天,你是否有TLS证书;明天,你是否有Tailscale。如果你没有Tailscale,你就无法运行那些只在Tailscale之后才能工作的应用程序。
如果使用Tailscale的人不够多,就没有人会开发这些应用程序。这就是所谓的“鸡与蛋”问题。
这就是为什么我们的公司战略听起来有些奇怪。这也是为什么我们投入大量精力免费提供Tailscale,同时也努力让人们将其带到工作中,以及投入大量精力开发企业级特性,以便高管们可以轻松地将其推广到整个《财富》500强公司。
互联网是为每个人服务的
你知道吗,在Internet(大写)之前,有过许多internetworks(小写)。它们都失败了,因为Internet是最多样化和最包容的。对于构建Internet的人来说,最重要的是让每个人都能连接上网。最初的采用速度很慢,然后逐渐加快,最终变得非常快。今天,如果我买了一块手表,它没有互联网连接功能,那它就是坏的。
如果我们不能让在家的极客、大学里的极客、企业的员工,乃至最终世界上每个人都能玩转这个新互联网,我们就不能说我们已经建成了新互联网。
愿景
从现在到实现这一愿景之间还有许多步骤。但让我们把这些细节留到以后再讨论。与此同时,我们做得怎么样?
目前,全世界大约每2万人中有1个人在使用新互联网(即Tailscale)。我们不会停止努力,直到这个数字变成所有人。
我还记得当人们嘲笑微软想要在每个桌子上放一台电脑时的情景。或者当TCP/IP还是一个需要从第三方购买的可选附加组件时。
你知道吗,这一切都发生在不到30年前。我确实年纪不小了,但仔细想想,我也没那么老。科技世界变化得非常快。它可以变得更好。我们才刚刚开始。
未来的展望
我们的目标不仅仅是建立一个更安全、更高效的网络,而是要确保每个人都能从中受益。Tailscale不仅仅是一个技术产品,它代表了一个新的互联网愿景,一个更加开放、平等和互联的世界。
为了实现这一愿景,我们需要解决“鸡与蛋”问题,让更多的人使用Tailscale。我们正在通过以下几种方式来推动这一进程:
1. 免费提供Tailscale:让尽可能多的人能够尝试和使用Tailscale,降低进入门槛。
2. 推动企业采用:通过开发企业级特性,帮助大型企业和组织轻松部署Tailscale,从而扩大用户基础。
3. 教育和宣传:向开发者和普通用户宣传Tailscale的优势,让他们了解新互联网的可能性。
4. 社区建设:建立一个活跃的社区,鼓励用户分享经验和创新,共同推动新互联网的发展。
互联网的历史教训
回顾历史,我们可以看到,那些成功的技术往往是因为它们的包容性和广泛适用性。Internet之所以能够战胜其他internetworks,正是因为它的设计初衷是让每个人都能连接上网。同样的道理也适用于新互联网。
我们相信,只要我们坚持这一原则,不断努力,终有一天,Tailscale将成为每个人日常生活的一部分,就像今天的互联网一样无处不在。这不仅是一个技术上的突破,更是一场社会变革,它将改变我们与世界互动的方式。
我们的使命
我们的使命是让互联网变得更加简单、安全和高效,让每个人都能享受到技术带来的便利。我们不会满足于现状,将继续努力,直到新互联网成为现实,惠及每一个人。
结语
虽然我们已经取得了显著的进展,但我们知道前方还有很长的路要走。我们相信,通过持续的努力和创新,我们可以创造一个更加美好的未来。感谢每一位支持和信任Tailscale的用户,我们一起正在书写互联网的新篇章。