Developers often use high-end computers to work. Because they need to build, test, and rebuild their projects, they have high-end CPUs. Because they need everything to go fast, they have SSDs or NVMe drives. And because they need to keep tons of tabs open in their browser, they have 16GB or 32GB of RAM. That kind of hardware costs a lot—developers rarely work on a computer priced less than $1,500. But what if we were to tell you that it’s more advantageous to work directly in the cloud. Do you want to know why? Read on!
1. You will be able to spend less on your computer
OK, let’s say your company is buying you a shiny new, powerful MacBook Pro ready for your arrival. With an Intel Core i7, 16GB of RAM and a 512GB SSD, your computer will cost about $2,400. Or maybe your company can’t afford this spec, and instead buys you a tiny but overloaded Dell XPS 15, with an Intel Core i5, 8GB of RAM and 256GB of SSD space at about $1,500… Think about it—if you got a $500 computer instead, you would still have money left over to spend for the next 2 years—in the MacBook Pro case, that works out at about $80 a month, and with the Dell XPS 15, about $40 a month. Yet for this amount of money, you can rent on-demand servers from Amazon Web Services (AWS), let’s say for 40 hours per week.
Source for cloud pricing: aws.amazon.com/ec2/pricing/on-demand/?nc1=hls on July 11, 2019, for the Ireland region
So in the chart above, we’ve compared the more expensive computers with no cloud solution against the cheap computers with cloud. You can see that both scenarios are similar in terms of price, so the price shouldn’t be a factor when it comes to making a decision.
And in fact, it’s not like you’ll be booting up your server for 40 hours a week for a whole year, because you’ll have morning meetings, vacations… Also, you won’t always need this kind of server to work—on a documentation day, for example, you’ll get a less powerful server, because you don’t need as much. And that’s the beauty of flexibility! Which leads us on to…
2. You will only get the power you need
No two days are the same. Sometimes you’ll need lots of power, sometimes just enough to launch one microservice, so take advantage of running low servers sometimes, because when you do need more power, you won’t go over on your costs!
Also, when you use the cloud, you’ll see new generations of servers several times a year. This means that instead of having to wait until you get your next computer, for the same price you’ll be able to leverage more powerful machines and access some specific CPU flags, or architectures.
And last but not least, you’ll get more power anyway… Your computer will only do web browsing, chatting, SSH’ing, and your server will only run your work, applications, databases, and caches. Everything will be faster, both on your computer and on your server.
3. You’ll be more efficient
Yes, the sane way to work with this is to boot a new machine every morning. That means you’ll have to automate things. You can prepare an environment and boot it every morning, or automate everything you need for your software installation. This is a good habit to form, as you’ll have to work in a script-controlled environment, like a sane production environment.
When you need to pair with a remote coworker, it’s easier to set up. Just add your coworker’s public key and start sharing a tmux session. There’s no need to install ngrok, open ports on your router (if you can… ), or install an SSH server on your local computer.
You won’t have to spend 2 days reinstalling your machine manually if you have to reset it or when you get a new one, as everything is scripted and maintained! You can even work on the automation with your coworkers, so you’ll be able to have a common base, share configurations with them, and even avoid having to say things like, “Well, it works on my computer.”
And if you think you’ll end up having to do everything in terminals, you’re wrong. You can leverage X11 forwarding—it’s easy to configure, though don’t overuse it: using a terminal is better (or not)!
OK, so now you’re convinced, how best to go about this?
Find a way to securely store all your personal credentials, such as SSH private keys, private tokens, and API keys. You can use an encrypted USB key, or encrypted remote storage—just as long as it’s perfectly safe and backed up. Then, start getting used to DevOps tools, such as Ansible, Chef, Puppet, SaltStack. It’s configuration management—you should find it easy to master.
Also, you can prepare a Linux image, for instance using AWSs, AMIs or Packer images, and store it somewhere you can access it (and remember not to put your credentials in it!). That way, when you have to work, everything will be in your git repository, your company secrets will be in your vault, and your editor can be Vim or Emacs—anything else you can forward to your local computer (if your Internet connection is decent).
Finally, set up your extinction process. Check you didn’t forget to push anything and your configuration hasn’t changed.
A little plus—if you lose or break your $500 computer, buying a new one won’t hurt as much! You’ll just need 5 minutes to set up the new one and install a web browser and SSH client. And you won’t lose any of your work!
This article is part of Behind the Code, the media for developers, by developers. Discover more articles and videos by visiting Behind the Code!
Want to contribute? Get published!
Follow us on Twitter to stay tuned!
Illustration by Blok