February 17, 2020

Docker images with Node.js

https://frontendmasters.com/courses/complete-intro-containers/alpine-node-js-container/

The classical understanding of an operating system is based on the assumption that a physical computer is used. This perspective was available in the early 1990s. Since the advent of virtualization and docker containers the context has changed. It makes no sense anymore to compare operating systems like Windows 10, Ubuntu and Fedora against each other, but it's possible to compare a 3 GB Fedora ISO image with a 50 minideb docker image. This has complicated many things because it's no longer possible to be part of an operating system community like Debian or Windows, but the system administrator will loose all it's experience from the past.

The most advanced form of running a webserver in the year 2020 is a combination of docker, Alpine Linux and nodejs. The resulting image file has a size of less than 50 MB and it doesn't fit in the categories from the past. Alpine Linux is different from Debian or Ubuntu, it has nothing to do with Fedora Linux and it's not part of the Microsoft world. Instead the correct classification for such a webserver is, that it's virtual, runs with Linux as a kernel and it's using a Javascript for providing the functionality.

What we can say is, that the described Alpine LInux project is located in the github universe. It has to do with social coding. This makes it hard for classical communities like Debian user or Windows Server administrators to keep up. Bascially spoken all the manuals written about Windows Server adminstration and all the information in the debian forum are useless to understand Alpine linux plus nodejs. It's simply a new kind of technology unknown before.

One option to deal with this challenge is to ignore the problem. An old school admin can argue, that node.js is not the right choice as a backend programming language, but only PHP and perl can be used for productive systems. Another system adminstrator can argue, that Open Source in general is a bad idea becaue no support is provided. And a debian adminstrator can argue, that it's possible to use the netinstall CD from Debian which needs only 150 MB and can provide a small debian image as well. All these arguments are wrong, instead they want to explain to the world, that nothing has changed and future webservers are powered by the same technology used in the past.

Because so much things are changing all the time it make sense to provide some stability which is constant. The first thing to mention is, that the outdated technology and the newer technology in the now are both described in books and papers. The library catalog will provide information how a webserver was installed in the early 1990s, in the mid 2000s and in the 2020s as well. A second thing which doesn't have changed in the last 30 years is, that all the technology has to do with writing sourcecode. A c program in the year 1980s has a similar syntax like a c program in the year 2020. And last but not least, technology is usually connnected to profit interests of companies. The early computer revolution in the 1980s was powered by tech companies listed at the NASDAQ, 40 years later new tech companies are listed at the same stock exchange. Especially the Open source movement doesn't have changed this situation. The light houses in open source development like Red Hat, Amazon and Google are for-profit companies. They are not programming software because it's fun, but because it's their business.

The best idea what computer experts from the past are able to do is attack new developments like Alpine Linux. It's the most hated Linux project because it's so different from operating systems in the past. There are many blog postings available in which longterm experts are explaining to the world, why they are stay away from docker in general and alpine in detail.

The main difference of Alpine LInux over classical operating systems is, that it's very efficient. Installing a new system from scratch takes around 2 seconds and the size is around 30 MB. And the exact details how to do this isn't described in classical Linux manuals from the past but they were written from scratch by Alpine developers. So they will become the new gurus who are telling other users what to enter on the command line.

The only good news with Alpine Linux is, that it's based on the LInux kernel which was written in C. It's only a question of time, until Forth developers are feeling motivated to show that world, that they can provide the same functionality with a stack based approach ...