How the cloud grew up around Linux



Open source software has had a powerful effect on computing. When the ARPANET/NSFNET was sold to different companies in the 1990s to create the commercial Internet, nobody expected it to grow as fast as it did. It was the open source Apache Web server running on the open source Linux (and BSD UNIX) operating system that ultimately allowed the Internet to grow quickly and attract the attention of the world. Apache on Linux allowed anyone with a computer and Internet connection to implement a Web server to serve Web pages as part of the World Wide Web of Internet resources. In short, if there was no open source Web server or operating system freely available in the 1990s, the rise of the Internet would have been dramatically slower or even non-existent until the 2000s. The Internet and the World Wide Web grew up around open source and Linux.

Two decades later, we find ourselves running a plethora of complex Web apps (and the associated data) on millions of servers across the Internet in a wide variety of weird and wonderful ways. These Web apps and the servers that host them are now referred to as the cloud instead of the World Wide Web, and just like the Internet of the 1990s, today’s cloud technologies grew up around, and continue to revolve around, Linux and open source.

The public cloud consists of servers on the Internet that can be rented commercially by anyone, whereas the private cloud consists of servers within an organization’s private data center. Regardless of whether you are connecting to a public or private cloud provider, there are three main ways that you can host Web apps on a cloud server: SaaS, PaaS and IaaS.

The simplest way is to pay a cloud provider to run your custom Web app on their servers, or create a private cloud in your organization specifically to run a Web app; this is often called Software as a Service (SaaS). Facebook, Google, Twitter, Instagram, Steam, and Netflix are all examples of SaaS.

Another method involves paying a cloud provider to run your containerized Web apps within the cloud. A container is a subset of an existing operating system that contains just enough operating system software to run a specific Web app. Programs such as Docker can be used to execute hundreds or thousands of these containers on a single operating system installed on a cloud server. This type of structure is often called Platform as a Service (PaaS) since you are paying to run your containers on someone else’s platform. Amazon Web Services (AWS), Microsoft Azure, and Google App Engine are examples of PaaS cloud providers.

A third method involves renting hardware from a cloud provider to run your own virtualized operating systems. You must then configure these operating systems and the Web apps that they run, as well as provide ongoing security and maintenance for them. This approach is called Infrastructure as a Service (IaaS).

So where does Linux fit into SaaS, PaaS and IaaS? Since Linux doesn’t require expensive operating system licensing in addition to the cloud provider costs, it’s the operating system that is most commonly used by SaaS, PaaS and IaaS.

Hosting operating systems within the cloud that require expensive licensing will drive up the cost of the service that the Web app provides to customers, and result in the Web app being non-competitive in the market. Since Linux is easily-customizable, you can create very small Linux containers that use a minimal amount of resources in a cloud data center, and many PaaS providers allow you to choose from a large selection of small, pre-configured Linux containers that contain the supporting open source software needed by your Web app. Additionally, most IaaS providers offer several free pre-configured Linux operating system templates that you can easily copy to create your virtual operating systems on their cloud.

In other words, the zero-cost nature of Linux makes it an easy choice for a cloud container or operating system. Plus, the abundance of open source software available for Linux allows developers to build rich Web apps. When combined, these factors made Linux the premier cloud operating system a decade ago, and as cloud technologies (e.g. Docker, Kubernetes, Hadoop, Spark, NoSQL, OpenStack, etc.) were developed over the past decade, they were first or exclusively developed for use on Linux.

Moreover, as the number of cloud-based Web apps skyrocketed during the past decade, so did the need for developers to test their Web apps within the cloud before making them publicly-available. In other words, developers needed the ability to automatically build their apps and push them quickly to pre-configured containers or virtual operating systems within the cloud, often several times a day, to test new Web app features. This is called Continuous Deployment (CD) and can potentially involve several different pieces of cloud management software working together (e.g. Jenkins, Git, Ansible, Puppet, etc.). The IT administrator (a.k.a. system operator, or sysop) responsible for supporting these developer needs is called a devop today, and it shouldn’t be a surprise that nearly all software that devops use to provide CD run exclusively on Linux.

In summary:

  • The open source nature of Linux made it the premier choice for cloud containers and virtual operating systems.
  • Most cloud-based Web apps run on Linux, using a rich set of open source Web technologies
  • Nearly all cloud-based software technologies were developed for Linux
  • If you work with cloud technologies in any capacity (cloud administration, cloud security, devop), you’ll likely be working very heavily with Linux

In fact, Linux is so pervasive within cloud environments today, that popular culture often equates cloud technologies with Linux….as shown in the picture at the top of this post!