Planning: Co-Location
Co-Location: Verb or Adjective ?
One of the nice things about the Internet is that your web server, the computer on which your web site runs, can be pretty much anywhere geographically, so long as the location has Internet connectivity. Reliable Internet connectivity.
Co-location is the act of placing the computer that houses your web site in a location, usually with an Internet Service Provider, where there are many such servers. Doing so has many advantages and few disadvantages. Let's talk a few details.
These places where many servers are co-located are referred to as data centers. While they can be simple rooms with a few servers standing on the floor, many of them are specifically designed rooms with rack storage space (19", high density computer racks similar to the telco racks of old), power conditioning, high speed and robust connection to the Internet and air conditioning. To top it all off, they are typically secured with locks and alarms.
Co-location means you provide your server — and often the data center will specify the acceptable form factor (19" rack or floor / shelf standing server). The data center, or ISP, provides everything else. However, you are normally expected to manage your own server, including doing regular backups and fixing the server should it cease to operate.
It is important to note that this very different to contracting for a dedicated or virtual server at your ISP. In both of the latter cases the ISP or data center provides all of the resources, including managing the server, managing backups and resolving server failures.
The Economics Of Co-location
So, by now we can see there are four basic implementations, in order of cost:
- A server at your home or place of business for which you are totally responsible
- A virtual server at your ISP which you share with possibly many other company's web sites
- A co-located server where you supply the server to the ISP and they place your server into their data center where you are solely responsible for its management (unless you make other arrangements)
- A dedicated server which has only your web site on it and which is owned and normally completely managed by the data center / ISP
You can understand why option 4 is the most expensive, as you are providing nothing but the web site programming. Co-location is an excellent compromise between a virtual server and a dedicated server. You can contract for the data center to manage your server, without having to pay for the server over and over again (dedicated server costs are so high that you probably end up paying for it at least once every year).
If you are not experiencing high traffic volumes and do not expect to in the short term, are not concerned about server security and do not need to install lots of proprietary programs or data, then a virtual server will most likely be your most cost effective solution. On the other hand, if you are running a content management system that no-one else uses, are concerned about the security of your data and need shell access to the system, then co-location is probably your best choice.
Dedicated servers, which you can purchase for yourself and place in a co-location data center, are quite economical these days. Many companies, large and small, jumped into the dedicated web server manufacturing business during the dot com boom in the late 90s, early 2000. The dot com bust effectively removed a lot of these companies and forced those remaining to be very competitive with their pricing models. A reasonable dedicated server can be purchased from about $500. As with most technology, the sky is the limit, depending on your requirements.
OK, you have decided to co-locate. How do you decide which operating system to use ?
Operating Systems
There are essentially 2 operating systems used to run the Internet's world wide web; Microsoft's Windows and Unix. Remember, you are setting up a networked server, so you need a server operating system that is reliable, has good networking and remote management features, good performance and preferably doesn't cost an arm and a leg.
Unix
Unix has a long and venerable history as the network operating system of choice. It comes in many flavors including UnixWare and SVR4 from SCO, BSD (Berkeley Source Distribution), Free BSD, Mac OS X, HP-UX, Sun Solaris and Linux. To name but a few.
Linux, possibly the most widely used Internet server operating system, certainly at the smaller end, is free and is distributed by a number of different companies and groups. It is secure, stable, and extremely fast on a minimal computer system.
Being an open source operating system it is very well supported with web languages like PHP, PERL and XML parsers, free databases like MySQL, PostgreSQL and Oracle, browsers like Konqueror, Mozilla and Netscape, web servers like Apache, mail, news, web logs etc.. A great source for Linux programs and utilities is http://www.sourceforge.net/.
Microsoft Windows
Microsoft continues to work hard at making their operating systems more competitive in the server arena. They are constantly improving system reliability, performance and security but to date they do not seem to have surpassed Linux in any arena, except price. Microsoft's operating systems are not free and nor is the support you will inevitably need at some stage.
Most of the software for Microsoft's operating systems is proprietary, closed source, and costly. However, there are ongoing efforts in various quarters to port open source applications, like Mozilla, Apache, PHP and PERL (all already available).
The price for Windows Server software varies considerably depending on your overall requirements and how many proprietary applications, like databases, you need to get your site up and running.
If you are looking for something with a little less learning curve and are willing to contend with the less secure environment, and the higher price, then this could be the operating system for you.
Selecting Server Hardware
Most servers these days are based on Intel microprocessors. They are manufactured by a wide range of companies and sold under a number of brand names. Sun, at the high end, provides excellent security and reliability with excellent support services. Sun also owns Cobalt, which you can think of as the 'economical' sun server. Sun branded hardware (whether using the proprietary sun processor or based on the Intel processors) tend to ship with Solaris, the Sun version of Unix, whereas Cobalt servers are normally shipped with a version of Linux.
Hewlett-Packard-Compaq servers normally ship with either HP-UX (Hewlett Packard's Unix) or Windows NT or XP.
On the other hand, if you are not expecting to have a high volume of traffic, you can start with almost any 'white box' Intel based platform. Preferably in a 19" rack or 16" tower case. Make sure it is well ventilated with fans to provide cooling as some data centers, or your office, may not have adequate temperature controls.
Because so much is net-centric, almost any machine / server or server board you purchase today will come with integrated networking. As most Internet connections are below 10 Megabits, almost any 10/100 full duplex interface will keep up with the demand.
How Much Memory Is Enough ?
If you are using Linux, you will be hard pressed to need more than 256 megabytes of memory. That said, the more the merrier and with the price of memory where it is, why not stock up with 512 MB ?
If you are using any Microsoft operating system you should not consider anything less than 512 MB.
Hard Drives & Filesystems
Home and office desktop machines generally have a single ATA hard drive that spins at either 5,400 RPM or 7,200 RPM. You probably aren't going to need 200 Gigabytes to store your web site so look for a lower capacity, higher speed drive. In fact, look for at least two. If you have two, I suggest mirroring the drives so that, in the event of a drive failure your web site will remain functional while you replace the faulty drive. This is called RAID 1.
SCSI drives are still the drives of choice for high end server applications as they provide faster data throughput and tend to be more reliable than ATA drives. Newer, mid-tier, servers are being equipped with SATA (serial ATA) which provide a nice compromise in cost and performance between SCSI and ATA.
If you can, implement a journaling filesystem, like Reiser (IBM), which will help protect data in the event of a power loss. You can spend hours rebuilding a crashed server, regardless of the operating system. A journaling file system will go a long way to reducing the probability that a complete re-install will be necessary.
Will Your ISP Stay In Business ?
Here's the good news... the dot com bust is over. That means that the vast majority of current service providers are here to stay, even if as part of a larger company.
The bad news is that there is no guarantee that any one company will survive but an easy way to protect yourself a little is to not contract with the cheapest company you can find. Companies that attract clients with the lowest prices are often the first to disappear or provide poor service.
Use google or one of the provider specific companies like http://www.HostChart.com/ or http://www.HostAmigos.com/
Reliability + Survivability + Support = Price
This is a simple, but critical, equation. Many catch phrases spring to mind but consider these two: You get what you pay for and If you pay peanuts, you'll get monkeys.
Try to pick a company that has redundant high speed connection to the Internet and backup power. Ac lient at the other end of the world isn't going to know that you have a local power outage, they are just as likely to assume that you have gone out of business.
Try to pick a service provider that will provide you with backup services, server monitoring and, if you are co-locating, 24/7 access to your server.
Make sure you know the answers to these questions before signing up and handing over your credit card, which they will most assuredly want.
You might also want to ask them if they provide backup mail servers, DNS, ftp, shell access and database services (if you are not co-locating but using a virtual or dedicated server).