亚马逊RDS代理使在无服务器中使用SQL更加容易

264 阅读4分钟

对于Serverless用户来说,preInvent和re:Invent就像圣诞节。我们得到了大量的新工具来帮助构建无服务器应用程序,从Lambda Destinations到异步调用,到EventBridge schema registry,再到Lambda中管理流处理的大量不同方法。

所有这些都很好,但对许多用户来说,最有影响的公告可能是亚马逊RDS代理。这项服务,再加上AWS最近的一些其他改进,使得在AWS中使用关系型数据库变得更加容易。

在这篇文章中,你将了解关于亚马逊RDS代理的内容和原因。我们将涵盖。

让我们开始吧!

为什么关系型数据库在无服务器环境中一直是个难题?

几年来,数据库问题一直是无服务器技术中的一个大问题。我们已经多次写过这方面的文章,包括关于无服务器的数据层在无服务器中选择数据库以及为什么我们对Aurora Serverless如此兴奋的文章。

两年前,在无服务器应用中使用关系型数据库存在几个主要问题。

  • 定价模式。关系型数据库是按实例大小来定价的,无论你是否在使用它。

  • VPC冷启动。关系型数据库应该在你的VPC的私有子网中进行网络分区,不能从公共互联网上访问它。然而,这意味着你的Lambda函数需要在VPC中,这意味着偶尔的冷启动长达10秒。

  • 连接限制。关系型数据库是为一个长期运行的计算实例数量较少的时代建立的。他们并不适合这个高数量的超热计算实例的世界。AWS Lambda用户在试图连接到他们的关系型数据库时可能会遇到连接限制。

幸运的是,AWS一直在倾听,这些问题都得到了解决。

亚马逊RDS代理和其他改进是如何让关系型数据库在无服务器中发挥作用的

在过去的两年里,AWS一直在努力使关系型数据库在无服务器应用中更好地工作。

首先,AWS发布了Amazon Aurora Serverless。这是专有的Amazon Aurora数据库的无服务器版本,可以根据你的使用情况自动扩大和缩小。这个版本有助于解决围绕使用关系型数据库的定价模式问题。

第二,AWS宣布改进AWS Lambda函数的VPC网络。这一更新大大降低了使用VPC的Lambda函数的冷启动延迟。这使得在面向用户的应用程序中使用VPC Lambda函数更容易被接受。

最后,今天宣布的亚马逊RDS代理处理连接限制。与其在Lambda函数中管理连接,你可以将其卸载到Amazon RDS代理上。所有的池化都将发生在代理中,这样你就可以以一种可管理的方式处理大量的连接。

如何考虑在Serverless中选择数据库的问题

鉴于过去几年的更新,无服务器开发人员应该如何为他们的应用选择数据库呢?

我不认为有一个明确的答案,而最近的这些更新使得决策更加困难。

很多人都会选择关系型数据库,因为它很熟悉,这很好!但也有很多人不知道如何选择。转向无服务器本身就是一个很大的变化,而使用关系型数据库等熟悉的工具可以缓解这一过程。

也就是说,无服务器应用中的关系型数据库仍有一些问题。定价模式比较,但仍不完美。亚马逊Aurora Serverless的扩展并不像它需要的那样快,而且你仍然没有得到像DynamoDB On-Demand那样的定价。此外,亚马逊RDS代理的价格是按小时计算的。

再进一步说,我越来越相信,只要你在你的架构中增加一个不按使用付费的元素,你就会放弃很多敏捷性。当你所有的架构组件都是按使用量付费的时候,你就可以为开发或测试提供无缝的临时环境。一旦你在你的基础设施中增加了移动速度较慢、按小时收费的组件,就会增加成本,降低你部署测试环境的速度。

对于一些人来说,这是一个完全合理的权衡。了解DynamoDB数据建模的学习曲线可能不值得为开发环境增加敏捷性。只要确保你在选择数据库时意识到你正在做的权衡。