By Peter Bell

Improving a Hosting Environment

At SystemsForge, we host the vast majority of the applications that we generate. By only hosting our code on our servers, we can provide much better reliability than traditional shared or even VPS servers. We also charge a premium to ensure we can focus on uptime rather than having to worry about maximizing the number of projects on any given server. Our hosting setup works, but as we plan to scale the business we're (naturally) looking for a solution that is faster, cheaper, easier to administrate, more performant, more resiliant and more scalable.

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.

Comments
Have you read "The Practice of System and Network Administration" by Thomas A. Limoncelli (Author), Christine Hogan? If not I would highly recommend it. Great book that covers a lot of the questions you are facing...

Looking forward to your next posts...
# Posted By Jim Priest | 8/28/07 9:41 PM
Hi Jim, Thanks for the suggestion. Have just ordered it!
# Posted By Peter Bell | 8/28/07 9:51 PM
Peter frankly if you setup multiple CF instances on a server this is virtualization. I do not see a huge need for virtualization on the web server side when you can use blades and multi-instances. We run our production cluster with 2 instances on each web server with as much memory as they can have. We like HP servers for the on board out of band management and other tools. But you could get a nice digital kvm also. We use Cisco content switch for load balancing but F5 Big IP is really nice also. Both can do SSL off loading.
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.
# Posted By Ryan TJ | 8/29/07 10:23 AM
Hi Ryan,

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!
# Posted By Peter Bell | 8/29/07 10:36 AM
BlogCFC was created by Raymond Camden. This blog is running version 5.005.