I am trying to formulate a valid dev/test/QA environment for my company's suite of applications to migrate to Azure. However, I am enforcing the constraint on us that our dev/test/qa/etc. environments are actually hosted on-premise and deployed to via a build server (such as CC.NET, TeamCity, Jenkins, etc.).
In such a "Test Environment", we need the ability to trigger deployments of a specific snapshot of unreleased code (and data) for a team of QA and Business professionals to test for both technical testing and for business acceptance testing. Clearly all of these folks won't be compiling and hitting F5 in Visual Studio to do this testing, so we need an environment to deploy to. In our SDLC, we actually go through ~4 such environments before we get to staging and production. In short, we need a low-overhead (automated deployments) and easily-reproducible process for this.
In planning out this environment, the question of "How to host the Azure services" is clearly the hard part. So let's look at each part of Azure. The italicized options are the ones we are wanting to go with.
CSPack
and CSRun
on the machine hosting the Azure Emultor, which probably isn't your build server. Because of this, you'll have to do some sort of remote scripting to accomplish this.So given that we have MVC Apps (web role), WCF web services (web role), Queues, Tables, Blobs, and Worker Roles that are triggered by queues but access tables, blobs, and WCF web services, does this seem like a reasonable way to host our internal QA (and like) environments? And other than some annoyances with remote scripting CSPack and CSRun to deploy to the Azure emulator, does this all sound reasonably automatable with a build server?
IMHO: You're jumping thru too many hoops to not have to deploy to Azure for Dev & QA environments.. why not just deploy and test out your deployment scripts in the same time? Use xtra-small instances to keep costs low.
Emulation of storage is not /that/ great at all. There are many minor differences that will make your testing unreliable. Nor are you testing load balancing - something that would find problems with any unplanned for session-state
One of the most useful advice about Azure I got is "Test on Azure as soon as possible". It will help you address the differences between real Azure and emulator as early as possible in your development life cycle, and there are many.
Secondly, your alternative solutions sound like a lot of work only to have testing environments. I think hosting on Azure would be more cost effective. And in the end, you will still have to test on Azure before releasing your product.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With