Dr. Mahmoud Reza Rahbar Azad Acando GmbH

Die Vorteile des Einsatzes von containerisierten Datenbanken im Vergleich mit einer traditionellen Betriebsweise sind eindeutig. Sie kommen besonders gut in einer dynamischen Infrastruktur zur Geltung.

Phil Stelzer Acando GmbH

Wer überlegt, mit dem Full-Stack auf Container zu wechseln, kann das bereits jetzt tun. Es bietet sich an, mit einem ersten Microservice Erfahrungen zu sammeln und die Infrastruktur vorzubereiten.

Wer schon mal mit docker run nginx eine nginx-Instanz gestartet hat, wird durch den Usability-Boost von Docker motiviert, tiefer in die Materie einzusteigen. Docker macht es sehr einfach, Applikationen zu konfigurieren und zu starten. Durch einige wenige Befehle auf der Kommandozeile lassen sich viele Aspekte im Lebenszyklus einer Applikation mühelos abdecken.

Am Beispiel des nginx-Containers fällt auf, dass man in den Container noch seine eigentliche Konfiguration hineinbekommen muss. Das lässt sich entweder dadurch bewerkstelligen, dass der Entwickler ein eigenes Docker Image auf Basis des nginx Image baut oder ein Volume in den Container mountet, z. B. über: docker run -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx. Zwar verpsricht der zweite Ansatz höhere Flexibilität, allerdings ist er in einem Container-Cluster-Umfeld wie Kubernetes ungeeignet, da der Container auf einem beliebigen Knoten gestartet werden kann, auf dem die Konfigurationsdateien nicht vorliegen. Kubernetes bietet deshalb für das Konfigurationsmanagement den speziellen Datentyp Configmaps an, um dieses Problem anzugehen. Dieses Beispiel soll verdeutlichen, dass zustandsbehaftete Anwendungen auch in einer containerisierten Umgebung nicht die Ausnahme sind, sondern die Regel. Zwar mag dieses Vorgehen mit den Prinzipien aus dem Zwölf-Faktoren-App-Manifest brechen, aber interessanterweise befinden sich aktuell fünf Datenbanken unter den Top Ten der am meisten heruntergeladenen Container-Images auf Docker Hub. Das spricht klar für ein gesteigertes Interesse an containerisierten Datenbanken. „Twelve-factor processes are stateless and share-nothing. Any data that needs to persist must be stored in a stateful backing service, typically a database.“

Fairerweise muss man klarstellen, dass Twelve-Factor-Apps nicht zwingend containerisiert sein müssen. Mit Sicherheit aber sind Container als Laufzeitumgebung ein innovativer Wegbereiter für viele Aspekte von Twelve-Factor-Apps und damit zukünftig grundlegendes Know-how für Entwickler und DevOps Engineers.

Das Was und das Warum

Im Gegensatz zum Konfigurationsmanagement stehen wir bei containerisierten Datenbanken ganz anderen Herausforderungen gegenüber. Die erste Aufgabe ist, Daten über die Lebenszeit eines Containers hinweg zu persistieren. Des Weiteren sollte natürlich die Datenkonsistenz gewährleistet sein. Darüber hinaus muss eine Datenbank eine hohe Verfügbarkeit  haben, da es sich um einen Kernservice handelt, dessen Zuverlässigkeit und Verfügbarkeit sich meist direkt auf andere Services übertragen. Außerdem sollte nach Möglichkeit der Datenbankcontainer skalierbar sein, sodass weitere Instanzen bei Lastspitzen gestartet werden können (horizontale Skalierung). Letztlich muss sich eine Datenbank natürlich mit gängigen Administrationswerkzeugen leicht verwalten lassen können.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Java Magazin 4.18 - "Security First"

Alle Infos zum Heft
579830798Docker für Datenbanken verwenden
X
- Gib Deinen Standort ein -
- or -