Docker und DevOps - Teil 3
So hat sich das Verständnis von Servern verändert
Nachdem wir uns mit den Konzepten einer dynamischen Infrastruktur und Infrastructure as Code beschäftigt haben, wollen wir nun noch einen kurzen Blick auf Docker, Amazon Web Services und DevOps werfen, da diese das Verständnis von Servern und wie diese verwendet werden nachhaltig geprägt haben.Docker als neuer Standard der Softwareentwicklung
Infrastructure as Code wird oft in Verbindung mit Docker angetroffen. Docker führt eine andere Denkweise für das ein, was bisher unter dem Begriff „Server“ verstanden wurde. Mit Docker wird eine Anwendung in kleinere Teile aufgespaltet, die als einzelne Dienste in Docker-Containern ausgeführt werden.Oft findet man im Zusammenhang mit Docker einen Vergleich zu Containerschiffen. Jede Anwendung befindet sich in diesem Fall in einem separaten Container auf einem Containerschiff. Die Docker-Container können miteinander kommunizieren, sodass die Anwendung wiederum als Ganzes ausgeführt werden kann.
Modularisierung von Anwendungen
Das Konzept der Modularisierung ist dabei kein geheimer Trick, sondern ein Standardvorgehen in der IT: Große Probleme werden gelöst, indem man sie in kleinere Teile aufteilt. Anschließend werden die einzelnen Lösungen mit dem verbunden, um das größere Problem zu lösen. Natürlich hat dieses Verfahren seinen eigenen Namen: teile und herrsche (oft auch lateinisch „divide et impera“).Bei höherer Komplexität ist Modularisierung das Schlüsselwort, um „Glück“ durch Vorhersagbarkeit und Zuverlässigkeit zu ersetzen. Aber es lässt sich auch ohne Docker modularisieren, weswegen das alleine noch nicht der Punkt ist. Die Modularisierung ist bis hierhin zunächst nur eine Voraussetzung für den Einsatz von Docker.
Eine der größten Herausforderungen beim Verwalten von Serverinfrastrukturen für komplexe Anwendungen besteht darin, zueinander passende Versionen für Bibliotheken, Basisanwendungen und andere Komponenten von Drittanbietern zu finden. Mit anderen Worten, es ist oft ein zeitraubendes Puzzle, einen Server für die Installation einer Anwendung vorzubereiten.
Da mindestens aus Sicherheitsgründen Updates benötigt werden, beginnt das Puzzle mit jeder neuen Version von vorne. Neben der Kompatibilität sind auch Optimierungen eine Herausforderung. Eine Konfigurationseinstellung, die ideal für Modul A ist, kann das Modul B verlangsamen.
Wäre es nicht eine gute Idee, wenn jeder Teil (Service) der Anwendung eine eigene technische Plattform hätte? Das ist in der Tat die Kernidee von Docker. Die Umgebung für jedes Modul der Anwendung wird als Docker-Container bezeichnet. Das mag zunächst so klingen als wäre es umständlich, aber in der Praxis ist es einfacher, mehrere Docker-Container zu verwalten, als das Puzzle zu lösen. Infrastructure As Code ermöglicht dabei die effiziente Kontrolle über mehrere Docker-Container.
Virtualisierung von Anwendungen
Die Anwendung oder besser jedes Modul der Anwendung wird mit dem zugrunde liegenden System gebündelt. Wie bereits erwähnt, vereinfacht das die Einrichtung und Verwaltung der Anwendung und ihrer Umgebung. Docker macht die Anwendung letztlich auch unabhängig vom Betriebssystem.Dies ist im Wesentlichen das Gleiche, wie es aus der Virtualisierung bekannt ist. Das Ausführen eines Windows-Servers als virtuelle Maschine macht ihn unabhängig von der Hardware – und damit den jeweiligen Treibern. Die Hardware ist dann immer die Gleiche: die „simulierte“, virtuelle Hardware. Und diese ändert sich nicht, wenn eine Serverhardware ausgetauscht wird. Docker kombiniert die Vorteile der Virtualisierung mit den Vorteilen der Modularisierung von Anwendungen.
Betriebskosten senken mit Amazon Web Services
Amazon Web Services verwendet eine Technologie, die im Wesentlichen mit der von Docker identisch ist. Mit der Docker-Technologie kommt auch eine andere Denkweise in das Hosting. Man bezahlt jetzt eher für Rechenzeit als einen Server zu mieten. Darüber hinaus können die Docker-Container perfekt auf die Anforderungen zugeschnitten werden.Das bedeutet, dass sich gegebenenfalls auch ein günstigeres Amazon Web Services-Produkt wählen lässt, wenn dies für die Anforderungen ausreicht. Amazon verwendet tatsächlich Konfektionsgrößen wie S, M, L, XL, XXL, bietet aber auch Produkte mit unterschiedlichen Features an.
Das richtige Produkt in der richtigen Größe für jeden Docker-Container zu finden, kann eine Herausforderung sein, zahlt sich aber aus, indem die Betriebskosten an das gewünschte Maß an Leistung und Zuverlässigkeit angepasst werden können.
Bessere Zusammenarbeit von Software-Entwicklung und IT-Betrieb dank DevOps
Die Entwicklung von Web-Software und die Ausführung auf Servern waren früher zwei verschiedene Tätigkeitsbereiche. Technologien wie Docker und Cloud-Dienste wie Amazon Web Services führen zu einer anderen Denkweise über die Infrastruktur. DevOps bedeutet, dass das Software-Entwicklungsteam einige Verantwortlichkeiten von den Server-Administratoren übernimmt.Da die Infrastructure as Code definiert ist, gibt es eine sauber strukturierte Schnittstelle zwischen Softwareentwicklern und Server-Administratoren. Die Softwareentwickler haben die tiefgreifendsten Kenntnisse der Anwendung, der Module der Anwendung und wie sie interagieren. Es ist naheliegend, dass die Spezialisten, die nah an der Software-Entwicklung sind, mit ihrem Wissen die jeweiligen Teile der Infrastruktur definieren.
Benötigen Sie Unterstützung?
Amazon Web Services bietet eine große Anzahl von Produkten (die man auch „Dschungel“ nennen könnte). Die Richtigen zu finden und richtig einzurichten, ist nicht immer einfach. Wir können Sie bei der Einrichtung einer Amazon Web Services-Infrastruktur unterstützen oder diese Aufgabe komplett für Sie übernehmen.Wir unterstützen Sie ebenfalls beim Dockerisieren Ihrer bestehenden Anwendung. Als Teil der DevOps-Idee überwacht und optimiert h.com auch die Infrastruktur und passt sie an, wenn Software-Updates dies erfordern. Wir sind da, wo Sie uns brauchen. Sprechen Sie uns an.
Christian Haag, Gründer und Geschäftsführer von h.com networkers GmbH