Infrastructure that hosts your entire application and communication paths (such as emails) play a major roles in the ways to your online success. There are many kinds of hosting service provider, which I will explains thoroughly in this post, alongside with the pros and cons for each of them.
1. Shared Hosting (Cost: $)
This is the de-facto starting line for most business, being the most affordable type of hosting, you are placed and hosted within a server that is shared with a dozens of other users.
Pros: This is the most affordable and does not requires any technical expertise to manage.
Cons: Since it is a shared environment, stability is usually not as good as other type of hosting. Sometimes it is also the least performing of all.
My advice: Look for shared hosting with a fix amount of allocation instead of offering everything “unlimited”. When you are given a limit, others are also given the same kind of treatment. Therefore, it will be less susceptible to instability. Shared Hosting 101: look for provider that uses CloudLinux, because CloudLinux can virtualize and limits a lot more type of resources that user uses and typically abuse (such as CPU and RAM), it usually makes shared hosting environment a lot more stable. Look for provider that uses rebootless kernel update (such as KernelCare or kSplice Uptrack), it will keep the system safe from security vulnerabilities without needing to reboot the whole server.
BEWARE: Some shared hosting providers do not proactively update their kernel. They thought it is too much hassle because updating kernel = rebooting server = client complaint. Some of them even boast “xxx days of uptime” very proudly while they did this.
2. Semi Dedicated Hosting (Cost: $$)
This is the usual upgrade paths from Shared Hosting, you are still placed and hosted within a server, but it is shared to much less amount of users. (For example if shared hosting servers are shared between 100 customers, semi dedicated usually only hosts 5-20)
Pros: A lot more stable and performant to shared hosting, you can usually get bigger chunks of the resources that the server has.
Cons: It is still a shared environment. Chance of instability are still rather high if the providers are not managing the servers properly.
My Advice: Same with shared hosting, looks for CloudLinux and fixed resource allocation.
3. Self-Managed VPS Hosting (Cost: $)
I wouldn’t say that this is an upgrade from Shared or Semi Dedicated, but with VPS, you are given a servers with “some” of it’s resources dedicated only for you, for example: RAM Memory, Disk Spaces and CPU shares. You are also given the highest access (root access) to do anything you want in the server. There are a few common types of virtualization, OpenVZ, Virtuozzo, Xen Paravirtualization, Xen HVM, VMWare and KVM. Amongst all, my favorites are KVM due to being officially backed and developed by linux dev, embedded into linux kernels (you do not need special kernel to runs KVM) and is catching up real fast in terms of features with other virtualization.
Pros: Some of the resources are dedicated to your application, accompanied with root access, there are a lot of things you can do compared to being hosted in a shared environment.
Cons: Self-Managed means you need to manage it on your own. This means you need some extend of operating system knowledge and the know-how to install, configure and maintain the infrastructure. This is usually a major hurdles for most user.
My Advice: It is not recommended to go with Self-Managed solution unless you are an experienced system admin. Getting hacked due to improperly secured servers, maintaining and configuring for stability is a major headache for most people. If you know what you’re doing, get a KVM VPS, and if you need good speed, get something with high CPU frequency (1 Core at 4 Ghz are usually better performing rather than 2 Core at 2.5 Ghz) and Disk IO (aim for SSD in RAID).
4. Managed VPS Hosting (Cost: $$)
This is the most recommended upgrade path after Semi Dedicated Hosting. Same like VPS (some of the resources are dedicated to your application), however the provider also provide you with the technician (or sysadmin) to install, configure and maintain your infrastructure. Sometimes you are given highest (root / admin access), sometimes you don’t, depending on the provider’s policy.
Pros: Feels like hosting on a shared environment, easy to use but with higher performance and stability.
Cons: Usually costs more than Shared environment and Self Managed solution.
My Advice: Look for provider with good track records (find a review through Google or other online forum), because you relied a lot on their sysadmin supports on this type of hosting. My advise on Self-managed VPS also applies, KVM virtualization, Good CPU, Good Disk Setup.
5. Cloud Hosting (Cost: $ – $$$)
The most recent hype in the hosting indutry, works like Self-Managed VPS Hosting, but with the ability to instantly scale-up/upgrade and scale-down/downgrade as needed.
Pros: It is easy to scale up and down, very good for application that expects sudden spike in traffic.
Cons: Due to the way it is structured and multi-layered, it is less performing and sometimes less stable with performance hiccup here and there, compared to bare metal (or the traditional VPS) solution.
My Advice: The terms of clouds has been very widely used, so it is no longer have a unified, standardized meaning behind it. Right now every providers are defining their own cloud, so make sure to understand, and asks before jumping ships.
Most clouds that I know uses SAN-based storage node and multiple compute (processing) node. This is much easier for providers to manage, because when they need to add resources, they just add according to what they need, so if the storage are nearly full, just add another storage node, if the computing power is heavily utilized, add another compute node and so on. This simplicities however, has it’s own drawbacks, which is the added latency from additional networking hardwares and added logic layer. (I won’t go too much to explain this, but you can read how OpenStack and OnApp cloud infrastructure works, it is available for public online) This mean less performant system.
One other pitfall: when you’re signing into a cloud VPS, you must understand that it is by no means highly available! People often think of Cloud technologies as a replacement to high availabilities, and they are wrong. Most cloud technologies only protect you from hardware problems, but definitely not from network, power outage, human errors and natural hazard.
6. Self-Managed Dedicated Server Hosting (Cost: $$)
Most recommended upgrade path from Self-Managed VPS Hosting. All of the server’s resources are dedicated to you.
Pros: Very stable if setup, configured and maintained correctly. Have good performance.
Cons: You need a good sysadmin or the know how to install, configure and maintain the server.
My Advice: Same as Self-Managed VPS, if you are a good sysadmin or have sysadmin teams on your disposal, go for it. If not, then go with;
7. Managed Dedicated Server Hosting (Cost: $$$)
Most recommended upgrade path from Managed VPS Hosting. All of the server’s resources are dedicated to you, and the provider will provide sysadmin team to help you manage it.
Pros: Very stable
Cons: It is usually priced higher then the rest.
My Advice: Same as Managed VPS, look for provider with good track records, since you are gonna rely a lot on their supports. My preferred go to solutions for commercial and enterprise setup.
8. Smart Server Hosting (Cost: $$ – $$$)
Also the new hype in the industry, basically it is a dedicated server that is virtualized into a single VPS. Also comes with self-managed and managed variants.
Pros: A lot easier to manage, and sometimes more affordable compared to bare metal dedicated server.
Cons: a little bit of performance drawbacks due to virtualization.
My Advice: Managing smart server is far easier compared to bare metal, and can usually reduce your operational expenses. My preferred go to solutions for commercial and enterprise setup.
9. Specialized Application Hosting (Cost: $$$$)
A hosting solution specialized for a single type of application (for example: WordPress Hosting, MagentoCommerce Hosting, etc). The providers will provide you with sysadmins to manage your servers, as well as application admin to manage your application, and developers to fix bugs on your application.
Pros: A full and complete service.
Cons: It has the highest costs amongst all.
My Advice: If you have deep pocket and want a complete peace of mind, single point of contact to a single company, this is your route.