我们是一家小型初创公司,拥有大量写入的 SAAS 应用程序,并且(终于!)达到了我们的使用呈现扩展问题的地步。我们有一个小团队,所以我们非常感谢能够将系统管理员卸载到 Heroku 和 RDS。
虽然 Heroku(大部分)没问题,但 RDS 存在一些问题:
- 缩放。这是最大的担忧。我们目前运行一个 XL RDS 实例。通过简单的优化,我们将能够度过一段时间,但除非我们对应用程序进行一些重大的结构更改,否则我们会在某个时候遇到瓶颈。
此外,更改实例大小的停机时间也很糟糕。
可用性。我们运行一个多可用区实例,因此我们应该在单个可用区中断中幸存下来。但是RDS是建立在EBS之上的,考虑到EBS的历史和设计,这让我很担心。
价格。我们的 RDS 账单是我们支付 Heroku 的 4 倍。我不介意付钱给亚马逊,以免我雇用系统管理员,但我很想找到更便宜的东西。
在我看来,我们有两个前进的选择:传统方法(分片、运行夜间作业以将我们的部分数据库移动到只读状态等);或 NewSQL 解决方案(Xeround、VoltDB、NimbusDB 等)。
传统的优点:以前已经做过很多次了,而且有很标准的方法来做。
传统的缺点:这将需要大量的工作并且会给应用程序带来很大的复杂性。它也不会解决 RDS 的次要问题(可用性和价格)。
NewSQL 专家:据说,这些解决方案将在不更改应用程序代码的情况下横向扩展我们的数据库(受 SQL 功能的一些限制,例如不使用悲观锁定)。这将为我们节省大量的工作。它还将提高可靠性(无单点故障)并降低成本(不必在非工作时间运行 XL 实例以提供高峰使用)。
NewSQL 缺点:这些解决方案相对较新,我还没有找到任何关于人们在生产应用程序中使用它们的经验的好的评论或文章。我只发现了一个可用作托管解决方案 (Xeround),因此除非我们使用那个,否则我们必须在系统管理员中投入资源。
我想知道关于我的最佳选择是什么意见。
Xeround 非常诱人(托管 NewSQL),但我还没有找到在生产中使用它的任何好的信息。我看到的几条推文都是人们抱怨它有点慢。我很紧张要转向似乎未经测试的东西。
我保守的一面说要坚持使用 RDS 并使用传统方法。但就开发人员的时间而言,这将是非常昂贵的。
然后我的一部分想知道是否有另一种方法,也许是我从未听说过的更久经考验的托管 NewSQL 解决方案。或者也许是我们必须自己托管的 NewSQL 解决方案,但它有着非常可靠的历史。
提前感谢您的想法。