Improving a Hosting Environment
Right now we're trying to decide how to improve our hosting cost effectively. Should we implement virtualization? How should we handle backups in the future, how to handle failure of a server, a data center, etc. Here are our current thoughts - any other ideas appreciated!
Business Goals
When we look at hosting, we have a number of specific goals:
- Minimize unplanned downtime
- Minimize planned downtime (for maintenance/upgrades)
- Provide efficient disaster recovery
- Provide some level of backup/snapshot/versioning to clients
- Minimize maintenance required
- Minimize cost required (upfront and ongoing)
- Minimize deployment effort required
- Minimize re-deployment effort required
- Minimize recovery effort required
- Deskill/automate as many tasks as possible
Our ideal solution would allow a non-technical user to administrate the servers on a day o day basis, with a highly experienced server admin reviewing/patching the servers and scripting the tasks for the non-technical admin.
What is Hosting?
For us, we need to provide email, FTP and web hosting capabilities, where web hosting includes code (including XML configuration files and Javascript) managed by developers, css stylesheets, images and layout templates managed by designers, and files (images, pdf's, etc) uploaded by site administrators and/or end users. We also need to handle log files. We also need to manage the configuration of the web server (including ColdFusion).
Key Decision Points
There are a number of key decision points that we're revisiting as we take a fresh look at our hosting. Right now we're asking ourselves:
- Web server OS: Windows or Linux?
- Web server: Apache or IIS 6/7?
- DB Server: MySQL, PostGres or Microsoft SQL Server 2005?
- Virtualization: Whether to use. If so, which tool, for what servers?
- Servers: Dedicated or Co-lo?
- Data centers: Requirements?
- Email software: WHich one?
- FTP server: Which one?
- Stats Software: Which one?
- DNS server: In-house? If so, which one?
- Firewall: What, how, which?
- How to handle in-DC web server fail over?
- How to handle in-DC db server fail over?
- How to handle Data Center fail over?
I can see this is going to turn into a book rather than a posting, so I'm going to break each of the questions into it's own posting. Any input (as always) much appreciated.



Looking forward to your next posts...
Our networks are extended to both data centers via fiber so we can load balance to web servers in each DC. Thus no servers are just sitting un-used. All hardware is duplicated in both DC and fail to the other DC. The MS SQL db servers use windows clustering for failover (to the other DC). A SAN is used also and fails to the other DC. For web server software I think that is really more specific to your needs. Apache and IIS are both very nice products and we have used both. We like the Empirix suite of load testing and monitoring as you can use the same script for load testing and monitoring if you want. Their OneSight monitoring product is very nice. another monitoring product that is very nice is http://www.jumpnode.com/
Serv-U is a nice FTP software and can be db configured.
We use Webtrends for stats. Expensive but nice.
Many thanks for the detailed comment! Always nice to see how different people configure their networks. Your network sounds great, but as soon as you mentioned SAN I knew we were in different price brackets. I rely on inexpensive SuperMicro servers with backup and a decent restore process. It isn't nearly as nice as what you have, but I was able to build my entire co-lo out for under $8,000 and as a small business where I have to choose between hardware and salary some months, that was a real consideration!
Still, I'll be going through the areas one at a time, so keep an eye out for the postings and any input on any of them much appreciated!