服务
关于
CloudProse博客
无服务器

AWS数据提取成本比较:Kinesis,AWS IOT,& S3

安迪·沃宗(Andy Warzon)Trek10
安迪·沃宗(Andy Warzon) | 2017年4月5日

2017年4月5日,星期三

在设计无服务器AWS架构时,在Trek10上我们经常遇到的一个问题是,对于新系统来使用数据提取,最经济高效的AWS平台服务是什么?当然,您总是可以启动一些EC2服务器并将数据注入其中,但是在Trek10上,我们努力使用Lambda,DynamoDB和S3等AWS平台服务来尽可能将新系统设计为“无服务器”。最大限度地发挥作用。

各种用例都面临着这样的挑战:物联网是最明显的一种(将数据从“物”中获取到云中),但还有许多其他情况:分支机构将数据推送到中央系统,速度慢或从数据中心进行“延迟加载”迁移,甚至可以在旧版环境和新的AWS环境之间进行始终在线的集成。

回到挑战。有多种专为数据提取量身定制的AWS服务,事实证明,所有这些服务都可能是最具成本效益的,并且在正确的情况下非常适合。我们将在这里尝试为您分解故事。

(两个简短的警告:并不打算是全面的;存在大量的可能性,我们只是认为这是最常见的几种。而且,所有定价都是针对us-east-1。)

选项分类

运动流

实时流数据排队服务。 运动流生产者应用程序将数据推入,而消费者应用程序将数据拉出以对其进行处理。 AWS Lambda函数可以成为使用者,因此无需运行服务器来处理和存储Kinesis Streams中的数据。

  • 优点:意味着非常高的音量。非常灵活
  • 缺点:构建生产者和消费者应用程序并非易事;运行您的消费者应用程序(或Lambdas)的额外费用;每个PUT最大1 MB
  • 一个“分片”(入站1 MB / s,出站2 MB / s),$ 10.80 / mo,$ 0.014 / 1M PUT有效负载单位
  • PUT有效载荷单位:每25KB,向上取整

Kinesis Firehose

Firehose简化了Streams的用户方……您的数据会被Firehose服务自动推送到S3,Redshift或Elasticsearch中。

  • 优点:轻松进入S3,Redshift或AWS Elasticsearch
  • 缺点:每个对象最大1 MB。要做更复杂的事情或分解推送到S3的数据所需的其他服务。
  • 提取的PLUS S3费用每GB $ 0.035(但有缓冲)&压缩,通常占总数的百分比很小。)

S3

AWS服务的祖父:大规模对象存储。由于具有写后读取的一致性,因此您可以将S3用作摄取管道的“传输中”部分,而不仅仅是数据的最终存放地。我们在一个 以前的帖子.

  • 优点:一个对象限制为5TB;非常非常简单
  • 缺点:进行任何处理都需要其他服务
  • 每个人都知道S3存储成本。我们将在这里忽略它,因为这些服务中的许多最终可能仍会在S3中归档数据。这里的问题是,直接S3 PUT与其他选项相比如何?
  • 每1000个PUT $ 0.005
  • 一个PUT最多可以达到5 MB(多部分PUT可以使您最多推送50GB的对象)

AWS IOT平台

用于启用IOT应用程序的更新的AWS服务。它的核心是 MQTT 代理和规则引擎,可用于发布,处理和存储数据。

  • 优点:非常适合具有小数据的“受限”(低功耗,低计算)边缘设备。 MQTT和AWS IOT SDK是为此用例专门构建的。
  • 缺点:需要引入其他服务处理和存储。消息增量为512字节数据。
  • 每百万条消息增加$ 5
  • 邮件总大小最大为128KB

经验法则

我们对所有这些选项都进行了编号,以比较各种摄取配置文件的费用,包括数据的频率和大小。以下是一些一般性结论,可帮助您理解所有这些情况:

  • 如果您的数据生产者受到电源/计算的限制,则可能需要使用AWS IOT。如果摄取费用过高,请考虑 AWS Greengrass 在边缘缓冲/处理。
  • 在每个PUT约50万个PUT /小时和50 KB以下的情况下,Streams,Firehose和S3的价格每月都在数十美元至数百美元之间,因此成本不必成为关键的设计因素。选择最适合您的体系结构的服务。
  • 对于AWS IOT服务,“不考虑成本”的截止点更像是100k PUT /小时@ 512字节或1000 / hr @ 50KB。
  • 在有效负载不足数百KB或更少的情况下,当PUT量很大时,Kinesis Streams无疑是赢家:10M PUTs / hr @ 5KB仅$ 255 / mo; @ 50KB有效负载,它仅为$ 1700 / mo!
  • Firehose在大多数情况下都具有很强的竞争力,但与Streams的差异为10 TB / mo。除非您每月有10 TB的TB,否则,如果简单性和处理模型适合您的需求,请选择Firehose。
  • 在PUT量大而数据量小(KB为10字节)的情况下,S3缺乏竞争力。但是,当您接近Kinesis的1 MB限制时,S3的成本看起来很相似。 1M PUTs / hr @ 1MB的费用为3400美元/月(使用Streams),3600美元/ S3。因此,在处理较大的对象时,如果简单性适合您的需求,请考虑使用S3。而超过1MB的空间,S3是您唯一的选择。

我希望这是有用的。在推特上打我们 @ trek10inc 如果您对AWS数据提取选项有任何疑问或想法!

当您在这里时,请查看 上下文中的AWS Lambda定价-与EC2的比较.

作者
安迪·沃宗(Andy Warzon)Trek10
安迪·沃宗(Andy Warzon)

创办人& CTO

创办人&CTO Andy一直在AWS上进行开发已有十多年,并且是AWS认证解决方案架构师-专业人士。