以下为翻译内容
多年来,PostgreSQL一直备受瞩目,对于企业来说,POSTGRESQL流行是面临众多竞争后的选择。随着企业试图摆脱昂贵的传统关系型数据库管理系统(RDBMS),但仍希望坚持使用RDBMS,开源PostgreSQL是一种具有吸引力的、更经济实惠的替代方案。曾经有两个托管PostgreSQL服务(Aurora和RDS)的AWS是显而易见的默认选择,但现在还有微软、谷歌、Aiven、TimeScale、Crunchy Data、EDB、Neon等更多选择。
在接受采访时,Neon的创始人兼CEO Nikita Shamgunov强调,在众多流行的PostgreSQL厂商中,未来的关键区是否具有serverless。“我们是serverless,而除了拥有无服务器选项的Aurora以外,其他所有选项都不是serverless,”他宣称。如果他关于severless对于PostgreSQL采用的重要性的看法是正确的,那么商业PostgreSQL的未来可能将在Neon和AWS之间展开一场无服务器之争。
在某种程度上,serverless是云计算的实现。例如,自从AWS开始运营以来,就一直将云计算作为卸载服务器管理的“无差别大力承担”的一种方式,但即使像Amazon EC2或Amazon RDS for PostgreSQL这样的服务,开发者仍然不得不考虑服务器,尽管它们需要的工作少得多。
在真正serverless的世界中,开发人员根本不需要考虑底层基础设施(服务器)。他们只需要专注于构建应用程序,而云提供商则负责服务器的配置。在数据库领域,真正的serverless产品将分离存储和计算,并通过在节点集群之间重新分配数据来替换数据库的存储层。
正如Kestra开发者关系负责人Anna Geller所解释的,serverless的其它好处包括推动有用的工程实践。例如,如果我们可以认同“构建单个软件组件的方式必须仅负责一个任务是有益的”,那么serverless对于这点很有帮助,因为它“鼓励易于更改和无状态的代码”。serverless几乎迫使开发人员构建可重现的代码。她说,“serverless不仅强制你将组件设计得很小,还要求你定义函数或容器执行所需的所有资源。”
许多公司已经发现,serverless架构带来的好处包括更好的工程实践和更快的开发时间。简而言之,serverless是很有吸引力的。
Shamgunov认为,使用serverless运行PostgreSQL有两个主要好处。第一,开发人员不再需要担心大小和扩缩容问题。只需要一个数据库连接字符串,就可以使用数据库,而无须担心大小和扩缩容问题,这是由Neon完全负责的。第二个好处是按需计费,可以缩容至零并支付零费用。根据Ampt公司的CEO Jeremy Daly的说法,这种零缩容能力是AWS所没有的。即使应用程序处于空闲状态,你也会支付费用。
但Neon则不同。正如Shamgunov在我们的采访中所强调的,“在SQL世界中,真正做到serverless是非常非常困难的。在交付serverless扩展至零的承诺方面存在各种不同的方法,但只有Neon目前可以实现。”
人们在乎吗?答案是肯定的,他坚持认为。“到目前为止,我们已经了解到人们真的在乎可管理性,而这正是serverless的显而易见的优势。[它让]消费变得如此容易,你只需要管理一个连接串。”随着公司构建越来越大的系统和“越来越庞大的车队”,这一点变得越来越重要。在这里,“在一段时间内,不需要担心计算有多大”,在其他系统中,除非专注于调整资源,否则你的成本会失控,以及不断需要设计负载大小。但在像Neon这样的真正serverless的产品中则不同,Shamgunov认为,“只需一个连接串,你就可以开始工作。人们喜欢这一点。”
然而,serverless世界并非一切如意。例如,考虑冷启动问题。当你第一次调用一个函数时,serverless系统必须初始化一个新的容器来运行你的代码。这需要时间,这就是所谓的“冷启动”。Shamgunov表示,Neon一直在“花费大量工程预算来解决冷启动问题”。除此之外,该公司还进行了众多性能改进,例如加快了PostgreSQL连接。
Neon还独特地提供了分支功能。正如Shamgunov所解释的,Neon支持写时复制分支,这“允许人们为每个预览或每个GitHub提交运行专用数据库。这意味着开发人员可以创建一个数据库分支,它会创建数据的完整副本,并为其提供单独的serverless终端。你可以运行CI/CD管道,可以测试它,可以进行容量测试或其他各种操作,然后将其带回到主分支。如果你不使用分支,则不需要花费任何成本。
所有这些都有助于Neon实现其“和Stripe一样容易消费”的承诺,按照Shamgunov的话说,要赢得PostgreSQL大战,“你需要是serverless 版本的 POSTGRESQL。