Σάββατο 17 Ιουλίου 2021

New technologies in the Linux world


It seems that the computer science is like health science. Every few months new technologies arrise, and people in IT have to read and learn all new stuff about it.

The last years, after the virtualization revolution, we have a new technology approach, the containerized environment.

Containers are used for some years now, but after the initial implementations, some needs were created, so the community came acros adequate solutions. One of the problems, was the scaling and managability of the big number of containers across multiple hosts, which brought us two major players: Kubernetes and Openshift.

But before diving into the characteristics of those two, lets first get a glimpse of the containerized environment.

You can find information regarding containers from: Linux Containers and Wikipedia and a lot of other sources on the internet.

Basicaly what a container is could be explained in the schema from RedHat:


The well known virtualization, starts a virtual computer within a physical computer, and there a whole deployment of operating system and applications is being installed and runs.

On the other hand a container environment uses directly the host with the operating system installed, and a service that serves containers runs. This service takes a package of files, and runs the applications without the need of an extra operating system. Imaging a compressed zip file, that includes the application, the libraries, the configuration files and the content needed to be served as a whole application.

For example, you can have a web service, serving static content (which by the way can be scaled out and it is portable), including the web server, the content and the configuration within a single file/pod/container. This way, you can have more than one container serving a web page, in the same or more hosts.

Now comes the problem. How do you cenrally manage and manipulate all these services (also called micro services), from one location having a way to monitor them also?

The solution was an orchestration tool. 

The major, well know tools are two. Kubernetes and Openshift.

Kubernetes is more a pod manipulation system, targeting on the core of the containerized environment, giving the ability to fully manipulate containers any way the operator sees fit:


On the other hand Openshift is a platform for quickly and easily deploying application containers, which is based on a kubernetes cluster. So in terms of technological approach, kubernetes is the container cluster manipulation application, and Kubernetes extends the clustering into an application deploying solution based on containers.

https://www.openshift.com/products/features

There are various pages on the internet, explaining what are the differences of the two environments, and if someone googles the "kubernetes vs openshift" will find a ton of sites explaining the difference between the two.

Picture from : https://www.susla.edu/page/computer-science


It seems that we will continue learning as the computer technology kees inventing new things, in order to make our science better by the time.



Which is the best linux?


Whell the reply to the question which is the best linux (flavour), is quite easy, all and  none!

And let me explain.

Nowadays, linux has expanded so much that there is a flavour, a version, a distro, for a wide variety of applications. It is like having specific tools for all the things you want or need to do.
The right approach to selecting a linux distribution, flavour, version etc, is to identify what do you need it for, and use the one that is exactly for what you want to do, or at least is the closest one. If you want to drill a hole in the wall, you will not use a hammer or a chainsaw, you will use a drill. The last sentence best describes how you must see the different linux distributions.

Another very important factor is the time of the service delivery. This changes not by the year, as it used to be, but even quartely. Every three months, we have new kernels, distros, apps, technologies etc.

For example, it is very easy to distinguish between linux distros, if you are looking for a home desktop, and a server for hosting applications. For the first you will use something like fedora, or ubuntu, or arch or any other of the wonderfully combined linux distros and flavours, but for the latter you will have to use RedHat, Suse, etc. Please don't get me wrong! I am not suggesting one distro over the other, nor I recomend the ones I wrote as an example. There is a very big list of linux distros, and if you want to find the best one for you, for what you want to do, then have a look at Distrowatch or Wikipedia conserning that.

What you must have in mind, if you don't know what you can use is to research a little, and ask the community members of any known bloggers. But most important of all, use the one that you find easy and closest to what you know and understand. Don't go using productively an exotic flavour you just googled. Stick (at least at the beginning, because the fun in linux is the diversity), to the well known and tested ones.

Just for a hint, and not to be taken as advertisement you could use one of the following distros for destktop working:

Fedora

Linux Mint


Ubuntu

If you can spare some time, you might try all of the above and keep the one that feels easy and closest to your needs. For example, if you know linux, you can use Fedora, which is bleeding edge, and if you are new, you could go with Ubuntu or Mint.
One thing you might want to check, is the community behind the distro. Some people feel comfortable with Ubuntu, because a lot of people are using it and the community has already heard and solved all the questions you might have.
Hint: Keep your data in a seperate disk or partition, so that if you run into a problem you can not fix, you can just reinstall the same distro, or use another one. Basic things, like internet browsing, mail, office applications, video, music etc. are mostly common on all.


And for server working you need to ask yourself the following questions.
1. What am I gong to serve from this server
2. Does the service I am planning to use have a prefered distro
3. Which distro I am able to configure/fine tune best
4. Where can I get help if something goes wrong

For example, if you just want to have web site, then ubuntu server or CentOS (Rocky linux now), migh be the best choice. The same applies for a database server like MySQL or Prostgresql.
In some cases, like oracle database, the right and straightforward solution would be Oracle Linux.
If you need a kubernetes cluster, then the easiest way to go is ubuntu. On the other hand, openshift is a RedHat child, which points the way no its own.

Finaly, from the words of wise men, the best distro is the one that you know best!
Install, test, experiment and be prepared to brake it. Have a quick re-installation plan and in no time you will be able to handle the distro you like.