What is Fault Tolerance?

Scalability, high availability, containers, fault tolerance and eventual consistency. Tech terms can be confusing to those new to server administration or development. In the coming weeks, we’ll be breaking down common — yet potentially confusing — terms you will undoubtedly come across in your learning journey.

toleranceOne of the primary themes of this series — and a keystone part of working as a systems administrator, engineer, or developer — is not just getting servers to run, but keeping them running. While we’ve already address scalability, high availability, and eventual consistency, another piece of the puzzle is not just avoiding failure, but how to gracefully navigate and plan for any potential failures in the future. For this, we plan out fault tolerant systems. (more…)

What is Eventual Consistency?

Scalability, high availability, containers, fault tolerance and eventual consistency. Tech terms can be confusing to those new to server administration or development. In the coming weeks, we’ll be breaking down common — yet potentially confusing — terms you will undoubtedly come across in your learning journey.

evenconsEarlier on the Linux Academy blog, we addressed the topic of NoSQL databases; one of the qualities of these databases often being eventual consistency. However, what does eventual consistency actually entail? What are the benefits and trade-offs of an eventually consistent system?

Eventual consistency relies on having a distributed system, or one that utilizes multiple nodes to share the work. Centralized systems cannot be eventually consistent.

Environments that rely on eventual consistency allow for a change to happen on one of the node replicas that is eventually propagated to the other nodes. This process is not instantaneous, although the time it takes for all nodes to reach the same, updated state depends on how the nodes are configured to handle the data. This is done through synchronous messaging or asynchronous messaging. (more…)

Linux Release Cycles

Linux distributions are often released at predetermined intervals; the process of how a system is released during these intervals are known as the release cycle.

There are two primary types of release cycles within the Linux community: Standard or stable releases and rolling releases.

Standard/Stable Releases

Distributions that follow the standard release cycle are those that are often released at a fixed point of time — every six months, two years, et cetera. Major updates rarely occur in between standard releases, bar any important security updates. This is not to say packages or the operating system is never updated in between releases, but updates are limited to bug fixes, not the introduction of new features. These are called point releases because a decimal is added after the release (ex. Debian 8.1).

Those unfamiliar with Linux may look to Windows or OSX for a comparison of release types. Windows and OSX both use the standard release system, and upgrading to a new version of the operating system often involves an entire reinstall of the OS, or at least time and some patience for everything to download and upgrade.

A distribution developed under a standard release cycle traditionally handles packages to maximize stability. Distro developers take the needed packages for the distro, freeze these packages at a predetermined point in time, and spend part of the development process testing and examining how these packages work against the system to ensure stability. This means there is often more than one working branch of a release, and more than one version of an operating system can be supported and maintained at one time. For example, at the time of this writing, Debian still supports installs of both Debian 7 and 8.

Due to the nature of standard releases, they are popular choices for servers, especially those in large or complex ecosystems, where sysadmins require function over having bleeding edge updates and features. However, this often means packages can be months or even years behind their actual latest releases to ensure compatibility with the distro. Newer version of packages can always be downloaded and installed through source.

LTS

Some distributions, such as Ubuntu, offer LTS or long-term support versions of their distributions. These distributions are maintained for a longer-than-usual time by the developers. Because the support and stability this provides, LTS systems are optimal for hosting servers.

End of Life

Standard releases of operating systems have a limited timeline in which support is provided. In an example above, we note that Debian 7 and 8 are both maintained distros at this time. This means they receive the necessary security updates and bug fixes. Once a distribution reaches end of life status, however, it is no longer maintained and thus considered a security risk to use. Debian 6, which was released in February 2011, just reached EOL in February 2016. Because of this, it should no longer be used in environments, especially critical ones.

Rolling Releases

In contrast to standard releases, rolling releases are not released in a major update schedule, but continually receive small updates, additional features, bug fixes and security updates throughout the course of its entire life as a distro. If Debian is maintaining multiple branches of its distribution by having both 7 and 8 active, then rolling release distros, like Arch, work from a single branch. While Arch has release numbers (concurrent with the month and year it is being released), these work more as “updates” than the full installation process of a standard release distro. These updates are pulled in through the package manager from remote repositories, like any other update.

When using a rolling release distro, you are on the “bleeding edge” — this means new features are added promptly, package versions are in-line with (or closer to) the package maintainer’s releases, and bug fixes tend to be released sooner. However, this also means less testing goes into each release, and instance-breaking updates are a greater risk. Because of this, rolling releases are often more popular as desktop operating systems or workstations.

Unstable/Testing Releases

Some standard release distributions offer users access to their unstable or testing branches. These are closer in nature to rolling releases than the standard because they receive updates frequently and are constantly in development. Debian users, for example, may use Sid, the unstable branch of Debian. This allows for users to be more on the bleeding edge while still using Debian. These unstable releases have the same risks as traditional rolling releases, however — but also the same benefits.

Linux Academy Learning Paths!

A few weeks ago, Linux Academy introduced Learning Pipelines.  We are pleased to announce that this feature has gotten a significant upgrade and has been renamed to Learning Paths!

New Features for Admins

Inserting Sections into a Learning Path

By popular demand, we have created the ability for admins to drill down and make specific topics available to their users, rather than assign specific courses.  This will allow you to create with precision the consumable content that your team needs while effectively and efficiently managing the amount of time they need to spend learning.

To add sections to a Learning Path, you will see a new button:

4

You can add sections exactly how you would add courses, assessments or quizzes.  After clicking this button, you will first choose the topic, then choose what course you’d like the section to come from.

5

(more…)

What is High Availability?

Scalability, high availability, containers, fault tolerance and eventual consistency. Tech terms can be confusing to those new to server administration or development. In the coming weeks, we’ll be breaking down common — yet potentially confusing — terms you will undoubtedly come across in your learning journey.

wordavailClosely related to a system’s uptime and functionality is the concept of high availability. A highly available system ensures above-average availability for the users who are accessing your website, application or program.

Key points of high availability for a system are locating and removing all single points of failure, preventing data loss, and ensuring operational stability at peak times. This is primarily achieved through redundancy. (more…)