Plan a cost-effective data architecture based on business requirements
May include but is not limited to: code migration cost, data migration cost, bandwidth cost
I’m a bit unsure of this section because prices change very often, and there’s little I can say here; I’ve developed solutions, but don’t pay the bill. So I guess this one won’t become the post of the year, but anyways, let’s get this over with.
When working with data in Azure (this holds for SQL Azure and the other data storage mechanisms discussed earlier) you pay for two things: storage and transfer. The storage of your data is relatively cheap, in the time I write this you pay $ 9.99 / month for a 1 GB SQL Azure database. There are various plans depending on what feature you’d like to use the most, and here’s a link for the Azure pricing calculator. Data transfer is relatively cheap, too. You have to pay $1.2 / 10 GB for outbound data in North America and Europe (Zone 1), and a little more, $1.9 / 10 GB for the rest of the world. Inbound data is free.
Storing blob data in Azure costs $7.01 / 50 GB nowadays for a month. But these prices can change every day, so let’s try to grab the concept behind them.
Let’s review a typical scenario: an SQL Azure database is used by an on-premise application. In this case, your primary concern is bandwidth usage. You wouldn’t like to have chatty database connections with Azure, you’d process data in SQL Azure, and send it back to the client in bigger chunks (possibly using views and other mechanisms to achieve this); remember: you don’t have to pay for CPU, memory and anything else when using SQL Azure. Of course you have to play nicely with others; otherwise your database connection will be terminated.
On the other hand, if you run your application in Azure along with your database, then you don’t have to be very concerned with bandwidth usage – traffic inside Azure is free. Because of the increased possibility of your connection being terminated, you shouldn’t be too chatty in this case either.
I can’t say much on code migration costs, but running code in Windows Azure is much more expensive than just storing data. Azure virtual machines come in five flavors, from $30 / month / instance to $720 / month / instance. You pay for compute hours – but this doesn’t mean that you only have to pay when your application is actually doing something. You get charged for the time of your code being deployed in Azure, on an hourly basis, but who removes their apps when the point is to ensure great availability and scalability?