Vorrei usare uWSGI+Nginx dal punto di vista delle prestazioni (penso che il confronto sia già stato collegato in un'altra risposta), pip e virtualenv per la distribuzione in quanto ciò mantiene le cose autonome e facilita la distribuzione pulita utilizzando fabric o simili. Usa git per il controllo della versione. Jenkins può gestire l'integrazione continua. Userei il di fronte alle istanze EC2 per il bilanciamento - fa il lavoro senza che tu debba preoccuparti troppo di questo. django-storages per il caricamento dei file statici su s3, che consente di risparmiare lo sforzo di avere un altro server per distribuire file statici.
Tuttavia, dipende un po 'sul vostro spese generali di amministrazione. Se siete alla ricerca di qualcosa di pulito e semplice per la distribuzione e lo scaling, mi piacerebbe accantonare l'intero stack EC2 AWS, uso Heroku come front-end, e s3 per i file statici. Ciò consente di risparmiare tutto il tempo di amministrazione della manutenzione delle scatole e consente di concentrarsi sullo sviluppo.
off-topic, ma si potrebbe considerare l'utilizzo di Heroku per distribuire un progetto Django per AWS e saltare la maggior parte di questo dibattito. –