Warning: this post may get fairly technical and borderline cloud-evangelical, so proceed with caution.
There was an age in computer history when “servers”really only consisted of mainframes, people took turns to access them and virtually nobody owned a personal computer. It was a very different time – almost hard to imagine now; especially for younger generations.
Jump forward some 20 years – Linux is born, its success fuelling an open-source culture that is going to empower the world. Slowly, but surely the personal computer is picking up speed (no pun intended) and the internet grows bigger and bigger.
But where is the average tech enthusiast or, say, developer during these years? You know, the one who wants to learn about computers and the internet; who wants to use them to create, to make something new. Well, being self-taught or majoring in computer science, people are doing just that, learning and creating. But they are missing access to a critical element of the internet – servers. If you want to run a server and learn all about this separate universe of computing, to learn how to bring your awesome apps and services to the world, you are stuck with some pretty limiting options… You have to be able and willing to pay for a blade (your own or rented) or at the very least you have to have a second PC to repurpose and play with. The obvious choice for learning, fiddling around with servers, different operating systems and applications, etc. is to use your old computer. Sure, it’s pretty slow, but you probably aren’t going to use a GUI OS anyway, so you proceed… Now you’re getting into Linux; you’ve installed some nice things, you’ve made some cool stuff and you want to share the results with your friends or you just want to be able to access it from work. You now have to deal with networking issues like port forwarding and firewalls; and things. You realize that if your friend is going to be testing the new service at their leisure, or if you want to do a small public beta, you have to keep the machine on 24/7. Well, that’s inconvenient – and what if the power goes out?
Your home UPS can’t handle the extra load. Or what if the internet is interrupted, or if its performance suffers while you use it for other stuff? After all, the connection wasn’t all that suitable, even if you’re just pushing your weekend project through the home pipes. You deal with these problems, because there is no better way at this point.
Skip to present times – the cloud era. Virtualization is everywhere – on your PC and on the bare metal at the data center. Oracle’s VirtualBox gives you the ability to have as many virtual machines on your laptop as you wish at zero cost. Companies like Amazon, Linode and DigitalOcean are taking the cloud computing world by storm with their innovative offers, while there are many others who offer cheaper and cheaper VPS services. Today you can get a 512MB, 1TB/m, 20GB SSD “droplet” from DigitalOcean, which is only going to cost you $5/month. Compare that to anything else we had before. I mean, seriously, can you even pay the electricity of your old PC for that kind of money? In fact, after you’ve learned the very basics of a particular OS locally in VirtualBox, I don’t see a reason why you wouldn’t just work in the cloud. Amazon’s micro AWS is free for the first year and with the price of DigitalOcean there isn’t anything to think about, really. You can learn in a production environment and reimage the server as often as you want. You can make fatal mistakes and revert them in seconds. No flash drives, ISOs or CDs needed – no risk and no pain involved. You won’t be dealing with home routers or local hostnames, etc. – you can learn how to set up a server by doing it for real-real. But now, whoever has stuck reading for this long is going to say that you don’t actually need to be in the cloud to learn all these things – you can do everything locally and open your ports and show your setup to the world. Correct, but leaving aside the 24/7 availability and the independent bandwidth, let’s consider the following scenario:
Why not get the full experience of the complete stack and feel confident that you’re ahead of the game? Then send your friends and family a link to brag about your 1337 XP.
Also, consider this – how much easier is to just be able to reimage your server with a different distro or just do a 1-click install of LAMP, Docker or WordPress – all things that DigitalOcean can do, btw. With the service you can set up local networking, backups and you can take snapshots of your system which you can restore later.
You have a perfectly-functioning setup, but are curious to see the new features in the nightly build of the software you’re using? No problem; take a shapshot, update and revert back once you’ve satisfied your curiosity. You don’t need to worry about complicated downgrade procedures, uninstalling or you name it – just travel back in time.
Another situation may be if you’re learning about networking and VPNs, for example. You’ve set up your test server at home and you forwarded the ports on your router – good job, it works! Now you go work for your client and you realise that you have to do a bunch of things in iptables to secure the service – things your home setup never prompted you to think about before. I’m sure I can go one with these examples forever, but this already turned out to be quite long… you get the point 🙂
TL;DR: Nowadays we have cloud computing & virtualization, which makes it extremely cheap & easy to learn server, coding & development skills straight in a production environment. Using the cloud is easier than playing around at home and you learn skills that are more applicable to the workplace and the real world.