I need to set up a development environment for a small distributed team of under 5 programmers to build a site using Drupal. Development is done by each programmer on his/her own machine. Ideally, we would have all servers in the same farm as the production server, but we wanted to limit our costs. The proposed set-up is listed below. I'm a newbie trying to figure this out so any clarifications/comments would be appreciated.
Can you comment on: (1) alternatives to each step; (2) additions for things we missed; (3) ways to set up the various servers to minimize hosting costs especially at the pre-revenue stage; (4) additional tools to help automate as many of the processes as possible; and (5) security issues we should consider in providing access to the distributed team?
Source Code Repository -- Use sourcerepo.com or repositoryhosting.com (either Trac/Git or Redmine/Git). This will house the source code, wiki, bug tracking and project management. Prices are about $6/month for unlimited users.
Testing Servers -- We are thinking of using a cheap VPS for this (about $10/month). We are also considering Amazon EC2 to allow developers to test against the most current version simultaneously.
Staging Server -- We will either use a cheap VPS or go with two nodes on Linode.com (one for staging and one for production).
Production Server -- We are looking at Linode.com for this.
Backup/Media Files Storage -- We want to set up backup to an Amazon S3 account, as well as configure S3 to hold images that users will upload onto the site. This will help reduce bandwidth and storage costs on the production server. We may also use the automated backup services by Linode.com on the production site.
The testing, staging and production servers will have the same software installed, including Drupal Mercury (with drush, code and simpletest modules), Hudson for CI, Selenium for functional testing and jMeter to benchmark performance.