Choosing a Hosting Plan
Butting heads with the wrong hosting plan is a familiar problem. Host providers offer a lot more choices these days which can complicate choosing the right home for a website. The most common pitfall we see are environments that are underpowered or too restrictive. There isn’t enough machine there to get the job done.
Choosing the right hosting package is a dance. Each plan has its strengths that are specific to the capabilities of the website and the amount of traffic that’s expected. We hope what you get out of this is that there exists a hosting plan at each stage of a website’s growth cycle.
Once the technology or traffic has reached the limitations of the hardware it is difficult to downsize for the sake of cost. Conversely, it may be impossible to upsize, expanding into newer technologies without completely renovating the website. This could also indicate it is time to choose a different framework than what was initially budgeted for.
It is important to get the right advise. Choosing the wrong plan to develop a website around can generate a black hole with uncontrollable costs. Here are the most frequently used hosting plans on the market today. They each have unique advantages. We’ve listed them in order of operating expense with shared hosting being the cheapest solution and cloud services being by far the most expensive solution on the planet.
In this environment one piece of computer hardware hosts several website accounts. That means everyone will be sharing the same processors, RAM, database and mail software.
This is intended to be a hands-free environment. There is no way for any of the users to modify the server’s environment, as this would pose a significant security risk. Therefore, the performance of the website, database and mail software is maintained completely by the hosting service.
Although unlimited bandwidth is often advertised, all websites on this server are sharing the same connection. A website that may be getting an exceptional amount of traffic will slow down the performance of everyone else on the system – especially if that website is under a denial of service attack.
Another common issue is background services. Websites are often maintained by automated scripts that perform tasks in the background over a specific period of time. A single account can setup several of these services and they are generally run after hours when the site is not being used. This generally happens around the same time of night because most sites will be serving businesses within one or two time zones of each other. This can make emergency updates and patches very difficult to administer unless the website is brought down during business hours.
This is easily the least expensive option. That doesn’t make it the most affordable. If your web developer has to continually tinker with the site’s code to counter the server’s limitations, the money saved each month for hosting may not cover the additional maintenance costs.
It is important to understand this solution is generally reserved for very basic websites with little need for future scalability. Some content managements systems will not run well with this type of service and may open up security threats due to the limited control over the environment.
Virtual Private Servers
This service plan offers several advantages over shared hosting. A VPS usually guarantees access to a specific allotment of processor power, RAM and disk space. Some host providers offer on-the-fly upgrades that can add more computer power which is great for future scalability. Although these type of performance updates are usually permanent and can not be reversed.
Another great feature of the VPS is the ability to manage a complete operating system. This gives the website developer complete control over the server’s environment. This is a major advantage to security and overall performance of some of the more resource heavy content management systems.
This also means the developer has complete control over the database software. There aren’t multiple unknown sites trying to utilize the same resource. Lags in database access that are often prevalent in shared hosting do not exist on a VPS unless the site itself has outgrown its environment.
Now here’s the rub; everything mentioned here is relative. Although a VPS may be allotted a finite amount of processor power, RAM and disk space, that equipment is still being shared by other VPS on the same supercomputer. The operating system installed on the VPS is running in a virtual environment, and a higher layer operating system controls all of those virtual environments.
Often that higher level of management can run into issues with system resources as it periodically updates each of the VPS. Also just like shared hosting, all the VPS are sharing the same bandwidth. If one of the VPS are compromised, it can still affect the performance of all other VPS connected to that same system.
In this scenario the account rents a complete server with its own private connection to the Internet. This solution requires a fair amount of expertise because the operating system and all the installed software that serves the website over the Internet is completely maintained by the user unless they are paying an additional systems operator fee.
The big advantage here is that there aren’t any shared resources. The only downtime affected by this server is by its own design and scheduling. Something not mentioned previously, is that all of these hosting solutions usually have sufficient backup generators and secondary hardware redundancies to guarantee 100% runtime if it weren’t for human error.
In cloud hosting every aspect of the website’s service is managed by separate servers which might be in different geographical locations. Different servers will handle website connections, image hosting, static website files and different database technology. Often cloud hosting includes a number of specialized services to plug into that aren’t available anywhere else without significant development.
As an example when someone calls up a website on the cloud, they might be waking up an “instance” on a server in Texas, which calls the pictures from another image hosting service in Silicon Valley. The user enters a term to search that website which wakes up a database instance in Buffalo, New York. The distance between all these instances can be compensated by waking up a separate cache instance. Get the picture?
That was a worse case scenario. The advantage here is ultimate scalability with no servers to maintain. Developers can serve large amounts a data without a thought about locality because these instances should be compensating for this automatically. They compensate by eventually spreading the data geographically closer to the instances requesting that data. So servers from several locations around the world will mirror the same data which is maintained by crack-shot artificial intelligence.
Have you ever considered launching your own satellite?
Does all of this sounds expensive? You bet! When asked about cloud hosting from services like Amazon or Google App Engine, we often joke with the comeback, “have you ever considered launching your own satellite?” You are invited to check out Google’s pricing guide.
Google is a great case study when considering cloud hosting. Picture being invited to one of their plush Silicon Valley campuses. Visitors get a free tee-shirt and about $15,000 of free instances or three months – whichever comes first. The sales rep mentions, “if a quarter of the world’s population logged onto your site tomorrow all at the same time, they would see your site” – and they would be right!
It generally takes at least 10 to 15 seconds to wake up one of Google’s instances which can only handle a finite amount of connections. That’s why most people pay to have a certain amount of instances always open and active during peak hours. If a quarter of the world’s population did log on at once, you’d had better have already figured out how to monetize that because the last time we checked each of those instances just cost you $.05. That doesn’t count network traffic, database calls, and all those other cool technologies you just plugged into.
Developing for the cloud takes real skill to obtain a return on investment. Also be advised that much of the code developed for cloud applications is not portable. Development on the cloud should be reserved for specific functionality or hybrid applications where there are heavyweight investors involved.