I'm pretty sure that all Small Business owners, privately funded startups and entrepreneurs will once in their career bump into this topic.
I've seen more and more people starting to embrace the trend of creating and managing their own websites. This gives them finer control over everything. Once you understand how a system works you can make better decissions. Yes, you still hire a specialized full stack developer and a designer to create your template and setup everything for you. Or you hire a DevOps professional that manages certain tasks once in a while.
But at the end of the day you will want to know how everything works and be able to backup and restore your website yourself in various cases.
Even aspiring web developers and web designers are having doubts about which is the best option.
In this article I'll guide you through all the options so you can make a decision and understand each option ahead of time. The options we'll talk about include the following: Cloud Hosting, VPS, shared hosting or hosting everything at home. Colocation is also included for reference purposes although it has become less obvious as a choice.
Each option also contains a personal recommendation throughout the years. A higher number means it's something you might want to consider in the future.
One of the most important topics in the digital world is Security. Perfect security is HARD to attain. No solution in this list is a perfect security solution.
There are hundreds of cases and examples of security breaches for each one of them.
However, using systems provided by others without access to modify or update the system can be considered a security issue. I recommend contacting a Cyber Security professional to help you understand the specific risks and manage them correctly. In case you need you can leave me a message via the contact page.
You can alernatively jump to the conclusions at the end of this article.
An overview of the "cloud"
The cloud is a very large concept and place. It all started when people needed an abstract word to explain how many different servers can provide various services.
These many servers can provide Iaas (infrastructure as a service), Paas (Platform as a service) and Saas (Software as a service).
Although many people view these differently, I envision them in the following way:
IaaS
Simply explained IaaS is the infrastructure, servers, disk space, network that companies can configure and use.
Usually this is when they want to build their own Platforms and Software.
IaaS usually requires you to install, configure and manage all aspects of the operating system and software used.
An example in IaaS is buying your own VPS. This means you'll need to install all software, configure everything properly and put your website/applications on it.
Linode and DigitalOcean are examples of this.
PaaS
The next step higher is PaaS. This is a "platform" where developers and other more advanced users can setup their environment and for example host a website.
Imagine buying a hosting account on any shared hosting, let's take XServers as an example.
You get a Admin Panel but you need to upload the content and build it yourself. Sure,some web hostings have 1 click installers, you still need to understand the underlying principle.
SaaS
SaaS is usually the software the end user sees and uses.
The end user doesn't have any obstruction as where and how it works in the underlying world.
(S)he just uses it.
Hotmail, Gmail, Youtube are all examples of SaaS. Even wordpress.com can be considered SaaS since you can instantly create an account and don't need to upload/setup anything.
Shopify and Wix are good examples of this. The user can do everything from within their browser without touching other software or knowing anything else.
Even shared hosting companies and VPS hosting companies say they're "in the cloud". Analyzing this will seem to be true because they provide IaaS.
The downside with SaaS is that you're closed in a system and have no access to the underlying system. It's like buying a car that doesn't open the hood, thus obstructing you from even adding window cleaner or changing the oil.
The Cloud Environment
Although the previous section was a small overview, the cloud is much more than that.
There are 3 big competing fortune 100 organizations that offer advanced SaaS, PaaS and IaaS services for almost everything you might need. There are also several smaller companies that offer related services however most people go to these big ones when they need specialized cloud setups.
Amazon, Google and Azure (Microsoft) refered to Big3Cloud from now on.
Al have distinct service names but work in the same way.
One big benefit of using the "cloud" as multiple interconnected services is that you can split the workload into multiple "subservers" of microservices.
This enables any company to scale up very fast.
Having a Node Balancer with Multiple Virtual machines for the code, specialized mail sending apps.
How about queueing your data somewhere else? Analyzing your IoT information it all can be done.
This eases the development process and the specialized "cloud" will save you some time once you surpass the learning barrier imposed.
You can chose to pay by the hour you use the sevice or prepay resources.
This makes it interesting for testing and developing new ideas without having to commit to buying expensive hardware.
Who should use the cloud?
The advanced Cloud features are usually best used by bigger companies or small software companies that don't have the expertise (System Admins, DevOps) or the time to manage their own servers.
Using the cloud environment of Big3Cloud companies mentioned earlier
But not all small businesses want to burn their money that way
Yes, Amazon AWS for example is VERY interesting. It provides everything you might need as a small business or as medium company
But if you look at the price cost of using the Big3Cloud in the long run it can cost more than expected.
Most small business won't need more than 2-3 VPS'es that should equate to $50-$100 per month. Unless they host something similar to Youtube of course.
Using all those small services might equate to more than $500 per month with the Big3Cloud. Yes, we're speaking of a 10x multiplication of price based on something you can buy and setup yourself.
Why? because they make it "easy" for programmers and non DevOps to do many thing with the builtin API's. There is also a steep learning curve before you're able to use everything. The Big3Cloud has made it extremely easy to do anything by providing you with 100 of services which would otherwise require a DevOps to install and setup something manually.
Think wisely before going to any cloud provider that offers multiple highly specialized services. Talk to your account manager or software developer to get his opinion on what's best. If you don't have anyone you can contact me with your question and I'll give in my thoughts.
Security
While speaking of security. It's hard to state that you are 100% secure in the Cloud. There are multiple examples of unsecure cloud systems deployed. My personal opinion is that whenever you deploy something in the cloud even if it seems simpler it gets extremely complex to manage security because of the abstraction services provided.
Pro's
- There is a plethora of services available
- Specific pricing per hour
- Easy integration without having to setup everything yourself
Con's
- Monthly invoice can accelerate if left uncontrolled
- A what "steep" learning curve how all the sevices work
- Can't easily migrate to another provider without having to resetup everything from scratch. It might take longer to set up the same system on another provider than an initial setup on a non cloud based system.
Recommendation: 3/5
Shared Hosting
Shared hosting is the starting point of almost all websites and ALL people have used this once in their lifetime. You may ask why is this so?
It's the "best" option for small business owners that have let's say a small Bed and Breakfast, a Bakery, a Coffeshop or a personal blog.
Well, it's extremely cheap and easy to manage.
Let's explore what Shared Hosting actually is.
Shared hosting as it's name implies is a one or multiple powerful servers which is split to accomodate thousands of websites.
All the hardwork of installing an OS, keeping it up to date, installing an admin panel and configuring everything is done by the hosting company.
As a customer you can buy it and have it running in just a few minutes. You get a small portion of resources out of that big server.
Shared hosting is perfect for small static websites or not so resource intensive dynamic websites like a Blog.
My personal blog/website was setup on a shared hosting for a long time. I've done this because I wanted to have a reliable e-mail traffic before I jumped on to MXRoute and decided to use a small VPS at Linode for my blog.
There are plenty of downsides to this, including security considerations and certain limits when you want to install specific software or scripts.
If your web app requires a special linux module and the hosting company doesn't want to install it.. then you're out of luck and will need a VPS.
Also there are resource usage limits which are not mentioned on the front page when you sign up but become apparent later. They manifest themselves in the form of "fair use policies" or "recommended for use up to a certain number of users per month". Whenever you go above a certain limit your account might be suspended and you'll have to upgrade your subscription.
Consider another downside if someone uses all the CPU and RAM for a certain period, then all websites become.
If you want to go with a shared hosting I recommend you read think about the con's.
I always advise customers to go with a VPS when they have a E-Commerce online shop or any custom created website.
Pro's
- Can be considered cheap if you compare benefits versus cost
- Webmail and mail setup is very easy
- Control Panel to manage every aspect of your website
- One Click INstaller with most
- And many more features
- Perfect for small static websites
- CPANEL usually provides automatic SSL but it's $20/month so maybe not an option
Con's
- Everything is shared so if there is a security breach, your data is not safe.
- Usually slow for sites that require more than 50.000~100.000 visitors per month
- NOT RECOMMENDED FOR WEBSHOPS!
- No access to the underlying system
- Shared IP
- a small VPS can be at the same price as shared hosting
- Capped e-mail sending. Some hosting companies cap you at 300 mails/day.
Recommendation: 3.5/5
VPS Virtual Private Server
The next best step in the online world of web hosting (and app hosting) is buying a VPS.
A VPS is a Virtual Private Server which usually runs it's own separate Operating System. I'd recommend to always use Linux. It's cheaper but it also uses less resources than a windows VPS PLUS you can install much more on it.
The only consideration of a VPS is that it needs additional management in comparison with a shared hosting.
If you don't want to do it, there are many sys admins out there who will happily help you setup everything for nominal fee.
A great thing about a VPS is that you can manage everything. You can fine tune it for your applications.
And you can run various services which otherwise wouldn't be available on a shared hosting. This means a lot if you've hired a developer to build a custom website
I've had a hobby vps for many years hosting various services. I've used it as a VPN.
You can host your own
- mail server
- media center
- proxy
You can read more about the benefits of a VPS and what you can do with it on the following guide
The Ultimate Guide to hosting your own website on your own VPS (Still work in progress:)
Security
A freshly installed VPS is usually vulnerable and needs some attention. I setup a new personal VPS in october. 5 mintues ater it was installed i looked in the logs and there where already login attempts from various compromised machines, The most aggressive attackers are from China.
This can be solved by installing Fail2Ban and doing some customizations that should'nt take too much time.
Always keep it up to date. Don't install too many services.
You will find more info about security here: The Ultimate Guide to hosting your own website on your own VPS
Pro's
- You have full access to your VPS
- You can manage everything
- Your own IP (perfect for seo)
- You can become a reseller
- You can review statistics of everything and don't have to rely on inaccurate data provided by other 3d party apps.
Con's
- Unmanaged VPS might take some time for the initial setup
- No automatic SSL, altough you can buy a SSL cert or get one for free from Lets Encrypt.
- You need to manage your own security or find someone like me to do it for you
Recommendation 5/5
I recommend using a VPS and start learning at least the basics of Linux. I've found Linode to be one of the best VPS providers out there.
Setting up a mailserver on your VPS can be a daunting process. Although it seems simpler I don't recommend setting up your own mail server on your vps. For this I have discovered MXRoute which handle inbound/outbound mails for you at a great price.
If you want to start using your own VPS and don't know where to start or don't have any technical skills you can contact me and I'll help you get started.
Host it at home
How about hosting your sever AT HOME? Or at someone else's home for that matter. Even at your workplace if you own the place.
This might seem like a tragic twist of events but it's how most of the today's multi billion companies started out in the beginning.
Think of this as IaaS!
If you just want to host a hobby project this is an interesting thing. You can install Linux on a old laptop/PC and let it run.
If you want to bring it to a more professional level consider investing in the following
- An Uninterrupted Power Supply (UPS
- 2 internet connections - if one fails, you still need internet access
- A generator
- Server batteries
- 2 workstations/servers
- cloud computing course
- network administration and Linux administration cookbooks
In the long end if you make a small calculation you might say that it's cheaper to host it at home, but it won't be.
If you plan to build a startup then dis consider this step immediately. You will spend more than 30% to 40% of the time managing your system.
This is one third of your time we're talking about. Paying someone to build you concurrent software using a functional language that can run on small VPS'es will make much more sense in the long run. Marketing is much more important if you could spend 10% of your daily time on it
Startups and small business owners already have too much on their head.
And if something wrong might happen and you are not able to fix it then you will usually have to bring a specialist at home or have him(her) sign in remotely.
This could also create a problem..
While other hosting providers might have someone on the clock which you may or may not pay, depending on the problem.
My personal recommendation 2/5
Don't host it at home unless you want to learn the process of cloud computing and do it as a hobby or as an open source project which is not mission critical or you won't expect to generate too much money from. This will avoid you headaches.
It's OK to have a small Raspberry PI to work as a NAS and a small webserver with certain webapplications only you use if you don't require a 99% uptime.
I only host things at home when I want a powerful server for a small period of time. But even then, a cloud option to pay per hour might be better.
Pro's
Access to everything
You can manage everything the way you like
Con's
You need to have a failsafe plan so this means buying a lot of things
Steep learning curve
You can manage everything the way you like
Security aspects of it become it's extremely cumbersome
Co-location
Colocation is when you buy a server and let some other specialized business manage the internet/electricity for you.
I won't go too deep on this topic. It can save you time and money for not having to bother with 2 specialized internet lines and all the other hardware you might need IF you decide to host at home.
Co-location should be a step forward in the process if you ever want to host it yourself.
But you usually need to manage it.. and if something goes wrong, prepare for a ride to the datacenter location.
The cost for colocation is slightly higher than if you bought a few VPS'es and It's only a good fit IF you have let's say a dual 8 core XEN server with 64 GB of RAM that you plan to split in many VPS'es for it's cost to be efficient. All upgrades and maintenance fall under your own worry.
My personal recommendation 1/5
Conclusion(s) and things to consider
Whenever chosing any hosting provider be it cloud, shared, VPS or the rest you absolutely need to consider these very important aspects:
Uptime - What is the guaranteed uptime and that is the real uptime?
99.9% uptime means that your website might be offline for 8 hours and 45 minutes in a whole year. The acceptable range of uptime depends ultimately on you. Although I wouldn't go anyware someone who is 98%. But 99.8 seems reasonable. Take into account that downtime often means that the servers get upgraded and that there are security updates which occur. A shared hosting that boasts 99.999% is probably lying. You can get 99.999% if you use a cloud provider or use multiple VPS'es with failover and high availability but a shared hosting won't ever come close to that in terms of investment to cost ratio.
Speed and Latency
Speed and Latency are CRUCIAL to the wellbeing of websites and applications. This should be one of the most important factors when deciding to go with a provider or not. A 200ms latency can mean lost customers. If you take into account that most websites have multiple CSS, JS and images loaded then you'll most likely encounter big delays and customers just don't want to wait. Testing for speed and latency can be done by setting up a realistic website and reviewing it at different times of the day based on a statistical analysis. Be sure to simulate connections from all over the world if you WANT to be sure that everyone can access it as fast as they can.
Price vs options
Sure, $3.99 sounds cool for a shared hosting. But if you have to PREPAY it for 3 years you're better of to buying a VPS for $5 and pay per month as you need it.
We all want to have thousands of options. But how many of us use those options? Wouldn't it be better to have less options and add options as you need them? Most websites offer you one click installers of certain software so you can easily start out. Looking a little deeper at what happens you should know that a 1 click installer isn't the best option. If you want to have a good speed and a low latency then manual installation and configuration is the best. This is why I advocate for a VPS and having a honest and dependable DevOps as your contact even as a small business. A good Developer with System Administration skills is worth his money and can save you frustrations in the long term.
Statistics and trustworthy reviews
I've overemphasised the need to understand statistics in many other blog posts. It's also something I'll be talking about in my upcoming book (To be announced). Verify statistics and trustworthy reviews. Don't get fooled by a good looking website and by a low price. Take a look at www.lowendbox.com and read about various hosting providers. A good rule is the following, the older a hosting provider is the more likely it's going to be around for a longer time. New hosting providers (under 2 years) can't be trusted due to the fact that you can't be sure they'll be there in the future.
Security
Security really needs a different article. A book can even be written about it since it's so vast and complex. Consider going with a provider that has the most recent updates and patches installed in software AND hardware. Buying a SSL certificate in the long run is worth it rathern than relying on the ones provided by a hosting provider.
The End
Liked the article? Seen a Typo? Find something unclear or you want more info? Contact me!
PSST. If you haven't already moved from a shared hosting to your own VPS give Linode a try.
Use the follwing coupon for free $10 on your account! This means 2 months free
CODE: DOCS10
I provide professional Full Web stack development as well as DevOps services. If you need a custom made application I can create it and configure your VPS at once. Get in touch via the contact page.