Azure: Will this work for my application?

I am creating an application that I want to put in the cloud. This app has one main function.

It hosts CLIENT socket sessions on behalf of other users (think of Beejive IM for iPhone, where it hosts instant messaging sessions for clients to maintain state on those IM networks, allowing the client to connect / disconnect at will without breaking IM).

Now, as I planned it now, this is that one "worker instance" can only handle a finite number of client sessions (say 50,000 for the argument). These sessions will be very durable work tasks.

The problem I'm trying to figure out is that sometimes I need to perform tasks for specific client sessions (for example: if I need to disconnect the client session). With Azure, will I be able to enqueue a smaller task that only the instance that was running a specific client session could delete?

I am currently considering GoGrid as a provider and I am solving this problem with Apache Active Messaging Queue software. My web application sets up "disable" tasks that are assigned to a specific instance ID. Therefore, each client session is assigned a specific instance ID. The instance then only cancels the Disconnect job assigned to it.

I am wondering if it is possible to do something like this on Azure and how I usually do it. I like the idea of ​​not installing many different VMs to scale out, but instead just deploying one package. Also, it would be nice to use Azure Queues instead of integrating a third party product like Apache ActiveMQ or even MSMQ.

+1


a source to share


3 answers


I would be very concerned about building a production application on Azure until the feature set, pricing, and licensing terms are complete. First, you can't even compare costs between it and GoGrid or EC2 or Mosso for example. So I don't understand how this could be a winner. In addition, we know that all of these systems will malfunction as they mature. Amazon's services are much broader than others and have been available for years. IMHO choosing Azure is a recipe for pain as they stabilize.



Have you considered Amazon Simple Queue Service for Queues?

+1


a source


I think you can use Windows Azure for this. My recommendation would be to create a queue for each session that you are monitoring. Then you can send a disconnect message (for example) to the queue for that session. The working instance that handles this connection must be the only one examining this queue, so it must handle the execution of the task on this connection.



0


a source


As far as connecting to the socket host to connect to clients, I would double check what is allowed as I think only HTTP and HTTPS connections are allowed with Azure.

0


a source







All Articles