I pick companies based on their value for money and good reviews - if you offer a good product in a good price, people will recommend you. You can easily find these recommendations on Hacker News, reddit or even Lifehacker (review websites can have fake reviews, but it's significantly harder to forge 1000+ upvotes on reddit or a survey on Lifehacker).
I only recommend tools and companies that have been around for at least couple of years. Hundreds of new companies come and go every year and having a peace of mind knowing that your website (or data) won't disappear the next day is worth paying a few dollars extra.
I give additional points to companies that are developer-friendly. For examples, companies that give free stuff to students (like bunch of companies giving plenty of free resources in the Student Developer Pack) and open source (like DigitalOcean and GitHub giving free t-shirts to open source contributors during the Hacktoberfest), those that write helpful blogs and tutorials (DigitalOcean's tutorials on how to setup basically any kind of service on any kind of machine are insanely easy to follow) or are well known for having a great customer support.
All the tools or services presented here are the ones that I would use (or I'm already using and I'm happy with them).
I'm not working for any of the companies mentioned on this website and none of them have paid me to advertise them.
Some of the links on the website are affiliation links. Affiliation links usually give some additional bonuses for you and me (for example, if you register in DigitalOcean from my affiliation link, you will receive $10 of DO credit and if you like the service and spend more than $25 there, I will also receive $25 of DO credit, which will help me keep this website up). I hope that in the future - with more people using this website - I can negotiate even better bonuses for people registering from those affiliations links. If you don't want to register from an affiliate link, just delete everything after the "?" character in the URL and the affiliation code will be removed.
I recommend companies/services regardless of whether they have an affiliate program or not (I use only the criteria mentioned in the How do you choose which companies/tools to recommend? section). There are many good companies like Amazon or Heroku that don't have an affiliate program, but I still recommend them as they have the best free hosting plans.
I know that there are plenty of companies that might be cheaper than the companies I have suggested. Many of them come and go every day. I want to recommend only the reliable companies that are loved by developers. The companies I suggest are the ones that you can use when working with customers and you can be sure that you leave your customer in good hands (unless I explicitly specify that a given service is here because it's way cheaper than the others - so check my personal recommendations for each section).
If you still think that there are some good services that I missed, please let me know. I will definitely check it out and if it's really good, I will add it here. Please remember, that I want to limit the amount of options to minimum (1-3 options), because there are better ways to spend time than choosing between 50 different hosting options, so for a new company to make it to the list it has to be better than the existing one.
Hmmm, you are probably right. Since all the data is curated by hand, some information might be outdated. Please let me know and I will try to fix it as soon as possible. Also let me know if you think that I should describe some other services/companies.
While it's possible to host your website from your own computer, it's not a good idea. So you will need to pay some company to host your project. The most common option is a cloud hosting service (basically, it's a Virtual Private Server in a cloud) - when you need a server, you start one (small or big machine - it doesn't matter). When you no longer need a server - you stop it. Two main advantages are:
- You are billed for what you use. If you need a server with 1TB of RAM (yes, that 1024 GB of RAM!) for some heavy computations that will take 1 hour - fine - you use it for one hour and you pay for 1 hour.
- It's easy to scale this kind of servers. If more people start visiting your website and you need a more powerful server, quite often a company will provide you with an easy to use interface where you can scale you current machine with just a click of a button.
Each company gives you a different configuration of resources. For the same amount of money, you might get more RAM in one place and more disk space in another. But which resources are the most important ones ?
Well, it depends what is the purpose of your website. If you are planning on hosting huge videos, then you will definitely need a lot of bandwidth and storage. For most cases (a typical website) this is what I would recommend:
- Storage - just go for a faster option (prefer SSD or RAID over a normal HDD). You probably won't need that much space (you can store large files on Amazon S3, which is a crazy cheap option comparing to storing them at your hosting provider), so usually those 20-30 GB are more than enough to start with.
- Transfer - in a typical use case (so when you are NOT planning on hosting videos or large files), the monthly data transfer that provider gives you is more than enough, especially since browsers are caching a lot of resources. For example, this website downloads less than 300 KB of data when you visit it the first time and 2 KB on each next visit, so to use 1 TB of bandwidth, more than 3 000 000 people would have to visit it month.
- CPU - having more than 1 CPU allows you to have concurrent web workers (so 2 CPUs means that your server can respond to 2 requests in the same time). For a small website, having 1 CPU might be enough for a long time (web servers are fast with responding to requests), but if you see that you use a lot of CPU frequently, increase the number of CPUs.
- RAM - having a lot of RAM allows you to cache more stuff (and this in turn allows you to faster respond to HTTP requests) and run some services more efficiently (like the database). When your websites grows and more things happen in the background, RAM can become your main bottleneck.
If I would like to test a hobby project and could still use the Amazon free tier, then I would go for that. It's a good opportunity to get familiar with AWS infrastructure and be ready to use it for bigger projects. If the free tier is not possible and I'm fine with Heroku's Platform as a Service model, then I would go for this solution. Deploying is easy and the free plan is free forever (I sometimes find projects that have not been updated since a long time, but they still run on Heroku).
If you decide to pay some money for the hosting (or you simply can't use any of the free solutions) both DigitalOcean and Linode offer equally great services and you can't go wrong choosing either of them.
Actually, no, you will be just fine without paying for the domain. Well, as long as you are fine using the IP address of your website. For example, did you know that instead of typing www.google.com in your browser, you can type 22.214.171.124 and the browser will take you to the google.com website (here, try it: http://126.96.36.199)? Now, can you imagine telling your friends/customers/boss, that they can access your website by simply typing those 10 difficult to remember digits in their browser? Don't worry, neither can I. That's why you should register a domain name. It will connect the IP address of your server to the domain name that can be typed in the browser.
A good domain name is something that is easy to remember and share with others. But finding a good domain that is still available is difficult.
There isn't much difference between different domain registrars (services that allow you to `buy` a domain), so basically your main criteria would be the price. Some companies will offer you additional services, like `cheap` hosting (which is usually some kind of Virtual Private Server, so you will be better off if you get a cloud hosting instead) or `cheaper` SSL certificates (although, you can get a free SSL certificate thanks to the amazing Let's encrypt project), bundles of domains (buy .com, get .org and .net cheaper), etc. but let's focus on registering a single domain.
If you know beforehand, for how long you will need the domain, you can often benefit from discounts: some companies will offer you a very cheap domain for the first year and some other might give you a discount when buying a domain for a couple of years in advance.
Apart from that, the main difference in the price will depend on which `domain extension` you choose (so called TLD or gTLD). .com will be more expensive than .info or .net, because .com is the most common domain extension. For some people, especially less tech-savvy, the .com domains are the Internet and they might be surprised if your domain name is NOT ending with .com. So make sure you know what you are doing when choosing a different name (on the other hand, a custom domain name might be a nice way to distinguish yourself - how cool would it be to have a www.famousitalian.pizza domain for a pizzeria?).
When it comes to what type of domain you should choose - in 99% of cases you will be fine with .com. It's a standard for most websites and it will allow you to avoid any kind of confusion (people will pay more attention to the website's name, not the extension, when they try to remember it, so they might automatically assume that it ends with .com). However, in some cases getting a custom domain extension might help you to distinguish yourself from others: .pizza for a pizzeria or .museum for a museum can have a very good effect.
When it comes to companies - not always cheaper is better. Some companies will offer you a cheap first year but then next years will be quite expensive and moving your domain to a different company will be a hassle. If you want to validate an idea for a project, then it's fine to choose anything cheap like 1&1. If your project is successful after a year, you probably can afford to pay more or move the domain. If it isn't - well then you probably don't need that domain anymore. If you know that you want to keep the domain for longer, I would use the Namecheap - they have good prices and very good reviews. Namesilo is a compromise between the other two companies - they are slightly cheaper than Namecheap and have better reviews than 1&1.
Infrequent Access Storage is a perfect place to store data that you are planning to access, well, less often. The price of storing data this way is cheaper than in the Standard Storage, but the cost of putting or retrieving data is higher. Also, once you put the data in the Infrequent Storage, you will be charged for at least 30 days of storing it there (so even if you delete the file after 1 day, you will have to pay as it this file was there for 30 days). It seems like a good choice for archival blog posts or older versions of files.
Glacier Storage is a good place for storing files that you probably won't need anymore, but you keep them just in case - like backups (maybe not the most fresh backups, but some older ones). Storing files in the Glacier is the cheapest option, but retrieval will be slow (unless you want to pay extra, so instead of waiting for hours, you will wait for few minutes).
CDN (Content Delivery Network)
Most common benefit is the speed improvement - content of your website is distributed in different Points of Presence around the world. Each time someone visits your website, the CDN will deliver the files from the closest location, making you website load faster. Using a CDN can save you some bandwith (the files are not server from your hosting, but from the CDN).
They can also help with DDoS attacks. Instead of all traffic coming to your servers and killing them almost instantly - unless you are prepared for traffic spikes 1000x bigger than then average (in which case, you are probably terribly overpaying for the hosting most of the time :) ), those companies have specialized solutions for defending against a DDoS (a lot more traffic is needed to take them down).