DynamoDB Provisioning:凭什么让成本节省76%?
英文原文:On DynamoDB Provisioning: Simple, Flexible, and Affordable
2015 年 1 月起,DynamoDB 预留容量已可以通过 DynamoDB Console 进行购买和管理。同时,还将预留容量的最小单位降到了 100,这将给创业公司带来了极高的灵活性,真正做到了 IOPS 的按需购买。更小的单位无疑带来了更好的成本效应,它让创业公司在利用预留容量的同时,还可以通过更细的粒度来降低成本负担。
对于那些当下正在使用 DynamoDB 预设吞吐量的用户来说,按照 3 年型的预留容量来看,这些特性最高可以节省 76% 的成本。举个例子,通过购买 3 年型预留容量,每个月处理 2.59 亿次写入的成本只需 12 美元/月,对比此前该写入容量价格,成本节约了 76%!
DynamoDB预设定功能开发背景
在介绍预留容量的细节之前,首先回顾和描述一下 DynamoDB 的设计和架构,以及实现途径。对比当下,DynamoDB 发布时犹如一张白纸,在很多维度都进行了不同的创新,同时,也在为开发者打造一个合适的预设定模型上。在 Amazon,每个团队都像一个独立的创业公司,与大多数创业公司一样,这些团队都会考虑到运营数据库的总体成本。灵活性、细粒度性能提升、最小化基准测 试,以及后续数据库故障时的运营成本等都是每个团队的关心所在。
传统情况下,预设定一个数据库服务需要 Amazon 所有团队对硬件、驱动以及网络进行基准测试,甚至需要调优用于复制的网络连通性。另一个团队需要解决的问题则是预设定的粒度:期望开发者尽可能的节省成 本,而扩展时又能非常便捷。传统模式下,这个操作通常通过最小化主机来完成——如果你拥有一个 10GB 的数据库,鉴于数据不停地增长,开发者往往会预设定一个 100GB 以上来最小化运维负担。然而,有些事情必然会发生,一段时间以后这台主机上的数据库增长到了 80GB,开发者必须进行迁移。毫无疑问,在云环境中做这个事情异常简单。那么我们就会自问,我们如何让这个过程更加简单?
首先做的就是让开发者不必关心实例、驱动和网络,他们需要关心的是应用程序的事务数量,以及原始存储。按照这些原则,开发者并不想迁移自己的数 据库,不管这个操作做的多么的无缝。第二个问题就是,不管数据库分区有多么简单,在保证业务正常进行的同时做分区仍然是个不小的挑战。那么我们期望做的就 是,在业务正常进行的情况下,系统规模可以按需进行缩放,同时开发者不需要关心任何底层硬件细节。同样的,开发者也不需要去关心存储:开发者可以 0 投入地将某个表格从 100MB 扩展到 100TB。
基于这些理念,Amazon 设计了 DynamoDB 的预设模型。允许用户在预设系统每秒的读、写吞吐量之后就可以正常的运行。鉴于这一点,DynamoDB 是个完全托管的服务,它不需要下载和安装任何软件。默认情况下,DynamoDB 会将每个表格跨 3 个不同地理位置的数据中心进行备份。同时,数据至少在两个数据中心持久化的情况下写入才会被确认。所有这些工作的完成甚至不需要任何的配置。对创业公司来 说这一点非常有益,对比数据库运维,他们更希望将时间花在业务的推广上。通过这种预设模型,我们着重提升产品的灵活性。一个建立表格时只设定了每秒 10 次读和写的应用因为 Reddit 效应崩溃时,他们所需要做的就是使用 DynamoDB 控制台或者 CLI 重新指配表格来支撑 100 或者 1000 甚至是 100 万的 TPS。同时,所有这些操作都可以在流量正常传输的情况下进行。所有流量就向被移向了别处,这也是为什么客户喜欢使用类似 Dynamic DynamoDB 基于实际负载来设定 IOPS。
DynamoDB预留容量
在了解了背景之后,谈谈如何使用预留容量来降低总成本。在这之前,Amazon 已经发布了 DynamoDB 的预留容量功能,在使用 3 年类型预留容量的情况下,用户最高可以减少 76% 的成本。在此之外,预留容量还带来了更多的灵活性。举个例子,如果你购买 500 预留容量单位,你可以在一个表中使用 500 或者更多的 IOPS,或者你可以在多个表中共享这 500 的预留单位。更重要的是,你不需要对预留容量进行任何分配:如果预留容量有N个 IOPS,我们会自动将账单中N个 IOPS 预留容量的部分予以免费。你可以在控制台中直接购买和查看预留容量:
随后,你就可以点击“Purchase Reserved Capacity”按钮。之后,你将进入下一个对话框进行各种参数选择,比如:区域、容量类型、时期(1 年或者 3 年)以及 email 地址。一旦你购买预留容量,那么这个容量可以在你所有表格中共享。当然,你可以对比使用情况来选择一个最佳的预留容量大小!了解更多信息请访问 FAQ 页面。
有些人可能还会记得,Amazon 宣布了 JSON 的支持,并在 re:Invent 上发布了 DynamoDB Streams 预览版。现在,Amazon 正在跟进预留容量的用户体验以降低你的总体成本。
DynamoDB Free Tier
据悉,目前预留容量购买的最小尺度为 10 美元/月,DynamoDB 的最低使用成本也降到了0。作为 AWS Free Tier 的一部分,DynamoDB 用户可以免费获得每秒 25 次的读写和 25GB 存储。对于一个即将投产的应用来说,这个容量已经足够使用,同时你还将享受多数据中心可用性和持久性以及零运维。然后,一旦你的应用投入生产,你还可以使 用 Amazon 新的预留容量购买体验。