I built an ASP.NET MVC application, and now I want to move it to Amazon AWS from my development server. My question is: How does one migrate an ASP.NET application to Amazon AWS? Here is what I have researched/found so far:Sessions don't work across instances, so I need to use DynamoDB or memcached to store state. I looked into various clients like Enyim as a possible solution to the session state problem using Amazon ElastiCloud.Amazon has a web service for SMTP emails. So I will need to rework the code that sends SMTP emails to send through Amazon SES, and reroute incoming emails to a separate mail server by changing the DNS records.There's an SDK for managing user identity (Amazon IAM). I will need to change the authentication code to use this web service.Perhaps there are more points that I am unaware of. So, how does one migrate an MVC app to AWS?
Moving my ASP.NET MVC application to Amazon AWS
amazon ec2
Firstly, the things you're currently investigating would largely be the same regardless of whether you're taking your site from one machine to several (in-site) servers, to Azure, to Rackspace, etc.When it comes to session state, your production site is now likely to run across several instances so will need to persist session data at a shared store so that user sessions can be loaded regardless of which server endpoint they end up hitting.Dynamo could well allow you to handle colossal scale, but is likely to be a relatively costly. Depending on your expected (and eventually, real) traffic workloads, you may well be able to get away with a cheaper form of storage such as AWS Elasticache (especially since user sessions can be transient).Modifying your SMTP handlers should be pretty trivial.IAM is more about controlling users' access to AWS services. What you've described is wanting to manage your own user accounts storage & access (via ASP.NET Membership?) - for that, a persistent relational storage mechanism like Amazon RDS. There are plenty of examples of others who've done most of this - just GoogleBing it.Other things to consider: I hope your site's doesn't require sticky sessions: this can make load-balancing a little tricky.Have you tested your app running across a couple of local instances, fronted with a simple load-balancer/proxy? It's easier to debug these things locally vs. in the cloud.You've not mentioned any form of back-end database ... I assume you've got your DB migration organized already?