Suppose you have a simple static web site you want to publish, but your budget is small. You could do this with Windows Azure Storage as a set of blobs. The “simple static” qualifier rules out ASP.NET and PHP and Node.js – and anything that does server-side processing before serving up a page. But that still leaves a lot of scenarios – and does not preclude the site from being interactive or loading external data using AJAX and behaving like it is dynamic. This one does.
Check out the web site at http://azuremap.blob.core.windows.net/apps/bingmap-geojson-display.html.
- http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0 – version 7.0 of the Bing Map control
- httpGetString.js – general purposes data fetcher (used to pull in the GeoJSON data)
- geojson-parse.js – application-specific to parse the GeoJSON data
- bingmap-geojson-display.js – application-specific logic to put elements from the GeoJSON file onto the Bing Map
Notice that the GeoJSON data lives in a different Blob Storage Container here: http://azuremap.blob.core.windows.net/maps/azuremap.geojson. We’ll get into the details in another post, but in order for this to work – in order for …/apps/bingmap-geojson.html to directly load a JSON data file from …/maps/azuremap.geojson – we enabled CORS for the Blob Service within the host Windows Azure Storage account.
Hosting a very low-cost (and low-complexity) web site as a few blobs is really handy. It is very scalable and robust. Blob Storage costs come from three sources:
- cost of data at rest – for this scenario, probably Blob Blobs and Locally Redundant Storage would be appropriate, and the cost there is $0.068 per GB / month (details)
- storage transactions – $0.005 per 100,000 transactions (details – same as above link, but look lower on the page) – where a storage transaction is (loosely speaking) a file read or write operation
- outbound data transfers (data leaving the data center) – first 5 GB / month is free, then there’s a per GB cost (details)
The azuremap web site shown earlier weighs in at under 18 KB and is spread across 5 files (1 .html, 3 .js, 1 .geojson). If we assume a healthy 1000 hits a day on our site, here’s the math.
- We have around 1000 x 31 = 31,000 visits per month.
- Cost of data at rest would be 18 KB x $0.068 / GB = effectively $0. Since storage starts at less than 7 cents per GB and our data is 5 orders of magnitude smaller, the cost is too small to meaningfully measure.
- Storage transactions would be 31,000 x 5 (one per file in our case) x $0.005 / 100,000 = $0.00775, or a little more than 3/4 of a penny in US currency per month, around 9 cents per year, or $1 every 11 years.
- Outbound data transfer total would be 31,000 x 18 KB = 560 MB, which is around 1/10th of the amount allowed for free, so there’d be no charge for that.
So our monthly bill would be for less than 1 penny (less than US$0.01).
This is also a good (though very simple) example of the sort of cost analysis you will need to do when understanding what it takes to create cloud applications or migrate from on-premises to the cloud. The Windows Azure Calculator and information on lower-cost commitment plans may also prove handy.
Of course in this day and age, for a low-cost simple site it is hard to beat Windows Azure Web Sites. There’s an entirely free tier there (details) – allowing you to save yourself nearly a penny every month. That’s pretty good since Benjamin Franklin, one of America’s founding fathers, famously quipped A penny saved is a penny earned!.
Windows Azure Web Sites also has other features – your site can be in PHP or ASP.NET or Node.js or Python. And you can get continuous deployment from GitHub or Bitbucket or TFS or Dropbox or others. And you get monitoring and other features from the portal. And more.
But at least you know you can host in blob storage if you like.
[This is part of a series of posts on #StupidAzureTricks, explained here.]
Pingback: Choosing CORS over JSONP over Inline… and Lessons Learned Using CORS | Coding Out Loud
Pingback: Reading Notes 2014-02-24 | Matricis
Pingback: Stupid Azure Trick #6 – A CORS Toggler Command-line Tool for Windows Azure Blobs | Coding Out Loud
Pingback: Windows Azure Japan Data Center Regions now in Production, AzureMap updated | Coding Out Loud
Pingback: Stupid Azure Trick #7 – Use Windows Azure’s Local Storage Emulator with Web Sites | Coding Out Loud
Pingback: From my reading list #8 – March 3rd, 2014 | Pascal Laurin
Pingback: Microsoft Azure Data Center Regions in Mainland China now in Production (that makes 12!), #AzureMap updated | Coding Out Loud
Nice respond in return of this query with real arguments and telling all on the topic of that.
Hi Bill. was searching for a similar topic and found this.nice.
we plan to build a video website. clients will access the website and play videos globally. Both Website and (storage/media service) will be hosted in SAME azure data center region. in such cases would outbound azure data transfer will be counted when each video is played by client? my understanding is it does not, as both website and storage placed in same data center. otherwise it can really hurt like just 100 client visits play a 10mb video cause 1 GB outbound data transfer.
your thoughts and insights will be helpful.