0

I am designing the architecture for an Azure application, and I have a few questions on how to proceed. I am familiar with the basics of Azure, but have never built and deployed an Azure application before. I have extensive experience with conventional non-cloud, web-hosted applications, though.

My application will be the usual database-centric business system with a web user interface. We want to start very small and grow it slowly as we gain user base. I am planning to use an SQL Azure database for relational storage as well as blob storage for documents and the like. These will be accessed by a Data Access Layer, which in turn will be operated by a Business Layer. The web user interface will be built using ASP.NET and will rest on the Business Layer.

All this is very traditional, but I wonder how well it fits with Azure. I have some specific and inter-related questions:

  1. I see the Data Layer and Business Layer as part of an Application Tier that can be deployed on a worker role, whereas the web user interface can be deployed as a Front-End Tier on a web role. Is separating the business and presentation logic like this a wise decision on Azure?
  2. Having said the above, having two separate roles wouldn't make sense while the user base is very small, so I would rather deploy everything together on a single web role until we get bigger. What do I need to do to make sure that these two tiers can be easily reconfigured to work as either one or two roles with any recoding?
  3. The communication between the web user interface and the Business Layer must be fast; I am concerned that it won't be very fast especially when these two are deployed as separate tiers on different web/worker roles. What is the best communications mechanism in Azure that I should use? I have considered queue storage, service bus and virtual network, but I am not sure how to make a decision here.

I have been reading some best practices posts and documents online, but they seem to address advanced issues. I would rather like to have answers to these quite basic concerns in the form of pointers to best practices articles or the like. Thank you.

CesarGon
  • 15,099
  • 6
  • 57
  • 85
  • This is fairly broad - and answered already, such as [here](http://stackoverflow.com/a/7121886/272109) - a year, old but still covers it. [This one too](http://stackoverflow.com/a/9343920/2721090) - two years old, but talks about single vs multiple roles. – David Makogon May 29 '14 at 14:38
  • @DavidMakogon: Thanks for your comment, but the answer you point to hardly answers this. For example, it contains no mention whatsoever to strategies or best practices to decide on what communication mechanism (queue storage, service bus, virtual network) to employ between web and worker roles, which is one of my explicit questions. – CesarGon May 29 '14 at 14:45
  • Well... you asked multiple questions (which should be split). I pointed you to answers for #1, but #2 is out there as well. In any case: These are broad architecture questions. There's no *best* answer that you're asking for. Great for a blog post or discussion forum. Or a different StackExchange site. – David Makogon May 29 '14 at 14:48
  • @DavidMakogon: Yes, I am aware these are broad architectural questions, and I appreciate your help. I am looking for advice on best practices on these topics, rather than a one-liner that solves everything. Editing my OP now to clarify this. – CesarGon May 29 '14 at 14:57

0 Answers0