Containerisierung und Clustering
Ressourcenoptimierung: Was weltweit in allen Fertigungsindustrien gilt und im Zuge der Energiewende immer wichtiger wird, ist in der digitalen Welt ebenfalls relevant. Namhafte Autohersteller verschiffen schließlich auch nicht jedes Auto einzeln, sondern mit riesigen Containerschiffen. Etwas Ähnliches geht auch im Softwarebereich.
Die Funktionsweise von Containerisierung & Clustering
Containerisierung ist nichts anderes, als das Verpacken von individueller Software in sogenannte Container. Am Anfang steht immer ein Image – eine Blaupause für die jeweilige Software. In diesem Image werden alle wichtigen Bestandteile zur Verfügung gestellt, die zur Ausführung einer bestimmten Software benötigt werden (Programmcode, Bibliotheken etc.). Dieses Image ist beliebig oft anwendbar und wird von den meisten etablierten Softwareanbietern zur Verfügung gestellt.
Dem Image werden beim Start einer neuen Datenbank weitere individuelle Parameter wie z. B. Speicherort und IP-Adresse mitgegeben. Für einen ausfallsicheren, redundanten Betrieb verwalten wir die Datenbanken mittels einer Container-Orchestrierung clusterübergreifend. Durch diese Praxis haben wir stets mindestens zwei Server, die innerhalb eines Clusters zusammenarbeiten, eine Orchestrierung, die diese Zusammenarbeit managed, sowie eine beliebige Anzahl an Containern, die innerhalb dieses Setups verwaltet werden. Im Falle eines Hardware-Defekts kann somit der Cluster den Ausfall abfangen und die Anfragen auf die zusammenhängenden Server verteilen.
Möchte man seine Datenbank nun ausfallsicher betreiben, lässt man sie mittels eines Container-Orchestrierung-Clusters übergreifend verwalten. Orchestrierung kommt hier vom Begriff "Orchester" und bedeutet nichts anderes, als dass man für ein solches einen Dirigenten braucht, der die verschiedenen Systeme anleitet und Cluster bedeutet, dass hier mehrere Server zusammenarbeiten.
Vorteile durch Containerisierung & Clustering
Bei der Containerisierung und dem Clustering steht vor allem die Optimierung vorhandener Ressourcen im Vordergrund. Die Ressourcen werden nachhaltiger genutzt, lassen sich besser und einfacher skalieren und Fehler sowie Ausfälle können schneller erkannt werden.
Um einige Beispiele zu nennen:
- Dadurch, dass sich Container den Betriebssystemkern eines Hosts teilen, müssen keine ganzen Betriebssysteme emuliert werden. Das hat erhebliche Einsparungen bei Rechenleistung und Stromverbrauch zur Folge.
- Durch die zentrale Verwaltung der Images wird ein erheblicher Aufwand eingespart.
- Security-Probleme werden so deutlich schneller erkannt und behoben.
- Benötigt ein Image ein Versionsupdate, so kann das betroffene Image einfach ausgetauscht, statt aufwändig geupdated werden.
- Das Ausfallen eines Containers beeinflusst keine anderen Container. Was wiederum zu einer höheren Kontinuität im Betrieb führt.
- Sollte sich innerhalb eines Containers schädlicher Code befinden, so greift dieser durch deren Isolation nicht auf das Host-System zu.
Warum wir auf Containerisierung & Clustering setzen
Containerisierung und Clustering ist eine Schlüsseltechnik in der agilen Softwareentwicklung. Durch ihren Einsatz können wir on demand neue Entwicklungs- und automatisierte Testumgebungen erzeugen, was sowohl den Aufwand auf Entwicklungs- als auch auf Qualitätssicherungs-Ebene senkt. Kunden und Projektleiter können mehrere Entwicklungen parallel innerhalb einzelner Testumgebungen prüfen und abnehmen, sodass keine Wartezeiten aufgrund einer singulären Umgebung entstehen.
Des Weiteren bringt diese Praxis eine extrem hohe Ausfallsicherheit sowie diverse weitere Sicherheitsvorteile mit sich, die sich in unserem Arbeitsalltag bereits mehrfach bewiesen haben.