Hoe ziet een servercomputer er eigenlijk uit?
Toen ik net begon met ontwikkelen, had ik een vaag soort fantasie over de ‘server’. Ik stelde me een gigantische supercomputer voor zoals in The Matrix, met groene letters die als regen naar beneden vielen, ontelbare kabels die overal door elkaar liepen en enorme machines die blauw licht uitstraalden onder een indrukwekkend mechanisch gebrom.
Maar de eerste serverruimte die ik in het echt zag, een IDC, zag er totaal anders uit. Die platte machines in racks bleken, als je ze openmaakte, uiteindelijk ook gewoon ‘normale computers’ te zijn, met CPU, RAM en SSD, niet eens zo anders dan mijn laptop.
Wat is het dan precies dat mijn laptop een ‘persoonlijke pc’ maakt en die stoere machine een ‘server’ noemt?

Degene die geeft (Server) vs. degene die vraagt (Client)
De definitie van een server is eigenlijk heel simpel. Het is degene die ‘serveert’, die iets aanbiedt. De client aan de andere kant is degene die iets opvraagt.
Met andere woorden: zelfs mijn oude laptop wordt een ‘server’ zodra ik hem 24 uur per dag aan laat staan en externe verbindingen toesta. Maar waarom gebruiken we mijn laptop dan niet als server? Waarom betalen we flink om cloudservers zoals AWS EC2 te huren en daarop dat lastigere ‘Linux’ te installeren?
Waarom juist Linux? (Kan Windows dan niet?)
Windows is echt handig. Je klikt gewoon met de muis rond en alles voelt intuïtief aan. Waarom houden serverontwikkelaars dan toch vast aan Linux, dat eruitziet als niets meer dan een zwart scherm?
1. Een GUI is luxe (kosten en efficiëntie)
Als Windows opstart, zie je een bureaublad, pictogrammen en een bewegende muiscursor. Om al die grafische UI in stand te houden, verbruikt de computer voortdurend CPU en geheugen. Maar een server heeft helemaal geen monitor nodig. Hij kan ergens aan de andere kant van de wereld staan en uitsluitend data verwerken. Een Linux-server in CLI-vorm gooit alle graphics eruit en laat alleen tekst over. Als Windows van 100 eenheden kracht er 30 gebruikt om het scherm te tekenen, kan Linux die volledige 100 in de dienst zelf stoppen.
2. Vrijheid van gedwongen updates (stabiliteit)
Wie lang genoeg Windows gebruikt, krijgt vroeg of laat te maken met “Opnieuw opstarten voor updates”. Op een persoonlijke pc is dat vervelend, maar te overleven. Je loopt even weg en komt terug. Maar wat als een server die 24/7 moet draaien ineens zelf besluit uit te schakelen? Dat is een ramp. Linux kan vaak jarenlang blijven draaien zonder reboot, tenzij er iets groots gebeurt, zoals een kernelupdate.
3. Licentiekosten (geld)
Windows Server is duur. Soms hangt de prijs zelfs af van het aantal CPU-kernen. Linux daarentegen, zoals Ubuntu of CentOS, is meestal gratis en open source. Voor een bedrijf dat duizenden servers moet draaien, is het antwoord vrij duidelijk.

Waarom Linux niet gewoon boven op Windows installeren? (Het begin van virtualisatie)
Op dit punt krijgt een beginnende developer, oftewel de vroegere versie van mijzelf, een slim idee. “Als Windows handiger is, waarom installeren we dan geen Windows Server en draaien we Linux daarbinnen als een ‘Virtual Machine’?”
Natuurlijk kan dat. Maar dat is alsof je een tent in een huis opzet en daarin gaat wonen.
De huiseigenaar, Windows, moet ook eten, en de huurder, Linux, ook. De verspilling van middelen is enorm. Daarom gingen developers een betere vraag stellen: “Kunnen we, in plaats van een compleet zwaar OS te installeren, niet alleen precies die ‘omgeving’ isoleren en draaien die we echt nodig hebben?”
Uit die gedachte is precies Docker ontstaan, oftewel containert technologie.
Volgend verhaal: een wereld zonder muis
We begrijpen nu waarom servers Windows hebben ingeruild voor Linux. Maar iets met je hoofd begrijpen en het met je handen bedienen zijn twee verschillende dingen. De eerste keer dat je verbinding maakt met een Linux-server word je niet begroet door de vriendelijke Start-knop van Windows, maar alleen door een knipperende cursor op een zwart scherm.
Volgende keer kijken we naar overlevingsvaardigheden voor deze onbekende Linux-terminal, CLI: bestandsrechten beheren en een server besturen zonder muis.