Cost of Azure Notification Hubs vs Amazon SNS - azure

I've been evaluating options for sending mobile push notifications and looked at pricing of Microsoft's vs Amazon's hub offerings. I think I must have miss-calculated since the Microsoft offer is coming out 20 times the cost! Can someone please point out where I went wrong?
The Microsoft pricing is based on a 12 month plan, giving a unit cost of £3.29 per day. Each unit can sent 166,667 messages and I need to send 1.8m per day (roughly 54m per month).

I'll say upfront that I am inherently biased, since I work on Azure.
But these are significantly different services.
Amazon SNS primary scenario is push to individual devices, or small groups of devices. You need to maintain the endpoints, and pre-create topics. You can do multicast with topics, but a topic afaik cannot have more than 10K devices, so you can only multicast to 10K users at a time.
Notification Hubs offers you segmented/personalized push engagement for millions of users. You can broadcast to unlimited # of devices with a single API call, you can manage segments/target arbitrary segment expressions, personalize/localize your pushes using templates, etc.
If you don't need any of the extra features Notification Hubs offers, and just need a simple push to individual devices, Azure pricing page advises contacting mobileservices#microsoft.com for low price offering for high volume individual push scenarios.

Quick update to my previous answer. Starting September, Azure Notification Hubs offers more flexible (and much cheaper) pricing with three tiers:
1) Free tier - up to 1M push notifications monthly for free
2) Basic tier - basic push notifications at $1 per million pushes.
3) Standard tier - rich push notification capabilities (large scale instant broadcasts, dynamic segments, rich telemetry, etc) at $2.5 - $20 per million pushes depending on the volume.
http://azure.microsoft.com/en-us/pricing/details/notification-hubs/

Related

turning off azure media services end-point when idle

is it possible to turn off an azure media services end-point when idle, and turn it on again by demand (either by ways of configuration or programmatically?)
the purpose of this being saving costs on the end-point when not used.
There are several billing meters which apply for azure media services See https://azure.microsoft.com/en-us/pricing/details/media-services/ for all details.
Main price components:
Storage - you are paying based on how many space consumed by your assets. You can delete assets which are you no longer planning to use to avoid extra charges.
Encoding without reserved units - usage charges based on size of processed data. Your are not paying if system is in idle state.
Encoding with reserved Units - Same as #2 plus you are paying for allocation of resources.Reserved units help you to encode multiple jobs in a same time. Use portal to increase/decrease number of reserved units or REST/API, Client SDK to configure this parameter - https://msdn.microsoft.com/en-US/library/azure/dn859236.aspx#update_EncodingReservedUnitType
Live channels - For all live channel types, billing is based on the amount of time the channel is in running state and not based on the incoming and processed data. You can stop or delete channel to avoid incurring charges. See https://msdn.microsoft.com/en-us/library/azure/dn783458.aspx#stop_channels
Streaming units - Provides dedicated bandwidth capacity for both on-demand and live streaming. Pricing per unit. You can start/stop/scale streaming endpoint through portal or rest api - see https://msdn.microsoft.com/en-us/library/azure/dn783468.aspx
Content Protection - charges based on licences/keys issued through a service.

Azure Notification Hub quota limits

The notification hub REST API documentation mentions a quota for notification hubs in a given namespace. I couldn't find on the documentation nor the pricing page what are the boundaries for the quota for each plan.
Empirically, i now know that on the free/basic tier the limit is 100 notification hubs per namespace.
The maximum number of resources of type NotificationHub has been reached or exceeded. Actual: 100, Max allowed: 100.
Can the quotas be raised? What are the costs?
My current system uses hubs for multitenancy and before jumping to refactor the architecture are there any limits not mentioned on the pricing page?
Do service bus have quotas on the number of namespaces?
Do registrations (devices) have quotas/rate limit for each notification hub?
Send operations:
To increase quotas and start using some advanced features you could
go https://manage.windowsazure.com, then pick any your Notification
Hub and set Basic or Standard pricing tire on the Scale tab. Basic is
$10 per month, Standard - $200. Note that pricing tire is actually
changed on namespace level and all quotas are enforced against
namespace.
Also if you try to call Send operations in parallel from several
senders then you would see that bandwidth is wider because requests
are very likely to be routed to different nodes.
Also if you are going to send a really big volume of notifications
and each notification is targeted to 1 or very few devices, then
write to support asking to enable Inbox for your namespace.
Other quotas:
At most 100 (by my best knowledge) namespaces per regular subscription, you can upgrade it to premium with no limit by writing to support.
At most 100 hubs per namespace, you can increase it by writing to support.
Number of devices is not actually limited, even for Free tire '500 active devices' limitation is not enforced... for now :)
Registration rate is limited, quotas start from 2000 per namespace per minute and depends on pricing tire.
Also:
Some official pricing details: http://azure.microsoft.com/en-us/pricing/details/notification-hubs/

Azure Notification Hub Billing

I have a question about Azure Notification Hub Billing (Prices here)
If I send a 1 message that fans out to (say) 10 client devices is that billed as 1 message or 10?
This kind of implies that that it would be 10 but it's a little unclear
Pushes include all notifications delivered to the platform
notification services (e.g. Windows Notification Service, Apple Push
Notification Service, Google Cloud Messaging, Microsoft Push
Notification Service). Push allowance is prorated and capped on a
daily basis.
(Hope this is an ok place to ask this, there are a few Azure billing questions and none seem to have been closed so I'm assuming this is accepted)
You would pay a flat fee of $22 (USD) per Unit for that example.
You are charged per "unit" where a unit on "Basic" (for example) includes:
unlimited device registrations
up to 500,000 pushes per month (or 16,667 per day)
If you publish 1 message that fans out to 10 devices you have generated 10 pushes. If you did not exceed the 16,667 messages in a day you'd pay $22 for a single unit.
If you need more than that you would need to scale the number of units (maximum of 9 for Basic / unlimited for Standard) to allow you to meet your demand.
Easiest way to perceive this is by considering total devices that have been reached out to using Notifications Hub; irrespective of the platforms being pushed on.
Example: 5-Android, 2-Windows, 1-iOS = 8 pushes!

Badge management with Azure Notification Hubs

I am investigating migrating from Azure Mobile Services push notifications to Azure Notification Hubs for two primary benefits: 1) pub/sub architecture using tags, and 2) abstracting the device registration.
However, I'm struggling to understand the pattern for device badge value management.
With mobile services push notifications it's straightforward to maintain the current badge value in the db for individual device registrations. But with Notifications Hubs where Azure maintains the 'subscribed' devices registrations and manages the fan out of device notifications, what is the best approach for the client devices to update their current badge value with Azure Notification Hubs?
I have reviewed the Azure documentation, viewed several of the excellent overview videos, such as Channel 9 Cloud Cover episode 100, but documentation and examples seem to be lacking with regard to Notification Hubs and management of badge values.
Thanks for your help, friends!
Unfortunately badge management is not straightforward in a pub/sub architecture. If you use tags to indicate individual users then you can keep your counter in your backend and then add it in your notification when sending to your hub.
In you are using tags as interest group, then things are not straightforward, and they depend on what you want that count to be. For some platforms (i.e. iOS and ANdroid) you can code some client code that keeps a personalized counter. Some other times however, one has to avoid keeping personalized counters and resort to use generic badges like "!" in Windows 8.

Azure - moving from free services to Basic Mobile Services pay-as-you-go

I have actually pay-as-you-go plan in my account right now and I am using free 20MB database to all my projects in this account. I've created mobile services for my mobile app and it's time to release this project. So I think the best for me right now is move from Free Mobile Services to Basic so I can have unlimited devices to use this. But I don't know how much database size and bandwidth I would need. I just want to set my plan to Basic and create new database and then pay how much bandwidth and database size I would need.
I found this calculator and I just want to buy that Basic services with 1 unit and I just don't want to fill any other things (not because I don't want them because I just don't know how many and that it would be great that with rising app using there would be rising too). Is it possible?
I hope I explained my problem well.
Btw: What unit means in "1.5M API calls per unit"?
Thanks
Yes, you can continue to use Free SQL DB with Basic tier of Windows Azure Mobile Services. SQL and Mobile Services are separate items on your subscription and each can be scaled independently of the other. In practice if you have a lot of load, you will likely need to scale both - for architectural reasons.
Egress bandwidth for Mobile Service responses to the client is included in Mobile Services pricing. If you don't use SQL in the same data center, you may incur separate bandwidth charges. Although for latency reasons, we strongly recommend using a database and Mobile Service in the same data center which also eliminates egress costs for Mobile Service - SQL interaction.
You can purchase 1-6 units of Basic tier of Mobile Services. Each unit provides 1.5M API calls per month. So if you buy 2 Basic units, you will get 3M API calls per month and so on.
Thanks.
Dinesh Kulkarni
(Program Manager, Windows Azure)

Resources