Browse files

more readme

  • Loading branch information...
JustinBeckwith committed Jan 29, 2013
1 parent 04ca2f1 commit a4e8e8ee55316ca13d07d09bcc3c1ccf2fae3a8c
Showing with 24 additions and 5 deletions.
  1. +24 −5
  2. BIN cli.png
@@ -1,16 +1,18 @@
[Wazstagram]( is a fun experiment with node.js on [Windows Azure]( and the [Instagram Realtime API]( The project uses various services in Windows Azure to create a scalable window into Instagram traffic across multiple cities.
-### How does it work
+## How does it work
The application is written in node.js, using cloud services in Windows Azure. A scalable set of backend nodes receive messages from the Instagram Realtime API. Those messages are sent to the front end nodes using [Windows Azure Service Bus]( The front end nodes are running node.js with [express]( and [](
![WAZSTAGRAM Architecture]( "WAZSTAGRAM Architecture")
-### Websites, Virtual Machines, and Cloud Services - OH MY!!!1
+## Websites, Virtual Machines, and Cloud Services, oh my.
One of the first things you need to grok when using Windows Azure is the different options you have for your runtimes. Windows Azure supports three distinct models, which can be mixed and matched depending on what you're trying to accomplish:
@@ -23,12 +25,29 @@ The [Virtual Machine](
#### Cloud Services
[Cloud Services]( in Windows Azure are kind of a different animal. They provide a full Virtual Machine that is stateless - that means you never know when the VM is going to go away, and a new one will appear in it's place. It's interesting because it means you have to architect your app to not depend on stateful system resources pretty much from the start. It's great for new apps that you're writing to be scalable. The best part is that the OS is patched automagically, so there's no OS maintenance. I chose this model because a.) we have some large scale needs, b.) we want separation of conerns with our worker nodes and web nodes, and c.) I can't be bothered to maintain my own VMs.
+## Getting Started
+After picking your runtime model, the next thing you'll need is some tools. Before we move ahead, you'll need to [sign up for an account]( Next, get the command line tools. Windows Azure is a little different because we support two types of command line tools:
+- [PowerShell Cmdlets]( these are great if you're on Windows and dig the PowerShell thing.
+- [X-Platform CLI]( this tool is interesting because it's written in node, and is available as a node module. You can actually just `npm install -g azure-cli` and start using this right away. It looks awesome because
+![X-Plat CLI]( "X-Plat CLI")
+For this project, I chose to use the PowerShell cmdlets. I went down this path because the Cloud Services stuff is not currently supported by the X-Platform CLI (I'm hoping this changes). If you're on MacOS and want to use Cloud Services, you should check out [git-azure]( To bootstrap the project, I pretty much followed the ['Build a Node.js Chat Application with Socket.IO on a Windows Azure Cloud Service' tutorial]( This will get all of your scaffolding set up.
+## Why not WebMatrix?
+After using the PowerShell cmdlets to scaffold my site, I used Microsoft WebMatrix to do the majority of the work. I am very biased towards WebMatrix, as I helped [build the node.js experience]( in it last year. In a nutshell, it's rad because it has a lot of good editors, and just works. Oh, and it has IntelliSense for everything:
+![I <3 WebMatrix]( "WebMatrix FTW")
-### Service Bus - Pub Sub ++
+## Service Bus - Pub Sub ++
[Service Bus]( is Windows Azure's swiss army knife of messaging. I usually use it in the places where I would otherwise use the PubSub features of Redis. It does all kinds of neat things like [PubSub](, [Durable Queues](, and more recently [Notification Hubs]( I use the topic subscription model to create a single channel for messages. Each worker node publishes messages to a single topic. Each web node creates a subscription to that topic, and polls for messages. There's great [support for Service Bus]( in the [Windows Azure Node.js SDK](
-### Questions?
+## Questions?
If you have any questions, feel free to submit an issue here, or find me [@JustinBeckwith](
BIN cli.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.

0 comments on commit a4e8e8e

Please sign in to comment.