Is there are an architecture versatile enough that it may be deployed to either a cloud server or to a dedicated (or VPS) server with minimal change? Obviously there would be config changes but I’d rather leave the rest of the app consistent, keeping one maintainable codebase.
The app would be ASP.NET &/or ASP.MVC. My dev environment is VS 2010. The cloud may, or may not be, Azure. Dedicated or VPS would be Win Server 2008. Probably.
It is not a public-facing web site. The web app I have in mind would be a separate deployment for each client. Some clients would be small-scale, some will prefer the app to run on a local intranet rather than on the web. Other clients may prefer the cloud approach for a black-box solution. The app may run for a few hours or it may run indefinitely, it depends on the client and the project. Other than deployment scenarios the apps would be more or less identical.
As you may see from the tags, I’m assuming a message-based architecture is probably the most versatile but I’m also used to being wrong about this stuff.
All suggestions and pointers welcome regarding general architectures and also specific solutions.
Yes, this is possible. The web app istelf (MVC or Webforms) will likely remain the same (with config changes).
If you are considering Windows Azure as the “cloud” deployment option then the major things to take into account are:
Web app:
Data:
Management:
Much more details are available here.
I don’t know what you were trying to considering the message queues for, but that’s something you can also abstract (e.g. MSMQ for on-premises, Windows Azure Queue for the cloud). You will have to accomodate for some semantic differences, but it is doable.