SE. schrieb:
Ich bin in dem Bereich wirklich Laie
Jup und ich kenne Konzerne mit 4stelliger Anzahl Linuxserver und der überwiegende Anteil ist SLES oder RHEL.
Ja die Entwicklungen von MicroOS/immutable OS (SLES als auch RHEL) ist bekannt und ist toll für
neue Deployments wenn die Anwendungen, die darauf laufen sollen, das auch mit machen und am Ende ist ein OS nur ein Mittel zum Zweck um $Anwendung zu betreiben. Ein OS ist kein Selbstzweck also außer halt für die Trolle in ihren Distro-Flamewars.
Geh den Gedanken mit immutable doch mal weiter und werden wir mal konkret anhand eines Beispiels: Eine "WebApp" wie es heutzutage heißt. Du hast da also einen oder mehrere Webserver die dir deinen statischen Content ausliefern und dahinter hast noch einen Application Server, vielleicht einen tomcat oder so etwas in der Art mit dem eigentlichen Programm und mit dem Programm bearbeitest du Kundendaten die du natürlich in einer Datenbank hälst.
Weil wir ja groß denken hast du also 1+ Loadbalancer, dahinter 2+ Webserver und 2+ Application Server und 1x DB Server als Primary für Schreiboperationen und 2+ DB Server als Secondary für Leseoperationen und 1+ Fileserver, die den statischen Content der Webseite/-anwendung hosten.
Loadbalancer, Webserver, App-Server inkl. der Anwendung als solches kann man voll immutable betreiben mit ner sinnvollen CI/CD denn da hat man ja keinerlei persistente Daten. Solche Systeme die man früher also klassisch installiert und dann gepatcht hat regelmäßig könnte man auch jedes Mal weg schmeißen und neu ausrollen und wenn man es noch mehr verkleinert könnten das auch alles Container sein.
Kommen wir zu den persistenten Daten, den Servern die diese Daten bereit stellen und den Storages/Dateisystemen dieser Server. Diese Systeme sind alles aber nicht gerade immutable und da willst du vor allem eine Stabilität des Services. Ja auch das kann man mit verteilten Systemen erreichen und auch gerne in schnellen, kurzen Steps patchen aber sobald das Änderungen am Dateisystem beinhaltet, riskierst du Inkonsistenten wenn manche Systeme (des Storages oder der DBs) andere Versionen nutzen als der noch ungepatchte Rest. Das klappt nur wenn sich da nix (grundlegendes) ändert oder du musst alles in einem Rutsch patchen -> Downtime. Machbar aber User wollen tagsüber keine Downtime und Admins wollen nicht nachts oder am Wochenende arbeiten.
Hinzu kommt: Was wenn deine Anwendung nicht immutable ist sondern einfach nur stateful an allen Ecken und Kanten weil bei der Entwicklung niemand daran gedacht hat?
Dafür kannst dann das angesprochene Suse/SLE MicroOS oder auch das normale SLES nehmen mit btrfs und Snapshots denn gewisse Pfade sind da von Snapshots exkludiert. Du als Admin musst nur sicherstellen, dass deine stateful Anwendung sich nur in diesen Pfaden bewegt und die Snapshots kann man dann wunderbar vor Updates oder Änderungen nutzen. Immutable ist das aber auch nicht.
Im übrigen verwendet SLES zwar standardmäßig btrfs für / seit SLES 12 aber in der Doku steht auch weiterhin dass multi device usage nur mit den btrfs Raid Modi 0/1/10 unterstützt ist.
Natürlich arbeiten RHEL, SLES & Co auch zusätzlich an immutable OS Lösungen wenn sie weiterhin Geld verdienen wollen bzw. auch im Cloud & Containerumfeld mit verdienen wollen.