Grundlegende Veränderungen laufen häufig dramatisch ab und sind schwer zu übersehen. Doch manchmal können sie fast unbemerkt und auf Zehenspitzen vonstattengehen – wie im Fall der Softwareentwicklung. Plötzlich ist alles anders und niemand hat es mitbekommen. Welche Faktoren in der Softwareentwicklung ihre grundlegende Bedeutung verloren und welche an Bedeutung hinzugewonnen haben, fassen wir im Blogbeitrag zusammen.
- Hardware ist eine Ware: Vor einiger Zeit war es ausschlaggebend, welche Art von Hardware sich ein Unternehmen anschafft. Heutzutage ist das nahezu irrelevant, da die meistgenutzten Geschäftsanwendungen ohnehin innerhalb einer Virtuellen Maschine oder in der Cloud ausgeführt werden. Somit haben VM zum Bedeutungsverlust von Hardware geführt – sie haben die eigentliche Umgebung so sehr abstrahiert, dass die eingesetzte Hardware bedeutungslos geworden ist.
- Betriebssysteme sind eine Ware: Vorbei sind die Zeiten, in denen Hardware-Hersteller Jahre damit verbrachten, eigene Betriebssysteme zu schreiben – schließlich wollten sie das Beste aus ihrer jeweiligen Plattform herausholen. Jetzt nutzen die meisten Hersteller Windows, Linux und MacOS für ihre Hardware – oder einige andere Nischenoptionen.
- Das User-Interface ist eine Ware: Ja, es gibt einige Unterschiede. Jedoch ist es möglich, einen perfekten Windows‑Desktop unter Linux abzubilden und eine mehr als akzeptable Shell unter Windows auszuführen. Welches Interface man letztendlich wählt, hängt von der persönlichen Vorliebe ab.
- Das Netzwerk ist eine Ware: Die Entscheidung, ob nun Thick- oder Thin-Ethernet-Kabel, stellt keine Herausforderung mehr da. Verantwortliche müssen nicht mehr sicherstellen, dass die Kabel richtig miteinander verdrahtet und die Ports mit der richtigen Leistung versorgt sind. Denn mittlerweile bieten alle Plattformen im Wesentlichen die gleichen Features und Funktionalitäten. Sie tun das, was sie tun sollen: Laufen!
- Die Anwendungsumgebung ist eine Ware: Ist sie das wirklich? Auch das ist eine Entwicklung, die unbemerkt an uns vorbeizog. Die Container leiten das Ende der traditionellen Anwendungsumgebung ein. Keine aufwändige Installation mit nur einer gültigen Gruppe von Libraries mehr; „Side-by-Side Libraries“ und DLL-Konflikte gehören von nun an der Vergangenheit an! Container verändern die Computerumgebung – sie sind das neue Betriebssystem, das alles bietet, was eine Anwendung benötigt und das mobile Arbeiten ermöglicht. Klingt toll, aber was genau sind Container?
Software in a box – Container
Container verrichten im Grunde die gleiche Aufgabe wie ein Schiffscontainer: Sie bieten eine bequeme Möglichkeit, eine Anwendung so zu verpacken, dass sie in sich geschlossen, leicht zu bewegen und einfach zu implementieren ist – ähnlich wie VDI-in-a-Box, die in einem Bildschirm „verpackt“ ist.
Es gibt drei Varianten von Containern
- Virtuelle Maschinen (z. B. ESX, Hyper-V, KVM): Schon seit Jahren auf dem Markt, ermöglichen sie es, ein Standard-Image zu erstellen, das auf verschiedenen Hosts ausgeführt werden kann. Allerdings fressen sie viele Ressourcen und sind in der Einrichtung zeitaufwändig.
- System-Container (z. B. Virtuozzo, OpenVZ): Wie VMs sind Container ein vollständiges Systemabbild, doch beim Container wird der Kernel mit dem Host geteilt. Sie bieten eine vereinfachte Möglichkeit, eine virtuelle Maschine mit dem gleichen Image wie dem des Hostsystems zu erstellen.
- Anwendungscontainer (z. B. Docker): Hier beginnt sich die Welt wirklich zu verändern. Jeder Container wird durch eine Textdatei definiert – sie richtet die von der Anwendung benötigte Umgebung ein. Dann kann sie überall ausgeführt werden, ganz ungeachtet der zugrundeliegenden Plattform. Jedem Benutzer steht eine unabhängig arbeitende und in sich geschlossene Kopie der Anwendung zur Verfügung, die bei jeder neuen Ausführung in ihren ursprünglichen Zustand versetzt wird. Die Anwendungen benötigen auf diese Weise kaum Rechenleistung und schaffen dieselbe Leistung wie eine lokal ausgeführte Anwendung.
Container haben dennoch mehr zu bieten als nur Komfort: Die User führen jede Anwendung in einer eigenen geschlossenen Umgebung aus, daher können mehrere Kopien auf derselben Plattform laufen. Dies ermöglicht so genannte Microservices: Eine Möglichkeit, eine Anwendung in kleine zustandslose Komponenten aufzuteilen und nach Bedarf zu skalieren. So wie Schiffscontainer einst die Welt der Fracht revolutionierten, so verändern heute containerisierte Mikroservices die Anwendungsentwicklung.
Dieser Wandel erfolgt natürlich nicht von heute auf morgen, doch gibt es aktuell den Trend, bestehende Anwendungen unverändert in einen Container zu verschieben. Zudem finden neue Entwicklungen neben der Verwendung mikroservicebasierter Architektur statt – diese sollen einen schnellen Weg bieten, die Vorteile von Containern voll auszuschöpfen.
Neue Orchestrierungsmöglichkeiten sind notwendig
Um all dies am Laufen zu halten, bedarf es eines neuen Typs von Scheduler, genannt Orchestrator, von denen Kubernetes eines der bekanntesten Beispiele ist.
Bleiben wir beim Beispiel des Schiffscontainers: Kubernetes übernimmt den Part des Steuermanns, der die Richtung vorgibt und auf Ereignisse reagiert (Funfact am Rande: Dies ist auch die Bedeutung des griechischen Wortes).
Die Nutzung von Containern nimmt stark zu und daran wird sich so schnell auch nichts ändern. Sie sind ganz einfach zu flexibel und transportabel, um von der Branche ignoriert zu werden.
DataCore und Container
Und was genau hat DataCore als Anbieter für Software-Defined Storage mit Containern zu tun? Wie bereits erwähnt, hat sich die Softwareentwicklung tiefgreifend verändert und Anwender dadurch in eine neue Ära katapultiert. Mittlerweile ist die gesamte Infrastruktur standardisiert. Die persistenten Daten bilden hier eine Ausnahme, da Nutzer noch auf die Dienste des Host-Betriebssystems oder auf Funktionen einzelner Hardware-Anbieter angewiesen sind.
Hier kommen wir ins Spiel: Verdient eine neue Ära nicht einen neuen Storage Stack?
Mehr Informationen zum Thema Docker-Container sind hier zu finden. Was Software-Defined Storage von DataCore für Container anbietet, ist auf GitHub.