Those that know me probably know where this is going. However, for those of you that do not know me, I’ll state my stance up front:
I do not understand that logic behind the argument that the operating system will become less relevant in the cloud. That is a fallacy.
I realize that this is a popular messaging approach for some vendors that have a minimal stake or understanding of the operating system. However, please don’t get pulled into that marketing machine. Let’s try and look at this from a more practical standpoint. I often hear this reasoning brought up in the following context:
- You don’t care what operating system you are running in the cloud. You only have to care about your application.
I spend my days building a Platform as a Service (PaaS) offering (aka OpenShift) so I’m particularly sensitive to this argument. While I agree that our goal on OpenShift is to make the developer experience as simple as possible, everything beyond the initial registration experience today is going to take you to interacting with the operating system at some level. Beyond your personal machine setup, technologies like SSH are heavily used in PaaS offerings. In addition to being the backbone of the mundane functions like supporting authentication and providing the underlying protocol for git transfers, it’s also often used directly by developers to support use cases like debugging. When your applications are running on remote machines, being able to port forward, attach local debuggers and poke and prod from your laptop is critical. Technologies in Linux like SSH make that possible.
Okay, so maybe SSH is important, but what other aspects of the operating system should you have to care about? I guess that is where the disconnect is to me. A PaaS, or any cloud service, should support and allow you to leverage common tools and standards to the greatest extent possible. Why? Because a lot of people already know them and it makes those users more productive. Why on earth would your users want to go re-implement everything to your standard? If you love rsync and want to use rsync over SSH, it should just work. If you want to schedule something on your PaaS application, you should be able to use cron. If you want to shell out and script something from your PaaS instance, you should be able to run a Bash / Perl script and have all the standard tools just work.
Now, don’t get me wrong, I don’t think you should be forced to use this stuff but it should be there as an option. Why? Because the tools that have worked in Linux for decades still work extremely well. Maybe better tools will be written in Ruby or Python for your use case and I would encourage you to use them if that is the case. Experimentation is critical, but it’s usually most productive if you are building on a stable base. In the cloud, just like in the data center, that base is Linux.
So far, I’ve really only focused on the end user experience and hopefully it’s apparent that even causal cloud users are still going to interact with the operating system regularly. Now if the end users of cloud services are still going to be exposed to the operating system, imagine the people that are building those services! At the end of the day, your competitive edge will be knowing the operating system so that you don’t waste time rebuilding things that already exist. On OpenShift for example, we use bleeding edge operating system functionality such as Linux control groups and filesystem polyinstantiation to help provide workload management and segment users. We could have built something to do that, but if there is already a robust solution already in the operating system, why build something new? We use SELinux for security because trying to build a rock solid security layer outside of the kernel is practically impossible. We use quota for managing filesystem allocations, we use tc for traffic control, PAM for authentication support and the list goes on and on. Using the functionality that exists in Linux allows us to focus on our goal of making the developer experience in the cloud easier. We get to focus on challenges that the operating system does not solve like automatically scaling your applications. Our understanding of Linux allows us to not waste time reinventing the wheel.
I’m not completely unreasonable. I do agree that the cloud will affect how you use Linux to some extent. The hardware layer is being abstracted to a large degree. That means will probably spend more time using networking technologies like SSH than you will messing with SAN configurations. The toolset you use from day to day will shift slightly, but it will be a slight shift, not a replacement. But at the end of the day, the operating system will still be a critical tool in your toolbox. And in the cloud, that operating system is Linux.