Linux Distribution Selection for Infrastructure Scaling
The choice of Linux distribution influences the support for your software and should therefore definitely be considered when scaling your infrastructure. We will help you with the decision-making process.
To set up a cloud server, you usually need to install an operating system. Windows servers and other Unix variants used to be popular in certain commercial environments, but now almost everyone relies on Linux. This is due to its broad support, flexible licensing options and general prevalence in the server world. There are many Linux distributions to choose from, some of which are supported by commercial vendors and some of which are not.
Overview of the Linux Landscape
Ubuntu
Ubuntu is one of the most popular Linux distributions for both servers and desktop computers. New versions of Ubuntu are released every six months, and there are new long-term support versions every two years that are supported for five years. Most educational content about Linux relates to Ubuntu because of its popularity, and the wide available support speaks for itself.
Debian
Debian is at the origin of Ubuntu, which means that its basic architectural choices usually influence the Ubuntu versions. Debian uses the same .deb package format and apt package manager as Ubuntu. Debian is not as popular for production servers due to its conservative package selection and lack of commercial support. However, many users choose Debian because of its portability and because it serves as the foundation for many other Linux distributions on various platforms, including Raspbian, the most popular operating system for Raspberry Pi.
Red Hat Enterprise Linux (RHEL)
Red Hat Enterprise Linux or RHEL is the most popular commercially supported Linux distribution. Unlike the Debian family, RHEL uses .rpm packages and a package manager called dnf, as well as its own tools. For licensing reasons, Red Hat is only used where there is a commercial support contract.
Rocky Linux
Rocky Linux is similar to Ubuntu compared to Debian downstream from Red Hat and unlike RHEL, it is free like most other Linux distributions. This makes it a popular choice for users who have adopted Red Hat tools but may not use commercial support from Red Hat. There used to be a distribution called CentOS that took on the same role as Rocky Linux, but its release model has changed. Rocky Linux versions closely follow RHEL versions, and most documentation can be shared between the two.
Fedora Linux
Fedora Linux is upstream from Red Hat and is used in both desktop environments and servers. Fedora is the de facto development environment for most RHEL packages and for the Gnome desktop environment used as the default by Ubuntu and others.
Arch Linux
Arch Linux is another popular desktop-oriented Linux distribution that is not part of either the Debian or Red Hat Linux families, but offers its own unique package format and tools. Unlike the other distributions, Arch Linux does not use version numbering – its packages are always the latest available. For this reason, it is not recommended for production servers, but offers excellent documentation and can be very flexible for experienced users.
Alpine Linux
Alpine Linux is a minimal Linux distribution that does not include many common tools by default. Historically, there have been many Linux distributions created with this in mind. Alpine is often used in modern containerized deployments like Docker, where your software needs a virtualized operating system to run, but needs to keep the overall footprint as small as possible. Typically, you don’t work directly with Alpine Linux unless you want to prototype a container.
There used to be more differences between distributions in terms of the init system, window manager and other libraries, but almost all major Linux distributions have now standardized on systemd and similar tools.
Choosing the Right Distribution
There are many other Linux distributions, but most of them can currently be understood in relation to these seven. As you can see from this overview, most Linux distribution selection criteria depend on the following factors:
- Whether you have requirements for a Debian-derived or a Red Hat ecosystem.
- Whether you are developing primarily for the cloud, desktop or in a container.
- Whether you need the latest available or stable packages.
Choosing a distribution depends on your preferences, but if you’re working in the cloud and don’t have production-related requirements for the Red Hat ecosystem, Ubuntu is a popular default choice. You can also check the available packages for a particular distribution in its public package repository. For example, the packages for Ubuntu 22.04 “Jammy Jellyfish” are hosted in the Jammy section of Ubuntu.com.
Package Management
Most Linux distributions also differ significantly in how third-party packages – packages that do not come from the repository’s own package sources – are created, found, and installed. Red Hat, Fedora, and Rocky Linux generally use only a few popular third-party package sources in addition to their official packages, in keeping with their authoritative, production-oriented approach. One of these is the Extra Packages for Enterprise Linux, or EPEL. Because the RHEL ecosystem differentiates between commercially supported and unsupported packages, many popular packages available on Ubuntu out-of-the-box require configuration from EPEL to install on Red Hat. In many other cases, the availability of packages in your distribution’s own repositories often depends more on authority and responsibility for maintenance. Many third-party package repositories enjoy wide recognition, but they may be outside the purview of your distribution’s maintainers.
Ubuntu allows individual users to create personal package archives, or PPAs, to maintain third-party software for others. However, if you use too many PPAs at the same time, you may run into compatibility issues, as Debian and Ubuntu packages all have specific requirements. Arch Linux has a single repository for user-friendly packages, aptly named the Arch User Repository or AUR, and while their approach seems more chaotic in comparison, it can be more convenient in practice if you use dozens of third-party packages.
You can also avoid adding complexity to your system package manager by installing third-party software via Homebrew or Docker instead. Although “dockerized” or containerized deployments can have overhead efficiencies in terms of disk consumption and installation (this is the area where Alpine Linux is being considered), they are portable across distributions and do not impose version requirements on your system. However, it should be taken into account that packages not installed by the system package manager do not receive automatic updates by default.
Conclusion
The now widespread use of Docker and other container engines means that your choice of distribution no longer affects the software you can run as much as it did in the past. However, it still plays an important role in supporting your software and should play a significant role in scaling your infrastructure for production.