Sunday, October 18, 2009

Choosing a Web Hosting Provider

So, you've decided to host your website with a web hosting provider. Now, you need to decide which hosting provider to choose. Given the sheer number of hosting providers, and vast array of hosting plans on offer, this may seem a bit daunting at first.

In this lesson, I aim to help you develop a process that will assist you in choosing the right hosting provider for your needs.

Step 1: Create a List

I recommend you create a list of essential features/services that you must have. All items on your list should be items you can't do without. You might also like to create another list which includes your preferred features/services. These are items that would be nice to have, but aren't essential.

On your list, create a column for the features/services, another column for your requirement, then a column for each hosting provider you investigate. Alternatively, if you are investigating many, you might like to have just 1 column for the hosting provider, and simply create a new list for each provider.

Step 2: Begin Your Search

Once you've created your list/s, you can start searching for a web hosting provider that offers everything on your essential list, and hopefully some on your preferred list. Try as many avenues as you can. For example, search engines, directories, technology sites, local business directories (online and offline), ask friends and colleagues etc.

As you find hosting providers that match your criteria, add them to another list. After a short while, you will probably have a very large list of web hosting companies to choose from. You only want one (presumably), so now need to reduce that list to one.

Assuming all hosting companes on your list offer hosting plans that match your pre-determined criteria, you may have found some that stand out from the rest. Perhaps they offer a feature or service that you could find really useful. Or, maybe they offer a special deal. Or perhaps they just seem more professional than the rest. Whatever it is, you might decide to reduce your list (a little) based on these factors.

If you can't find any suitable hosting providers at this stage, you should go back to step 1 and review your criteria.

Step 3: Due Dilligence

At this stage, you should do your "due dilligence". OK, I'm not suggesting you get all legal on me now! In this context, what I mean by due dilligence is that you simply try to uncover things that aren't obvious at first glance. In other words, find out more about these companies and the hosting plans they're offering.

Create a due dilligence checklist. Create a rating column for each hosting provider. The rating could be, say out of 5. This will help you arrive at a score for each hosting provider. The one with the highest score gets your business!

If you find that none of the hosting providers measure up well enough, you'll need to go back to step 2.

Step 4: Sign Up

By now, you have (hopefully) found a suitable hosting provider. You can now go ahead and sign up. Typically, this is as simple as completing an online form, providing your credit card details, then following the instructions in the email sent by the hosting provider. If you have a larger, more complex website, you may be assigned an account manager and/or a technical account manager, who will assist you in getting your account set up and website configured. In this case, you may also have technical people at your end to assist you in the process.


FTP

Once you've signed up with a hosting provider, you will need to upload your website to the hosting provider's web server. Once it has been uploaded to the web server, anyone from around the world will be able to visit your website.

The most common method for updating websites is via FTP. FTP stands for File Transfer Protocol and is the standard protocol for transferring files from one computer to another. To use FTP, you need an FTP client. An FTP client is simply a piece of software that enables you to transfer files from one computer to another (in this case, from your computer to the hosting provider's server).

If you need an FTP client you can download FileZilla for free. Another option is SmartFTP, which is free for non-commercial use. To follow the instructions on this page, you'll need FileZilla.

Setting up your FTP Connection

Once you've downloaded and installed an FTP client, you can configure a connection for your website. In FileZilla, you do this via the Site Manager as follows:

  1. Open the Site Manager (File > Site Manager)
  2. Click New (a new site will appear)
  3. Give the new site a name (i.e. the name of your website)
  4. In the right hand pane (Site Details), enter your hostname, username, password and any other details your hosting provider has given you.
  5. Check Don't save password
  6. Click Save

Note that your FTP client may have a slight variation on these steps, but most FTP clients have a similar method for configuring new connections.

Connecting to your Website

The above steps simply configure your FTP client to remember the details of your site so that you don't have to enter these details in every time you need to update your website.

You'll notice in step 5 we selected the "Don't save password" option. For security reasons, you should not let the program remember your password - you should enter this every time you connect. Otherwise, imagine what could happen to your website if your computer got stolen...

To connect to your website, either:

  1. Open the Site Manager (File > Site Manager)
  2. Select your website (by clicking on it)
  3. Click Connect

Uploading your Files

Once you connect to your website, you will see your local drive on the left pane, and your remote website on the right pane. The first time you connect you will need to upload your whole website into one of the directories on the remote site.

In most cases, this is all you need to do. Your website will appear as soon as you type its URL into your browser's address bar.

Some web hosting providers may require that you perform another step before the changes go live. For example, they might require that you run a replication process via their online control panel. This would be the case if the FTP server was on a different computer to your physical website. This provides an extra layer of security to your website.

Database Access

If your website has a database, you will probably need access to your live database at some stage. In fact, you'll need to set it up in the first place!

Most (if not all) hosting providers provide access to your database. Coming to think of it, if your hosting provider doesn't provide you with access to your database, find a new hosting provider!

Many hosting providers allow you to connect directly to their database server using your own database management tools (such as Enterprise Manager for SQL Server). Others don't allow direct connections (for extra security) and therefore require that you use their online tools to manage your database. For example, your host might require that you log in to the control panel and use a tool such as myLittleAdmin, which is a tool built specifically for administering SQL Server databases remotely via HTTP.

Initial Database Setup

Whichever method you're able to use, you will probably need to run scripts in order to create your database for the very first time. You will also need to run scripts to enter its data. In most cases, you can generate these scripts automatically from with your database management tool.

Depending on your hosting provider/plan, you may be able to get them to create a placeholder database for you. You can then upload a .bak file via their job ticket area, or via FTP, and get them to restore the .bak file against the placeholder database. As mentioned, this probably all depends on your relationship with your hosting provider (and how much you're paying them!)

Database Queries

Once your database has been set up, you should be able to do things like run queries etc. You probably won't have administrator access (unless you've got your own dedicated database server), so there may be some tasks you need to get your hosting provider to do.

Database Backups

Depending on your SLA, you might not be able to perform backups. In this case, the hosting provider will be responsible for this. You should ensure that you are able to download backup files as regularly as you like. This might be in the form of requesting a backup from your hosting provider, or they might provide you with FTP access to a copy of the most recent backup files.

If backups are your responsibility, you should take this task seriously and perform backups regularly. Imagine if one day, the database server's hard drive craps out and you lose a year's worth of data?

If you don't have any backups, you're stuffed. If you do have a backup, you can quickly get your database back to the state it was in on the last backup.

Website Monitoring

Now, you could always check your website by sitting at your computer and continuously clicking the refresh button every 2 minutes, 24/7, 365 days per year, but I think you'd get tired of this very quickly. An automated solution makes more sense.

Automated Monitoring

Automated monitoring is when you have a program set up to automatically check your website for availability. You configure it once, then leave it to do the monitoring for you.

You can either purchase (or write) your own software to do this, or you can outsource this to a third party who specialize in website monitoring.

Website Monitoring Software

Website monitoring software enables you to schedule HTTP requests against your website at regular intervals. In other words, you can configure the software to continuously check that your website is available. You can configure it so that, if the website is unavailable, you receive an alert (eg, pager or email).

There are many solutions available and many allow you to monitor other network devices too - not just a web service.

An important thing to remember when using this software is that, you should always install the monitoring software on a separate computer to the one you're monitoring. Even better, you should install the software on two different machines, then use the second installation to monitor the first. That way, if the machine hosting the monitoring software becomes unavailable, you'll know about it. In other words, you're monitoring the monitor!

Examples of monitoring software includes: OpManager, WhatsUp Gold, and Enterprise Monitor.

Website Monitoring Service

If you don't want to install your own monitoring software, you can use a third party provider. Even if you do want to use your own monitoring software, there are still benefits in using a third party.

A monitoring service provides you with the ability to schedule monitoring jobs against your website without you having to install any software. You simply sign up with a third party service, then configure the monitor via an online form.

Some monitoring services have distributed monitors. They have monitors set up from different places around the world. This can be very beneficial. One of the problems with having your monitoring all in one place is that, if there's a local network issue on the monitoring end, it can appear as though your website has become unavailable. This can provide you with a false picture of your website's actual availability. The distributed model goes a long way to eliminating this. It is highly unlikely that there's a local network issue in say, 7 different locations around the world, all at the same time.

Website Availability

As customers of a web hosting company, we expect our websites to be constantly available 24 hours per day, 7 days per week, 365 days per year. Our website visitors expect this too - especially if they're paying customers.

Availability is one of the biggest challenges for hosting providers. In an ideal world, all websites would be available 100% of the time. There would be no downtime - ever.

In reality, 100% availability is a big ask for any hosting provider. There's always a small chance something could go wrong. Hosting providers rely on many factors - some of which may be out of their control. A good hosting provider will spend millions of dollars on their attempts to provide availability, but even then, they may still only be able to offer say, 99.999% availability.

Lets look at some of the things that could impact on availability:

  • Hardware failure (for example, faulty RAM)
  • Software failure
  • Virus infection
  • Denial of Service (DOS) attack
  • Network security is compromised (for example, an unauthorised hacker has gained access and decides to do some damage)
  • Internet backbone link becomes unavailable
  • Power outage
  • Fire
  • Natural disaster (for example, earthquake, flood, hurricane)
  • Terroist attack
  • Customer's code is inefficient (or just plain wrong!)
  • And plenty more...

A good hosting provider will have systems in place to mitigate these risks.

For example, they will have multiple sources of power, from multiple suppliers. They will also have diesel generators in place, just in case all suppliers have a problem. They may even have backup diesel generators, just in case the first ones fail. They will ensure that they have many days/weeks worth of diesel. And, they will have an arrangement with a local diesel supplier, just in case they run out of diesel!

Fault Tolerance

The above scenario is an example of fault tolerance. Fault tolerance means to ensure the availability of a network resource even when there's a major problem. A power outage is just one of the many things that can go wrong.

Hosting providers achieve fault tolerance through redundancy. Redundancy generally refers to having an exact replica of a network resource, ready to go in case the other one fails. Furthermore, there can be no downtime between the first one failing and the second one coming online. For example, a website could be hosted across two servers - each being mirrors of the other. If one server becomes unavailable, a load balancer will detect this and switch all traffic to the other server. The website users won't even know it happened.

In a hosting environment, there are many network devices. There are DNS servers, routers, firewalls, load balancers and more. A good hosting provider will ensure that there are at least two of each of these.

This is fine, but what if you are renting a dedicated server? To provide redundancy, you would need to rent two dedicated servers instead of one. This would effectively double your costs. And how would you ensure content is exactly the same on both computers? You would need some form of replication to keep them in synch. And how would the system know which computer to direct the traffic to? You would need a load balancer - or should we make that two load balancers? And what if you had a dedicated database server...?

So you can see that providing availability can get very expensive. At some point, you need to weigh up the impact of occasional downtime with the cost of availability.

You might decide to wear the risk and verify that your hosting provider has processes in place to get your website back online ASAP in the event of downtime.

99.999% Availability?

Most hosting providers guarantee a certain level of availability. For example, one provider might guarantee 99.8% and another one might guarantee 99.999%. Whether they can keep to their promise is another thing.

A good hosting provider will compensate its customers if it drops below the agreed availability.

You should hold your hosting provider accountable for keeping their availability promise, whether its 99.8% or 99.999% availability. If availability drops below the promised percentage, you should make sure you receive compensation. This might be in the form of re-imbursement, or a credit against your account. If you don't receive compensation, consider taking your business elsewhere.

Of course, availability and compensation needs to be agreed in advance between you and your hosting provider. A good hosting provider will have all this outlined in their standard hosting agreement. However, depending on the size of your business, you might require a separate agreement.

Monitoring

You should be proactive in monitoring your hosting provider's performance. Don't just let them tell you how well they did, find out for yourself.

Now, by saying this, I'm not suggesting that you sit at your computer 24/7, hitting the refresh button, waiting for your website to go down! There are other, more efficient, ways of monitoring your website's availability.

Domain Names

Domain names are a special name that you can apply to your website. Once you apply it to your website, users can reach your website by typing this domain name into the browser's address bar. Examples of domain names are quackit.com, great-workout.com and google.com. You can reach the "great workout" website by typing its domain name (great-workout.com) into the address bar.

Most websites have a www subdomain applied to their domain name so that you can reach the website by typing "www" followed by the domain name (eg, www.great-workout.com). This is done on the DNS server after you've registered the domain name, and has nothing to do with the domain name itself (i.e. you can add www to any domain name). You can also add other subdomains as you wish.

Furthermore, you can reach any page on a website by typing the domain name followed by the path to the page. For example, www.great-workout.com/nutrition/index.cfm

Only one person/company can own a domain name at any time. Therefore, if you want mycompany.com but someone else has it, you will need to either find another name, or make them an offer to buy it. You could also wait for it to expire and hope they don't re-register it, but you could be waiting a long time.

Types of Domain Names

There are more domain names than just those with a .com suffix. There are many other suffixes that can be used, such as .net, .org, .biz, .info to name a few. Most of these have a general purpose, for example, .org was created for organizations, .info was created for information sites etc.

There are also country specific domains. For example, Australia uses .com.au, New Zealand uses .co.nz.

If the .com version of your chosen name is unavailable, another suffix could be available. These are seen as different domain names. For example,mycompany.com and mycompany.org are two different domain names - one company could register the .com and another could register the .org version. The same applies for company specific domain names. Some countries have further criteria that you need to satisfy before they will allow you to register a domain name with that country's suffix.

Choosing a Domain Name

You should choose a domain name that truly reflects what your website is all about. You should try and keep your domain name concise. If it consists of multiple words consider separating each word with a hypen. This will largely depend on how the domain name looks with and without a hypen. It will also depend on the availability of your preferred domain name.

If you find that your preferred domain name has already been registered under all applicable suffixes, you might need to get creative and think of another domain name. At this point, you may also need to consider the name of your website. If this isn't an option, you could try buying a domain name off the current owner.

Registering a Domain Name

You don't actually buy a domain name, you register it. To do this, you need to register it with a domain name registrar. You can choose how long you'd like to register it for. Options typically include anywhere from 1 year to 10 years.

In a sense, you can buy a domain name. You can do this if someone else already has already registered the domain name. What you're really doing though is buying the right to register it. You still need to keep the domain name registered with a registrar, otherwise someone else will be able to register it once it expires.

Many web hosting providers include domain registration in their hosting packages. In this case, you don't need to register it through a separate domain name registrar.

Hosting a Domain Name

Once you've registered a domain name, your domain name registrar will probably point it to a webpage that they've configured. This page may have ads on it - that way they can make money from your domain name!

If you need it to point to your website (well, what else would you want to do with it?), you will need to update the authoritative DNS servers to be those of your website hosting provider. Your web hosting provider can provide you with these details. Once you've received them, you should be able to log in to a control panel via your domain name registrar's website. This control panel should have an option for you to update the authoritative DNS servers of your domain name.

Behind the Scenes

You may be wondering how on earth the domain name ends up pointing to your website.

When your hosting provider configures your website, they assign it an IP address. An IP address looks something like this: 202.45.22.13. Your IP address is unique - no other IP address on the Internet is the same as the one given to your website. Now, what this means is that anyone could access your website by typing in the IP address. Technically, you don't even need a domain name. Only problem with this is that IP addresses are hard to remember. It's much easier to remember a nice catchy domain name.

Anyway, after your hosting provider assigns an IP address to your website, you have the option of having a domain name resolve to that IP address. When you enter in the details of an authoritative DNS server, you are specifying which server should be used to resolve that domain name. The authoritative DNS server links your domain name with an IP address. You could have as many domain names as you like pointing to the same IP address. Therefore, you could have mycompany.com, mycompany.org and mycompanys-product.com all pointing to the same website.

Technical support

Technical support is one of the things that distinguishes a premium hosting provider from a cheap one.

A premium hosting provider will respond to your issues almost immediately and ensure all issues are followed up and resolved as quickly as possible. If an issue can't be resolved it is escalated until it can be. If it's related to an incident, an incident report may be sent to the customer within 24 hours. A job will only be closed once the customer approves.

A cheap hosting provider may wait a day or so before responding. And even then, it might be simply to seek further information about your issue. They might eventually resolve the issue but probably won't ask you if it's OK to close the job - they'll just close it.

A bad hosting provider might not even respond.

Of course, this is a generalization. Some cheap hosting companies are very quick at responding. But you need to be aware that, the less you pay, the greater the likelihood that the quality of the technical support will be lower.

Your technical support requirements will largely depend on how complex your website is. If you have a small, static website, you might only need to contact your hosting provider once or twice per year. If you have a more complex site or many sites, you may find yourself contacting your hosting provider on a weekly or even daily basis. This is especially true if the website is constantly changing with new "sub-sites" being added, or if you have multiple development projects occuring simultaneously.

Online Ticket Systems

Your hosting provider might offer multiple methods of contact. For example, they might offer phone support, live chat, email, or an online ticket system.

Many hosting providers require that all support requests are logged with the online ticket system. Doing this ensures that there is no confusion over what was actually requested, and what the response was. This can be particularly useful on long running requests, or if you need to refer to another support request. A ticket system can also be a great knowledgebase. This can be useful for both parties.

Types of Web Hosting

When searching for a hosting provider to host your website, you'll probably notice that most hosting providers have more than one web hosting plan. The plan you choose will depend on your hosting needs.

If you're just starting out with your own website, a shared hosting plan is usually fine. Shared hosting is usually much cheaper than other hosting plans. Unless you have a specific need to hire a dedicated server, a shared hosting plan should do the trick.

Here's more about the different types of web hosting:

  • Shared Hosting

    Shared hosting refers to when your web site is hosted on a server along with many other customers' web sites. Don't worry, your users won't know this - your web site is still configured as a separate web site on the server and can still have its own domain name etc. It is simply sharing the server with other web sites.

    The benefit of shared hosting is price. Having your own server (otherwise known as a "dedicated server") costs a lot more. Unless you get lots of traffic, it doesn't make sense to pay more for a dedicated server.

  • Dedicated Servers

    A dedicated server is a server that hosts only your web site (or web sites). This can give you more control over your web site. It can also help in ensuring that other customers' web sites don't impact on your web site. Using dedicated servers is much more expensive than shared hosting, but if your site receives lots of traffic or you have other requirements (such as extra security requirements), a dedicated server could be for you.

    You are able to log in to your dedicated server just as you would log in to your own computer. Once logged in, you can install and configure software as you wish.

  • Virtual Dedicated Servers

    Virtual dedicated servers are a low-cost alternative to dedicated servers. The web host can put many virtual servers on each machine, therefore reducing costs. When you log in to the virtual server, it appears as though you have your own dedicated server (even though other virtual servers are probably running on the same machine).

  • Managed Hosting

    A managed hosting solution is where you have a dedicated server and the web site hosting provider manages your server for you. Typically, the hosting provider will be resposible for the hardware, operating system, virus protection, patch management etc. You still have total control over the machine (depending on SLA arrangements), and you are still in charge of your own web site content. Managed hosting is usually a lot more expensive, and in some cases, costs will be negotiated between the two parties.

About Website Hosting

Web site hosting refers to a service that makes your web site available to your users. In general, most web sites are intended to be viewed by anyone on the Internet, at any time. If you want anyone on the Internet to be able to view your web site at any time, you need to make sure your web site is running on a computer which is connected to the Internet 24 hours per day, 7 days per week (24/7).

To do this you have two options.

Option 1: Hosting the Web Site Yourself

Hosting the web site yourself means that you will need to have the right equipment, including a web server and a permanent connection to the Internet. You would need to ensure that your Internet service provider (ISP) allows this type of usage too. You would also need to have web site administration skills such as managing/configuring a web server, patch management, firewalls, virus protection etc

Most people don't do their own web site hosting. Even if they have the skills or equipment, it often makes more sense to hand this task to a third party who can monitor the web site 24/7.

Option 2: Find a Hosting Provider to Host your Web Site

This is the most common choice for web site hosting. Using a third party hosting provider allows you to concentrate on developing your web site (or whatever else it is you may do), and leave the hosting tasks up to a company who (presumably) specializes in web site hosting.

A good web site hosting company will provide at least the following services:

  • 24/7 support
  • 24/7 FTP access (so you can update your web site)
  • A number of email accounts (i.e. yourName@yourDomain.com)
  • Online control panel for managing your web site
  • Online traffic statistics (so you can see how much traffic your web site receives)
  • A robust database management system, such as MySQL or MS SQL. This is so you can add your own database if required

If you require specialized server application software such as ColdFusion, SQL Server, or PHP, you will need to check that the hosting provider supports this.

Once you start looking for a web site hosting provider, you will notice there is a very large difference in how much they charge. You will also notice that most web hosts have multiple hosting plans, each at different prices. Any good web host will allow you to upgrade a plan later on if required, so don't feel as though you need to start off on a plan that costs more than you need.

Web Hosting

Web hosting has become an enormous business world wide. There are many companies providing a great web hosting service and many others who are just out for a quick buck. In choosing a web hosting provider, you need to have a basic understanding of what web hosting is about.

This tutorial covers all the basics of web hosting - what web hosting actually is, how to choose a web host, domain names and more.

This web hosting tutorial does not teach you about hosting your own website. It teaches you what you need to know in order to choose a good hosting provider and configure your website with them.