Der Begriff Containerisierung besagt, dass eine vorhandene Software so in einem Docker Container verpackt wird, dass sie überall, wo Docker installiert ist, ausgeführt werden kann. Docker ist eine freie Software zur Isolierung von Anwendungen mit Containervirtualisierung.
Was ist ein Docker Container?
Ein Docker Container stellt eine abgegrenzte Einheit für die darin enthaltene Software dar. Ohne weitere Softwareinstallation kann die Software in dem Container nur auf Basisfunktionalität des zugrunde liegenden Hosts zugreifen. Die speziellen Anforderungen der Software, z.B. das nötige Java Development Kit (JDK), verschiedene Bibliotheken oder Tools, werden in dem Container gekapselt. Bei der Erstellung des Containers werden diese Abhängigkeiten in der genau passenden Version hinzugefügt und werden deshalb nicht auf dem Host benötigt, der den Container ausführt. Hierdurch ist es beispielsweise auch möglich, dass verschiedene Docker Container die gleiche Bibliothek in unterschiedlichen Versionen benutzen. Da diese Bibliothek nur in dem jeweiligen Container vorhanden ist, kann sie weder in anderen Containern noch auf dem Host in irgendeiner Weise stören. Die Inhalte der Container sind gegeneinander und gegen den Host isoliert.
Wie kann ich meine Webanwendung containerisieren?
Eine typische Webanwendung besteht aus einem Teil, der die Business-Logik ausführt und aus einer Datenbank. Sofern die HTML-Seiten nicht serverseitig generiert werden und es einen Javascript-Client gibt, so wäre dieser der dritte Teil. Diese drei Teile können jeweils in einem eigenen Container bereitgestellt werden und müssen so verschachtelt werden, dass sie sich über das Netzwerk erreichen können. Wenn dies gegeben ist, so kann die Webanwendung mittels Docker auf einem Entwickler-PC genauso ausgeführt werden, wie auf einem beliebigen Server. Ebenso ist der Betrieb in einer Public Cloud möglich. Bei der Ausführung in einer Public Cloud hätte dies noch den Vorteil, dass die Datenbank direkt beim Cloud-Anbieter als verwalteter Service hinzugebucht werden kann. Dadurch spart man einen eigenen Datenbank-Container ein und gewinnt dafür die Verwaltung, Redundanz sowie Backup/Restore durch den Cloud-Anbieter.
Wird die Webanwendung bereits in der Cloud ausgeführt, so ist es nur noch ein kleiner Schritt, um die Webanwendung unter der Kontrolle einer Software für die Verwaltung von Containern, wie z.B. Kubernetes, auszuführen. Dies führt bei entsprechender Konfiguration dazu, dass auch die Business-Logik redundant und ausfallsicher ausgeführt wird.
Vorteile
- Die Installation bzw. das Deployment wird einfacher, da nur noch ein Container und ein Shell-Aufruf genügen, um die Software zu starten.
- Der Container bringt die benötigte Software-Umgebung selber mit und erwartet daher nicht, dass auf dem Host etwas Spezielles installiert wurde.
- Docker Container sind mittlerweile eine verbreitete Technik.
- Docker Container sind die Voraussetzung, damit eine Software wie z.B. Kubernetes sich um die Verwaltung kümmern kann.
- Ein Docker Container kann leicht in einer Public Cloud wie AWS (Amazon), GCP (Google) oder Azure (Microsoft) ausgeführt werden.
- Bei der Ausführung des Containers in einer Public Cloud kann die Leistungsfähigkeit über die verwendeten Compute-Instanzen leicht verändert werden.
- Die Docker-Technologie muss vom Anwender beherrscht werden.
- Daten müssen außerhalb des Containers gespeichert werden, da sie im Container nach der Beendigung verloren gehen. Dies betrifft im Besonderen den Session-State, da bei dessen Verlust die Anwender eine Neuanmeldung durchführen müssen.
Eine Webanwendung lässt sich relativ leicht containerisieren, wenn ein paar Dinge beachtet werden. Bei dem Betrieb in einer Public-Cloud kommt die Verwaltung der Hard- und Software automatisch dazu. Ebenso braucht keine eigene Hardware vorgehalten zu werden. Bei Bedarf kann die verwendete (virtuelle) Hardware leicht geändert werden, um den geänderten Bedarf an CPU und Speicher zu reflektieren.
Wir betreiben so eine Webanwendung für einen unserer Kunden seit 16 Monaten in der Google-Cloud und haben bisher keinerlei Downtime oder sonstige Probleme gehabt. Der Kunde ist äußerst zufrieden mit der Lösung.
Wir helfen Ihnen gerne dabei Ihre Webanwendung zu containerisieren.