迁移到全托管云数据库时的得失。
译自 DBaaS Risks, Rewards and Trade-offs,作者 Felipe Cardeneti Mendes 是一位IT专家,拥有分布式系统和开源技术多年的经验。他是三本Linux书籍的合著者,并经常在公共事件和会议上发表演讲,推广开源技术......
现在,数据库即服务(DBaaS)的提供已经在生产中经过了“实战”考验十年,现实情况如何与期望相符呢?那些考虑采用全管理型DBaaS的团队可以从那些有多年经验的团队中学到什么呢?
我们发现,大多数团队熟悉DBaaS采用的管理(Admin)/管理(Management)方面。但让我们关注一下常常让团队措手不及的两个方面的最大风险、回报和权衡:性能和成本。
使用DBaaS使您极其轻松地将数据放置在应用程序和最终用户附近。大多数还支持多区域复制,这使您能够仅需点击几下即可部署始终可用的架构。这种简单性使得运行专门的用例,例如“智能复制”,变得可行。
例如,想象一下一个全球媒体流媒体服务,您在巴西的用户有一个专门的目录,而在美国的用户有一个不同的目录。或者考虑一个体育博彩用例,您在全球范围内有用户,您需要确保随着比赛的进行,更新的赔率能够同时传播给所有用户,以“拉平比赛局势”(这是ZeroFlucs非常出色地解决的挑战)。
扩展的便利性是另一个可能与性能相关的回报。为了获得这个回报,请确保测试您选择的DBaaS足够强大,能够承受突发的流量激增。大多数供应商允许您迅速扩展部署,但要注意那些不允许在“层级”之间过渡的解决方案。毕竟,在黑色星期五时,您可不想发现自己的应用无法满足需求。
像ScyllaDB Cloud这样的DBaaS选项允许您添加所需数量的节点,以满足业务幸运地经历的任何流量激增。
一个性能风险是扩展的成本不可预测。了解您的吞吐量要求以及您预期的增长量。如果您每秒运行几千次操作,按操作付费的服务模型可能是合理的选择。但当您增长到每秒数万次操作以上时,成本可能会变得相当昂贵。许多高增长的公司选择不按运行的操作数量计费,而是按您选择的基础设施计费的定价模型。
此外,请注意您的DBaaS提供商可能施加的潜在隐藏限制或配额。例如,DynamoDB将项目大小限制为每个项目400KB;如果尝试超出这个限制,操作将被简单拒绝。而且,如果您尝试超过您的配额,或者供应商对单个分区上可运行的操作数量施加硬限制,您的吞吐量可能会被降低。
限流严重增加了延迟,这对于实时应用可能是不可接受的。如果这对您很重要,寻找不强加工作负载限制的DBaaS模型。使用基于基础设施成本模型的服务,没有人为的流量限制;您可以推动到底层硬件能够处理的程度。
关键是要记住,DBaaS基本上是一种商业模式。随着托管数据库供应商对您的增长的贡献,它也获得了更多的收入。尽管可扩展性很容易,但许多供应商限制您的扩展选项到一个特定的范围,可能没有提供性能最佳的基础设施。
例如,也许您有一个实时工作负载,以一种需要大量冷数据读取的方式,I/O访问对您非常重要,但您的供应商可能不支持在NVMe(非易失性内存快速访问)存储之上配置您的数据库。
让第三方负责所有核心数据库任务显然简化了维护和运营。然而,如果遇到性能问题,您对问题的可见性可能会降低,限制了您的故障排除能力。在这种情况下,与供应商的紧密合作变得至关重要,以确定根本原因。如果对可见性和快速解决有重要性,选择提供对数据库性能全面可见性的DBaaS解决方案。
采用DBaaS消除了对物理基础设施和专职人员的需求。您无需投资于硬件或其维护,因为基础设施由DBaaS提供商提供和管理。这种转变带来了显著的成本节省,使您能够更有效地将资源分配给核心业务、创新和客户体验,而不是花费在硬件采购和管理上。
此外,DBaaS通过将DevOps和数据库管理等职责转移给供应商,降低了人员成本。这消除了对专业的内部数据库团队的需求,使您能够优化您的员工队伍,并将相关人员分配到更具战略性的项目中。
在部署灵活性方面也有好处,主要提供商通常提供两种定价模型:按需付费和年度定价。按需付费模型消除了前期的资本需求,并通过将费用与实际数据库使用相匹配来实现成本优化。这种灵活性对于初创公司或资源有限的组织尤其有益。
大多数DBaaS供应商提供一个标准模型,其中客户的数据库位于供应商的云提供商基础设施上。或者,还有一种“自带账户”的模型,其中数据库保留在您组织的云提供商基础设施上。
这种部署方式对已与其云服务提供商建立关系的企业尤为有利,有可能通过预先协商的折扣实现成本节省。此外,通过保留数据库资源在您现有的基础设施上,您可以避免处理额外的安全问题。这还使您能够像管理其他现有基础设施一样管理数据库。
尽管DBaaS提供了可伸缩性,但扩展数据库的费用可能不会按照简单或容易预测的模式进行。来自应用程序的工作负载增加可能导致意外的峰值或突然的扩展需求,从而导致更高的成本(如前一节所述)。随着流量或数据量的激增,数据库的资源需求可能会显著上升,导致因扩展而产生的意外费用。密切监视和分析扩展的成本影响是至关重要的,以避免预算意外。
此外,尽管许多提供商提供透明的定价,仍可能存在隐藏的成本。这些成本通常来自于附加服务或基础定价未涵盖的特定功能。例如,为特定用例提供的专业支持或高级功能可能会产生额外的费用。仔细审查由您的DBaaS提供商提供的服务级别协议和定价文档,以确定任何潜在的隐藏成本是至关重要的。
这里有一个真实的例子:我们的一位客户最近从另一家DBaaS供应商迁移过来。在之前的供应商那里,他们遇到了巨大的意外可变成本,主要与网络使用相关。这种“云账单震惊”导致了一些内部的波动;在此后,一些工程师被解雇了。
理解和考虑这些隐藏的、意外的成本对于准确的预算和有效的成本管理至关重要。这确保了对总拥有成本的全面理解,并使您能够更明智地做出有关组织最具成本效益途径的决策。
鉴于大多数选项都涉及较高程度的供应商锁定,值得仔细思考。您不希望因为您的解决方案在成本角度上不可持续并且没有任何API兼容路径而被迫进行重大的应用程序重写。
使用DBaaS的第一个成本权衡涉及有限的成本优化。虽然DBaaS解决方案提供了一些节省成本的功能,但它们可能限制您像自管理数据库那样进行成本优化的能力。服务提供商强加的约束可能限制诸如优化硬件配置或性能调整之类的操作。它们还提供了一个满足各种用例的标准化基础设施。
一方面,这简化了操作。另一方面,并非一刀切适用。这可能限制您通过微调特定工作负载参数和缓存策略来实施高度定制的节省成本策略的能力。底线是:仔细评估这些考虑因素,以确定对成本优化工作的影响。
第二个权衡涉及成本比较和总拥有成本。在比较DBaaS和自管理数据库的成本时,进行总拥有成本分析是必不可少的。考虑硬件、许可、维护、人员和与内部管理数据库相关的其他运营费用等因素,然后将这些成本与DBaaS解决方案的持续订阅费用和额外费用进行比较。
评估使用DBaaS与在内部管理数据库基础设施之间的长期财务影响。然后,通过对成本的整体视图,根据您组织的特定要求和预算考虑,决定什么是最好的选择。
尽管作为服务(DBaaS)部署在选择过程中肯定会使您摆脱许多基础设施和硬件决策,但对任何数据库所需的通用计算资源的基本理解对于识别可能限制性能的潜在瓶颈非常重要。
要了解选择分布式数据库基础设施的CPU、内存、存储和网络时的关键考虑因素和权衡,请参阅免费书籍《Database Performance at Scale》第7章的概述。
在介绍了每种部署模型中涉及的硬件概述之后,无论您是否考虑过,该书章节将焦点转向不同的部署选项及其对性能的影响。您将了解与云托管部署、无服务器、容器化和容器编排技术(如Kubernetes)相关的特殊考虑事项。
免费获取完整的《Database Performance at Scale》书籍,由ScyllaDB提供。