BidNow is a sample application built upon Microsoft Azure platform, taking use of Azure storage, SQL Azure and AppFabric. In its latest version, there are three roles: two web roles (one for the website and one for the services) and one worker role, which could cause a deployment problem because my Azure subscription (for MSDN Ultimate subscribers) has only 1500 included (free) compute hours per month, an equivalent of 2 compute instances (cores) running through a month. Even if I run each role with one compute instance (2 by default), the included hours can only support two roles. What about the other one?
The worker role is in charge of handling the long running operations that could hurt the website’s performance. For example, the image processing tasks, when a new Auction item is created, are handled by the worker in order to decrease the workload from the Web and Services web roles. Actually the worker role doesn’t have intimate relationship with the web roles as there’s no direct communication between them. Instead the worker role talks to the storage account and the SQL Azure database.
Fortunately, I have another Azure subscription as a Microsoft partner, which allows another 750 compute hours that I can use to serve the worker role exclusively. What I did is splitting up the original solution file into two: one includes only web roles and the other one includes worker role. Then deploy the two packages under two subscriptions respectively.
Check it out at http://bn.cloudapp.net/