With Amazon and Microsoft being the main providers for cloud based telemetry injestion services I wanted to do a feature and price comparison between the two. If nothing else, this info should help with an understanding of each services capabilities and perhaps help with making a decision on which service is best for your needs. I realize if you’re on AWS you’re probably going to use Kinesis and if you’re on Azure you’re probably going to use Event Hubs. But at least arm yourself with all the info before diving in!
Two caveats to this info worth noting:
- Yes, I work for Microsoft. I did not fudge these numbers or any of the info to paint a nicer picture for Azure. This info is factual based on my research into both services.
- Cloud services and their pricing change, so these specs and pricing are current as of the date of this post and you should re-check on Azure or AWS to verify.
This is a purely objective comparison focused on service specs. I’m not going to get into the usability of either service, programming efficiency, portal experiences, or anything else like that. Just numbers. Notice there are a couple question marks on the AWS side because I couldn’t find the info in the Kinesis documentation and folks I asked didn’t know. If you can help fill in those gaps, or notice some of this has changed, please let me know in the comments.
|
Event Hubs |
AWS Kinesis |
Input Capacity |
1MB/s per Throughput Unit (TU) |
1MB/s per Shard |
Output Capacity |
2MB/s per TU |
2MB/s per Shard |
Events/s |
1K |
1K |
Latency |
50ms Avg, 99th % < 100ms |
10s min |
Protocol |
HTTPS or AMQP 1.0 |
HTTPS |
Max Message Size |
256KB |
1MB |
Included Storage |
84GB per TU |
?? (none?) |
Max Consumers |
1 Consumer Group (Basic Tier) 20 Consumer Groups (Standard Tier) |
|
Monitoring |
Built in portal metrics or REST API |
CloudWatch |
Message Retention |
24 hrs (up to 7 days) |
24 hrs (up to 7 days) |
Price per Hour |
$0.015/TU Basic Tier |
$0.015/Shard |
Price per Million Units |
$0.028 Basic & Standard (64KB/unit) |
$0.014 (25KB/unit) |
Extended Data Retention Price |
Only if stored event size exceeds 84GB * #TU’s, $0.024/GB (assuming LRS) |
$0.020/Shard hour |
Region used for pricing |
East US |
US East |
Throughput Flexibility |
Adjust TU’s as needed |
Adjust Shards as needed |
Supported Regions |
18 (plus GovCloud) |
9 |
<Update 6/1/2016> Turns out the answer to Max Consumers for Kinesis isn’t exactly straight forward due to their dependency on HTTP(S), as pointed out to me after publishing this post in February. Kinesis is limited to 5 read transactions per shard so your max consumers is going to be dependent on how you spread those transactions across your consumers. If you have five consumers each reading once per second, five is your max. Since output is capped at 2MB/s, you can read up to that capacity in each transaction but you have to design your consumers to work within those limits. Additional info on this Stack Overflow thread.</Update 6/2/2016>
To compare pricing, I’m using the sample from AWS. In case they change their sample, here is the sample the below numbers are based on:
“Let’s assume that our data producers put 100 records per second in aggregate, and each record is 35KB. In this case, the total data input rate is 3.4MB/sec (100 records/sec*35KB/record). For simplicity, we assume that the throughput and data size of each record are stable and constant throughout the day.”
Kinesis Pricing Sample
Shards |
4 |
Shard cost/month (31 days) |
$44.64 |
PUT cost/month |
$7.50 |
Total |
$52.14 |
Extended Retention Cost |
$59.52 |
Total w/Extended Retention |
$111.66 |
Event Hubs Pricing Sample
|
Basic |
Standard |
TU |
4 |
4 |
TU cost/month (31 days) |
$44.64 |
$89.28 |
PUT cost/month |
$7.50 |
$7.50 |
Total |
$52.14 |
$96.78 |
Extended Retention Cost* |
N/A |
$47.24 |
Total w/Extended Retention |
N/A |
$144.02 |
Results
On the pricing side, I found it interesting they are the exact same price! Unless you need extended retention and need to bump up to the Standard tier on Event Hubs. Comparing the specs, the items that jump out for me that might impact a decision are latency (Event Hubs blows away Kinesis), protocol (no AMQP on Kinesis), max message size (Kinesis is quite a bit larger), the size of a pricing unit (64KB for Event Hubs and 25KB for Kinesis), and the number of regions. Whichever service you choose to go with, hopefully this info helps make the decision a bit easier.