Any one one know of the best practices to be followed when implementing an application in the cloud?
I would like to build an application, which is cloud independent. So, a DAC should be able to work against S3 / AppEngine / Azure just by changing a configuration. Is there any framework or best pattern to be followed so that code is Cloud provider independent.
EDIT: I would like to understand on how we can abstract various components such as DAC / session management etc. so, that in future (when cloud providers starts supporting other languages) we would be able to move from one vendor to another. As I understand we need to use AppEngine’s model instead of Django model and App engine’s forms instead of Django. These tend to lock to the app with the provider. Is there any way to avoid doing this?
Right now, I think your goal of being able to move an application between those 3 clouds with just a configuration change is not feasible. You would probably have a hard time writing efficient code that would run on appengine (python or java) and also run on ASP.net. (unless someone has gotten django running on azure which would be awesome)
You might have a shot at getting one codebase to work on 2 of the 3 – either appengine and EC2, or Azure and EC2. Out of all 3, amazon’s EC2 is the lowest level service, and therefore most flexible (it also requires more administration on your part to get running). You could run a windows box with asp.net and Sql server to match your azure environment, or you could run a java stack to approximate your appengine environment.