I am not a Linux guru. I have done my fair share of development on Linux — using it both as a development environment and a deployment target.
However, I still hesitate to call myself anything but a newbie for any system-level details around Linux — things like filesystems, memory management, networking, security, etc.
I always felt that application developers shouldn’t be required to worry about these things, especially when all they want to do is build and run applications. When I started working in the cloud, my first experience was working in the Platform-as-a-Service (PaaS) and Serverless space.
That experience further solidified my thinking that things like servers, VMs, and the whole machinery of Infrastructure-as-a-Service (IaaS) were old school and were meant for lift-and-shift of legacy workloads (primarily enterprise) to the cloud.
However, now I am convinced that cloud servers for developers are a real thing.
Initially, I was quite confused about one thing — don’t developers use infrastructure only as a means to an end?
However, I learned why developers flock to IaaS and why it continues to be in vogue even when other “easier” options are available for many use cases. It is precious to have your own Linux box, always on and connected to the internet.
Oh, and also, it better not be under your desk, and it is not important whether it is an actual box or just a terminal available to you through some virtualization magic.
Whether it is just learning the basics of cloud, Linux, systems, etc., building web apps, or just running existing open source applications, cloud servers provide an excellent avenue for these use cases.
Here, I try to list a few reasons why I feel like all developers, irrespective of focus — system, backend, front-end, learning, etc. — should consider spinning up their own cloud servers.
Run apps: This is the most obvious one. If you need an environment that bundles compute (a virtual machine), network (some bandwidth), and storage (local disk attached to a virtual machine) to run your apps, then cloud servers provide a perfect solution for that. These days, many cloud providers offer virtual machine images that come pre-packaged with application stacks and the base operating system. Examples are LAMP, LEMP, NodeJS, Django, Laravel, etc. All you need to do is create an instance of these VM images and deploy your application code there.
Run cloud-based development environments: I will be honest, if I need to do development, I prefer to do it on a capable local machine (like a powerful laptop), but every now and then, I do feel that I need a development environment that I could access from something like an iPad. I have heard that the kids these days are doing this quite often. Having a complete replica of Visual Studio Code (who doesn’t love that gem of an IDE) in the cloud and accessible through a web browser, sounds fun. Doesn’t it?
Run your own Slack alternative: What developer doesn’t like to use an open-source option for a popular app, just for fun? Probably many. But, if you like to tinker around, you might want to satisfy your urge with something like MatterMost.
Run your own Zoom alternative: Well, yes, why limit to one kind of collaboration/communication software when you can replace two? Perfect time to both try and potentially contribute to a worthy open-source alternative for video conferencing like Jitsi.
Run your own VPN: I never knew how much people cared about this thing before coming to DigitalOcean. Apparently, running your own VPN server is cool amongst developers.
Run your own blog: There is a lot of internet commentary about owning your content on… uh.. the internet — How the “managed blog” might disappear someday, or worse would not contribute towards you getting the benefit of your content’s popularity. Running your own blog on WordPress or Ghost could be the answer.
In conclusion, I feel that the flexibility and control that cloud VMs provide and the propensity of the majority of open-source software to be optimized for server-based deployment will continue to maintain the prominence of VMs. Even the developers who otherwise value productivity and expedience while building applications will find a lot of value in managing their own servers.
Also published here