Infrastructure as a Service (IaaS) for developers
I thought servers were for system administrators
I am not a Linux guru. I have done my fair share of development on Linux - using it both as a development environment as well as a deployment target. However, I still hesitate to call myself anything but a newbie when it comes to 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) was old school and was meant for lift-and-shift of legacy workloads (primarily enterprise) to the cloud. I really believed that "developers" wouldn't care about IaaS. I even wrote about it here.
That feeling changed after I joined DigitalOcean. While I still believe that PaaS is seeing a strong revival
Developer doesn't only mean "Code writer"
Initially, I was quite confused about one thing - how can a company that calls itself the developer cloud, offer IaaS as its primary service? After all, developers use infrastructure only as a means to an end. Right?
However, it takes you experiencing a droplet (this is what we at DigitalOcean call a cloud VM) to really understand why developers flock to it and why it continues to be in vogue even when there are other "easier" options available for many use cases. I have come to the conclusion that it is immensely valuable to have your own Linux box which is 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 a real 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 all of these use cases. Personally, for most things I need, I go to the marketplace, and I invariably find a 1-click application.
Btw, I must say that the name "droplet" does contribute to it feeling a little lighter weight than a VM. But maybe that is just my bias as a DigitalOcean employee.
Some (of many) reasons to spin up cloud servers
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 virtual machine) to run your apps, then cloud servers provide a perfect solution for that. Many cloud providers these days provide virtual machine images that come pre-packaged with application stacks along with the base operating system. Some examples are LAMP, LEMP, NodeJS, Django, Laravel and many more. All you need to do is to create an instance of these VM images and just 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 capable machines (powerful laptops) 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 full 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? Try it yourself.
- Run your own Slack alternative: What developer doesn't like to use an open source alternative for a popular app, just for fun? Probably many. But, if you like to tinker around, you might want to satisfy your urge with this chat application.
- 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.
- Run your own VPN: I never knew how much people cared about this thing before I came to DigitalOcean. Apparently running your own VPN server is cool amongst developers. It isn't that hard either.
- Run your own blog: There is a lot of commentary on the internet these days about owning your content on... uh.. the internet - How the "managed blog" might disappear some day, or worse would not contribute towards you getting the benefit of your content's popularity. Running your own blog is the answer.
- Run your own Minecraft server: Need I say more? Of course not.
In conclusion, I feel that the flexibility and control that cloud VMs provide, as well as the orientation of majority of open source software to be optimized for server-based deployment, will continue to maintain the prominence of VMs even amongst developers who otherwise value productivity and expedience while building applications.