使用 Amazon Redshift 进行本地开发和暂存

Local development and staging with Amazon Redshift

我喜欢通过生产、暂存和本地开发来设置工具和服务。我想使用 Amazon Redshift,对于列式存储数据库,每月 180 美元起价似乎相当合理,但我真的必须将其视为 180 美元 x # 环境/月吗?有什么方法可以为 Redshift 提供免费的暂存和本地环境吗?

能够针对本地实例而不是依赖网络进行开发也很不错。我认为使用 Redshift 是不可能的。

在使用 Redshift 时,您如何使本地开发更容易、更快和更便宜?

Amazon Redshift 是专门为 运行 在 AWS 基础设施上创建的。它不可下载。 (有趣的是,Amazon DynamoDB 确实有一个用于开发目的的可下载版本。)

成本最低的选择可能是每晚和周末关闭您的开发和测试实例。删除集群前拍个快照,第二天早上根据快照创建集群。这可以通过 AWS 命令​​行界面 (CLI) 自动执行,从而可以轻松地使用 cron 或计划任务进行计划。

您还可以拥有测试数据的快照,并在每天早上恢复该快照,这意味着测试数据库不会填满测试用例。

另一个成本节约可能是减少非生产系统的节点数量。查询将 运行 变慢并且存储总量将减少,但它可能更具成本效益。或者甚至使用一个 "Dense Storage" 2TB 节点而不是几个 "Dense Compute" SSD 实例——它们将在更少的节点上提供更多的存储空间。

除了 John Rotenstiens 阐述了如果您决定 运行 第二个集群用于暂存时如何降低成本之外,还有一些其他选项,适用于您的用例不是关键任务的情况。

由于 Redshift 是 postgres 8 的一个分支,您可以使用亚马逊提供的 postgresql 8.4 JDBC 或 ODBC 驱动程序,并将它们指向本地 运行ning postgres 8 实例。这在开发过程中很有效,因为在这里有效的通常会在您的生产系统上有效(有一些例外)。

另一种选择是在您的 Redshift 集群上有一个单独的 table 用于 运行 非生产活动。这可能对您的测试套件和 "final testing" 开发有好处。

然后您可以将部署阶段转移到生产环境中,并在完全部署之前监控阶段环境是否存在问题。

另一个削减成本的解决方案是将每个数据库视为单个集群中的一个环境。数据库免费,您可以 60 of them in a cluster

我们已经尝试了 Postgres-as-emulator 解决方案,它还不错,但是

我们暂时放弃了这一点,但随着我们变得更大,我们可能不得不使用混合解决方案,其中验收测试和暂存是 Redshift 中的数据库,而开发人员又回到使用 Postgres。

这是在本地离线访问所有 AWS 服务的最佳选择,无需为云服务付费。本地堆栈!

https://localstack.cloud/

https://github.com/localstack/localstack

支持所有主要的 AWS 服务,如 Redshift、S3、DynamoDB、cloudwatch 等。

您可以将其用于所有非生产环境,并且只需为生产 AWS 服务付费