Plattformunabhängigkeit bezieht sich auf Software, die auf einer Vielzahl von Hardwareplattformen oder Softwarearchitekturen ausgeführt werden kann, Sie wird als plattformunabhängig, plattformübergreifend, portabel oder auch als Cross-Plattform bezeichnet.

Plattformunabhängige Software kann in einer Vielzahl von Umgebungen ausgeführt werden, wodurch die Verwendung im gesamten Unternehmen vereinfacht wird. Sie erfordert weniger Aufwand und Planung als der Einsatz einer plattformabhängigen Software.

Die Bedeutung von Plattformunabhängigkeit ist, dass der von Java kompilierte Code (Bytecode) auf allen Betriebssystemen ausgeführt werden kann. Ein Programm ist in einer Sprache geschrieben, die für Menschen lesbar ist. Ein Compiler ist ein Programm, das den Quellcode eines anderen Programms aus einer Programmiersprache in ausführbaren Code übersetzt, wodurch die Software plattformunabhängig wird.

Warum ist es so gefragt?

Wenn Sie ein Softwareprodukt entwickeln und verkaufen, kann Ihnen die Unterstützung von Java für die Plattformunabhängigkeit dabei helfen, in mehr Märkten zu konkurrieren. Anstatt beispielsweise ein Produkt zu entwickeln, das nur unter Windows ausgeführt werden kann, können Sie ein Programm schreiben, das außer mit Windows ebenso mit OS / 2, Solaris und Linux funktioniert.

Das Bedürfnis nach Plattformunabhängigkeit entstand aufgrund der unterschiedlichen Betriebssysteme, die heutzutage genutzt werden. Wenn ein für Windows geschriebener Code unter Mac OS ausgeführt werden sollte, hatte das multiple Fehlermeldungen zur Folge und der Code musste entsprechend der jeweiligen Hardware- und Maschinenkonfiguration geändert werden. Die dadurch für Programmierer verursachten Probleme, machten die Code-Portabilität zum Gebot der Stunde, da der Gebrauch des Internets rasant zunahm.

Plattformunabhängige Sprachen

Java ist die bekannteste plattformunabhängige Sprache. Einige andere P.I. Sprachen sind Ruby, Lisp, Schema, Scala, Clojure, Python, Perl, PHP, C #. Außerdem können die Kriterien für die Entscheidung über die Plattformunabhängigkeit von Person zu Person variieren. Beispielsweise sind Sprachen wie C / C ++ auf Quellcodeebene plattformunabhängig, verlieren jedoch die Plattformunabhängigkeit, sobald der Code kompiliert wird, da nativer Code plattformspezifisch ist.

Java hingegen wird aufgrund seines Bytecodes als plattformunabhängig bezeichnet. Java-Code wird zuerst zu Bytecode kompiliert und in eine JAR-Datei gepackt. Diese Datei wird dann auf verschiedenen Plattformen identisch ausgeführt, z. B. auf verschiedenen Versionen von Windows und Linux. Dies ist in erster Linie der Grund für die Beliebtheit von Java, da es das Versprechen „Write Once Run Anywhere“ einhält.

Plattformunabhängigkeit und Virtualisierung / virtuelle Server

Die Distributed Management Task Force (DMTF) ist eine Organisation mit mehr als 4.000 aktiven Mitgliedern, 44 Ländern und fast 200 Organisationen. Es ist die Branchenorganisation, die die Entwicklung, Annahme und Förderung interoperabler Managementstandards und -initiativen leitet. Unter besonderer Berücksichtigung des Cloud Computing führte die DMTF das Open Virtualization Format (OVF) ein und unterstützte mehrere Initiativen für interoperable Cloud-Technologien, wie den Open Cloud Standards Incubator, die Cloud Management Working Group (CMWG) und die Cloud Audit Data Federation Working Gruppe (CADFWG).

Das Open Virtualization Format (OVF)  ist ein herstellerunabhängiges Format für Verpackungsstandards, das die Portabilität und Bereitstellung virtueller Appliances auf verschiedenen Virtualisierungsplattformen erleichtert. OVF kann von unabhängigen Softwareanbietern (ISVs) zum Packen und sicheren Verteilen von Anwendungen verwendet werden, und Systemabbilder können auf mehreren Plattformen importiert und bereitgestellt werden, wodurch eine plattformübergreifende Portabilität ermöglicht wird. Die Spezifikation ist das Ergebnis der Zusammenarbeit von Dell, HP, IBM, Microsoft, VMWare und XenSource bei der Definition eines plattformunabhängigen Virtualisierungsformats für das Packen von Software-Appliances. Ein erster Entwurf wurde der DMTF im Jahr 2008 vorgelegt. Derzeit hat die DMTF die Version 1.1.0 der Spezifikation veröffentlicht, die auch als ANSI-Standard INCITS 469-2010 (American National Standards Institute) ratifiziert wurde. Der Hauptzweck der Spezifikation besteht darin, ein plattformneutrales Format für die Verteilung von Softwarepaketen bereitzustellen.

Plattformunabhängigkeit und Betriebssysteme

Ein Betriebssystem ist reine Software, während eine Plattform die Kombination zwischen dem Betriebssystem und der Art der Hardware ist, wie der CPU, auf der es ausgeführt wird. Java wurde so konzipiert, dass sie auf mehreren Hardwaretypen und Betriebssystemen ausgeführt werden kann. Durch die Plattformunabhängigkeit von Java, können Unternehmen mit mehreren Computertypen eine spezielle Anwendung einmal schreiben und von praktisch jedem verwenden lassen, anstatt mehrere Versionen desselben Programms schreiben, verteilen und warten zu müssen.

BYOD und Plattformunabhängigkeit

Mit BYOD können Unternehmen wie auch Lehrer allgemeine Funktionen, die in den meisten Mobilgeräten zu finden sind, nutzen. Es enthält u. a. Tools zur Datenorganisation und webbasierte Anwendungen. Kontinuierlich entstehen neue Funktionen und machen BYOD langfristig zu einem ausgesprochen nützlichen Produkt für die Technologieintegration. Mit der Konvergenz von weit verbreitetem Breitband und dem Wachstum von leistungsstarken, plattformunabhängigen webbasierten Werkzeugen, ist BYOD sowohl pädagogisch als auch unternehmensspezifisch wertvoll.

Bei einem Hypervisor, der auch als Virtual Machine Monitor (VMM) bezeichnet wird, handelt es sich um eine leistungsstarke Software zur Virtualisierung von Computerressourcen. Der Hypervisor weist den verschiedenen virtuellen Maschinen Rechenressourcen wie Arbeitsspeicher, CPU oder Festplattenspeicher zu. Er ist außerdem für die Trennung der virtuellen Maschinen untereinander zuständig und erlaubt den parallelen Betrieb mehrerer verschiedener Betriebssysteme auf demselben Computer.

Allgemeine Informationen zum Hypervisor

Die Virtualisierung von Computerressourcen und Betriebssystemen hat ganz neue technische Möglichkeiten mit sich gebracht. Statt ein komplettes Computersystem inklusive Hardware und Software aufzubauen, können Sie sich durch den Einsatz moderner Virtualisierungslösungen, wie beispielsweise Hyper-V oder VMware schnell und unkompliziert eine virtuelle Version davon schaffen. Virtualisierung kommt beispielsweise in der modernen Softwareentwicklung zum Einsatz, um eine sichere Test- und Entwicklungsumgebung zu schaffen. Damit dies realisiert werden kann, muss eine virtuelle Maschine auf einem physischen System betrieben werden. Zwischen diesen beiden Schichten muss es eine Entität geben, die eine Vernetzung herstellt und für die Kommunikation zwischen diesen beiden Ebenen zuständig ist. Als Vermittler kommt an dieser Stelle eine abstrakte Schicht zum Einsatz – der sogenannte „Hypervisor“.

Was ist ein Hypervisor?

Eine virtuelle Maschine (VM) nutzt als Basis einen physischen Computer, wie beispielsweise einen Server oder Desktop-PC. Konkret bedeutet das, dass eine VM auf die physische Hardware angewiesen ist. Ein Hypervisor stellt eine Schicht zwischen der Hardware- und der Virtuellen-Ebene dar, die für die Verwaltung zuständig ist. Prinzipiell handelt es sich bei einem Hypervisor um eine Software, welche die Kontrolle und Verwaltung über die benötigten Ressourcen übernimmt. Die auch unter der Bezeichnung Virtual Machine Monitor (VMM) bekannte Software, weist im Rahmen eines Computersystems CPU- und Netzwerk-Ressourcen sowie Festplatten- und Arbeitsspeicher zu. Aus diesem Grund können auch mehrere unterschiedliche virtuelle Maschinen auf einem einzelnen Host-System effizient betrieben werden, da sich ein Hypervisor darum kümmert, dass es nicht Konflikten zwischen den einzelnen VMs kommt und dass die benötigten Kapazitäten zur Verfügung gestellt werden.

Eine virtuelle Maschine bekommt von den Organisationsschritten des Hypervisors in der Regel nichts mit. Der Virtual Machine Monitor abstrahiert die zur Verfügung gestellte Hardware auf solche Weise, dass die VM diese von einer dedizierten Hardware-Umgebung nicht unterschieden kann. Da sich bei virtuellen Maschinen die Anforderungen in Abhängigkeit von den laufenden Anwendungen ständig ändern, ist ein bedeutender Vorteil des Hypervisors, dass er Ressourcen dynamisch und in Echtzeit zur Verfügung stellt. Auch davon bekommt die virtuelle Maschine nichts mit. Sie hat nämlich keine Möglichkeit, das Vorhandensein anderer VMs auf derselben physischen Hardware zu erkennen. Durch die strikte Trennung zwischen den einzelnen virtuellen Maschinen, wird nicht nur für eine effiziente Verteilung der Ressourcen gesorgt, sondern es steigert auch die Sicherheit. Der Hypervision stellt sicher, dass eine VM nicht auf Dateien einer anderen VM zugreifen kann.

Die hohe Effizienz und Flexibilität von einem Hypervisor

Ein Hypervisor bildet nur eine abstrakte Schicht, die der virtuellen Maschine eine simulierte Hardware-Umgebung zur Verfügung stellt. Eine virtuelle Maschine, also das Gastsystem, ist nicht an einen bestimmten Hypervisor oder an ein bestimmtes Host-System gebunden. Damit bietet die Virtualisierung ein hohes Maß an Flexibilität und ist insbesondere für Anbieter von Cloud-Services sehr interessant. Cloud-Anbieter können die virtualisierten Umgebungen einfach auf andere physische Server verschieben, ohne dass die Programme, die auf den virtuellen Maschinen laufen, neu installiert oder konfiguriert werden müssen. Ein Hypervisor im Rahmen einer Virtualisierungssoftware, wie beispielsweise Hyper-V oder VMware, stellt dem Anwender außerdem eine Vielzahl unterschiedlicher Verwaltungsoptionen bereit. So können Anwender Gastsysteme schnell und einfach organisieren, einstellen und erstellen.

Verschiedene Typen im Überblick

Prinzipiell wird zwischen zwei verschiedenen Hypervisor-Arten unterschieden, und zwar Typ 1 und Typ 2. Der Typ 1 wird auch als Bare Metal Hypervisor bezeichnet. Diese Art des Virtual Machine Monitors funktioniert so, dass er direkt auf die physische Hardware aufgesetzt wird. Da ein solcher Hypervisor keine Verbindung zu dem Betriebssystem des Hosts hat, muss er alle benötigten Gerätetreiber selbst zur Verfügung stellen. Der Systemressourcenverbrauch ist bei dem Typ 1 relativ gering, da die Ressourcen nicht über das Betriebssystem des Hosts bereitgestellt werden. Diese Art des Virtual Machine Monitors ist in erster Linie an Anwender gerichtet, die damit einen dedizierten Server für Virtualisierung einrichten möchten. Für kleinere Projekte ist dieser Typ zu kompliziert und zu aufwendig.

Der Typ 2, der auch unter der Bezeichnung Hosted Hypervisor bekannt ist, ist hingegen auf ein bestehendes Betriebssystem angewiesen, das wiederum die physische Hardware als Basis nutzt. Ein Hypervisor des Typs 2 wird wie eine gewöhnliche Software auf den Computer installiert und verwaltet nach der erfolgreichen Installation alle Virtualisierungsprozesse. Die Gerätetreiber müssen hier nicht wie beim Typ 1 im Hypervisor selbst installiert sein, sondern dank der Einbindung in das bestehende Betriebssystem werden diese automatisch bereitgestellt. Dieser Komfort hat jedoch auch einige Nachteile, die sich in erster Linie auf eine schlechtere Performance auswirken. Ein beachtlicher Teil der Ressourcen wird nämlich bereits vom Betriebssystem des Hosts in Anspruch genommen, sodass für die virtuellen Maschinen weniger Ressourcen übrigbleiben. Dank der einfachen Installation sowie der schnellen und unkomplizierten Installation ist dieser Typ in erster Linie auf die Bedürfnisse kleinerer Projekte ausgelegt.

Containering und containerbasierte Virtualisierung waren in den letzten Jahren der „letzte Schrei“ in der Software-Entwicklung. Dabei handelt es sich um einen Ansatz der Virtualisierung, bei dem die gesamte Virtualisierungsebene als eine Anwendung innerhalb des Betriebssystems realisiert wird. Im Gegensatz zu der klassischen Virtualisierung wird hier auf den Einsatz eines sogenannten „Hypervisors“ verzichtet. Die containerisierten Anwendungen haben einen direkten Zugriff auf den Kernel des Host-Betriebssystems und kommen aufgrund ihrer hohen Flexibilität und Portabilität in erster Linie in modernen Cloud-Umgebungen zum Einsatz.

Containering im Detail

Seitdem die offene Software Docker im Jahr 2013 der breiten Öffentlichkeit vorgestellt wurde, zieht sie das Interesse von Entwicklern und IT-Architekten auf sich. Das innovative Projekt versprach damals die IT-Landschaft genauso zu revolutionieren, wie es die Virtualisierung einige Jahre zuvor gemacht hat. In den vergangenen Jahren hat sich die Containering-Technologie flächendeckend durchsetzen können. Dennoch bleiben jedoch viel Fragen unbeantwortet: Stellen sie die bessere Alternative zu den traditionellen Virtualisierungstechniken dar oder sind sie nur eine weitere Möglichkeit, um Anwendungen in der Cloud zu virtualisieren und bereitzustellen? Dass sich sowohl IBM, als auch Red Hat und Microsoft an der Weiterentwicklung von Docker aktiv beteiligen, lässt allerdings vermuten, dass es sich hierbei um eine zukunftssichere Technologie handelt.

Was ist also Containering und wo kommt es zum Einsatz? Containering ist in erster Linie dafür vorgesehen, um Software ohne größere Anpassungen auf unterschiedlichen Plattformen verlässlich laufen zu lassen. So kommt es beispielsweise immer wieder vor, dass Entwickler den geschriebenen Code von dem eigenen Computer in die Testumgebung schicken müssen. Von dort wird er nach erfolgreichen Tests in die Produktion verlagert.

Da der Code im Rahmen eines Containers verschickt wird, wird keine umfangreiche Konfiguration und Verwaltung seitens des Empfängers benötigt. Obwohl sich all dies praktisch anhört, gibt es auch einige Nachteile. Falls die Entwicklungs- und Betriebssystemumgebungen nicht identisch sein sollten, kann es zu Problemen kommen. Nutzt der Entwickler beispielsweise Python 3.0, die Produktion jedoch die Version 2.7, kann bei der Ausführung des Codes vieles schiefgehen. Zu ähnlichen Problemen kommt es, wenn beispielsweise zum Programmieren Red Hat Linux und in der Produktion Suse Linux zum Einsatz kommt.

Welche Vorteile bietet Containering?

Bei der traditionellen Virtualisierung setzt sich ein Software-Paket aus einer virtuellen Maschine (VM), einem Betriebssystem und Applikation zusammen. Ein dedizierter Server mit vier virtuellen Maschinen würde über einen Hypervisor vier separate Betriebssysteme bereitstellen müssen. Im Vergleich dazu muss auf einem Server mit vier containerisierten Anwendungen nur ein Betriebssystem bereitgestellt werde, das sich alle vier Container teilen.

Konkret bedeutet das, dass Container deutlich weniger Ressourcen verbrauchen als traditionelle virtuelle Maschinen. Aus diesem Grund lässt sich auf einem einzelnen Server eine größere Anzahl an Containern ausführen als auf einer virtuellen Maschine. Ein weiterer wesentlicher Vorteil von Containern ist, dass sie in der Lage sind, sehr schnell zu booten. Während virtuelle Server in vielen Fällen einige Minuten benötigen, um hochzufahren, stehen containerisierten Anwendungen fast sofort zur Verfügung.

Angesichts dieser enormen Vorteile, kommt selbstverständlich die Frage auf, warum Containering die traditionellen Virtualisierungstechniken nicht bereits komplett abgelöst hat. Der Hauptgrund hierfür ist die Sicherheit, da Container keine so hohe Sicherheit bieten wie traditionelle VMs. Eine potenzielle Sicherheitslücke im Betriebssystem kann Auswirkungen auf alle anderen Container haben, die auf demselben OS laufen. Container bieten nicht dasselbe Niveau an Isolation, wie man es von traditionellen Virtualisierungstechniken gewohnt ist.

Vielmehr eine Ergänzung als ein vollständiger Ersatz

Containering sollte man vielmehr als Ergänzung zu den traditionellen VMs betrachten als einen vollständigen Ersatz. So können beispielsweise Container in leichtgewichtigen virtuellen Maschinen ausgeführt werden, wodurch eine weitere Isolationsschicht eingeführt wird und so die Sicherheit maßgeblich erhöht wird. Darüber hinaus muss weiterhin alle Hardware (Server, Netzwerke, Storage) mittels Virtualisierung verwaltet werden, sodass Containering daran nichts ändert. Container lassen sich also gar nicht als ein vollwertiger Ersatz für VMs nutzen, denn sie bauen auf der Virtualisierung auf.

Darüber hinaus gibt es mittlerweile eine Vielzahl von Linux-Distributionen, die sich auf Containering spezialisiert haben. Hierzu gehören neben CoreOS und Snappy Ubuntu auch Red Hats Project Atomic sowie Photon von VMware. Auch Microsoft investiert viel in Containerisierungstechnologien, sodass Docker auf Windows-Server-Plattformen und im Rahmen der Azure-Cloud genutzt werden kann.

Docker und weitere containerbasierte Technologien

Docker ist das bekannteste Tool aus dem Segment der Containerisierungstechnologien, welches die Erstellung und den Betrieb von Containern ermöglicht. Beim Containering handelt es sich jedoch nicht um eine neue Technologie. Im Rahmen verschiedener Linux-Distributionen werden Container in Form von LXC bereits seit fast zwei Jahrzehnten genutzt. Darüber hinaus bieten Oracle, Sun sowie Solaris und FreeBSD ähnliche Tools für die Erstellung und den Betrieb von Containern.

Docker hat im Laufe der Jahre einige prominente Konkurrenz bekommen. Eine sehr gute Alternative ist das Command-Line-Tool „rkt“ von CoreOS. Der wesentliche Vorteil dieses Tools ist, dass es sowohl mit eigenen als auch mit Docker-Containern problemlos umgehen kann. Rkt wendet sich jedoch grundsätzlich an kleinere Unternehmen, während Docker in erster Linie für den Einsatz in großen Cloud-Umgebungen ausgerichtet ist.

Bei Docker handelt es sich um eine Softwareplattform, mit der Entwickler schnell und einfach Anwendungen erstellen, testen und Nutzern bereitstellen können. Mit Docker können Entwickler Software in standardisierte Einheiten, die sogenannten Container, verpacken. Diese Container beinhalten alles, was zum Ausführen der verpackten Software benötigt wird, einschließlich aller Bibliotheken, der benötigten Laufzeitumgebung, Systemtools und Code. Mittels Docker lassen sich Anwendungen schnell und ohne größeren Aufwand in jeder Umgebung bereitstellen und nach Bedarf skalieren.

Docker im Detail

Bei Docker handelt es sich um eine innovative Softwarelösung, welche die Virtualisierung von containerisierten Anwendungen ermöglicht. Anwendungen können mit all ihren Abhängigkeiten in ein Image verpackt werden. Durch den Einsatz einer speziellen Engine, kann die so verpackte Software in einem Docker-Container plattformunabhängig ausgeführt werden. Die dockerisierte Anwendung ist bis auf einige wenige Schnittstellen zum Betriebssystem vollständig isoliert. Aus einem einzelnen Image lassen sich beliebig viele Container erstellen und parallel betrieben. Aus diesem Grund eignet sich Docker besonders gut, um cloudnative Anwendungen und Dienste bereitzustellen.

Die Container-Virtualisierungstechnologie ist keine neue Technik und wird im Linux-/Unix-Bereich schon seit vielen Jahren äußerst erfolgreich eingesetzt. Neben Docker gibt es auch eine Vielzahl ähnlicher Lösungen, die auf eine ähnliche Weise versuchen, die bestehenden Skalierungs- und Virtualisierungs-Probleme zu lösen. Docker ist jedoch der unangefochtene Spitzenreiter, um die Arbeit mit Containern möglichst unkompliziert und intuitiv zu gestalten.

Container im Vergleich zu virtuellen Maschinen

Im Vergleich zu Containern sind Virtuelle Maschinen (VMs) wahre Schwergewichte. Virtuelle Maschinen enthalten neben der simulierten Hardware und dem Hypervisor auch eine Kopie des Betriebssystems inklusive aller installierten Programme und Abhängigkeiten. Da sie eine große Menge an Informationen beinhalten, verbrauchen sie dementsprechend viel an Ressourcen und Speicherplatz. Nichtsdestotrotz haben virtuelle Maschinen nach wie vor einige Vorteile gegenüber Docker und Co. Insbesondere in Sachen Isolation bieten VMs eine viel höhere Sicherheit in den unteren Isolierungsschichten.

Auch im Fall, wenn auf einem Server mehrere virtuelle Maschinen mit jeweils unterschiedlichen Hardware-Konfigurationen oder Betriebssystemen bereitgestellt werden sollen, kommen virtuelle Server zum Einsatz. Im Vergleich hierzu besitzt ein Docker-Container kein eigenes OS und auch keine simulierte Hardware. Containerisierte Anwendungen greifen auf das System des darunterliegenden Hosts zu, sodass sich alle Container die Ressourcen des Betriebssystems und der Hardware teilen.

 

Ein Container ist also nur mit den nötigsten Informationen ausgestattet, die von den installierten Anwendungen tatsächlich auch benötigt werden. Neben der auszuführenden Anwendung selbst sind die Container in vielen Fällen auch mit spezifischen Frameworks und Bibliotheken versehen, auf denen die jeweilige Anwendung aufbaut. Konkret bedeutet das, dass ein Container so viel Informationen enthält, wie es nötigt ist.

Während eine traditionelle VM Hardware und Betriebssystem simuliert, teilt eine containerisierte Anwendung alle Ressourcen via Docker Engine mit dem darunterliegenden Host. Ein Container ist außerdem in der Lage, bei Bedarf auf externe Bibliotheken zuzugreifen. So lassen sich beispielsweise Abhängigkeiten auslagern, die von mehreren Docker-Containern benötigt werden, wodurch die Größe der Container nochmals reduziert wird.

Docker: Hochskalierbar und performant

Die Docker-Engine stellt das Herzstück der Containerisierung bei Docker dar. Die Software fungiert als eine Art Schnittstelle zwischen den Ressourcen des Host-Systems und den darauf ausgeführten Containern. Container können auf jedem System ausgeführt werden, auf dem die Docker-Engine installiert ist. Die Containertechnologie wurde ursprünglich für den Einsatz auf Linux-Systemen entwickelt. Da Microsoft in den letzten Jahren kräftig in Docker investiert und sich auch intensiv an der Weiterentwicklung beteiligt hat, kann die Containertechnologie mittlerweile auch auf allen modernen Windows-Systemen genutzt werden.

Im Vergleich zu VMs sind die containerisierten Images sehr schlank. In modernen Cloudumgebungen bringt das eine Vielzahl unterschiedlicher Vorteile mit sich. So können beispielsweise auf einem virtuellen Server deutlich mehr Container-Instanzen betrieben werden. Außerdem starten die Container viel schneller als virtuelle Maschinen, was eine viel besserer Flexibilität und Skalierung mit sich bringt.

Docker kann relativ einfach in bestehende DevOps-Systeme wie beispielsweise Puppet oder Ansible eingebunden werden, was die Verwaltung und Bereitstellung von Containern zusätzlich vereinfacht. Ein bedeutender Vorteil von Docker spiegelt sich in der Tatsache wider, dass sich die Container per Skript steuern lassen. Ein Docker-File ist mit allen notwendigen Informationen versehen, um einen Container selbständig starten zu können. Aus diesem Grund eignet sich die Container-Plattform ideal, um in der Cloud betrieben zu werden und automatisch zu skalieren. Außerdem lassen sich die Container über eine zentrale Repository schnell und unkompliziert verwalten.

Großer Einfluss in der Softwareentwicklung

In der modernen Softwareentwicklung bieten isolierte Container eine Vielzahl unterschiedlicher Vorteile. Softwareprojekte können so beispielsweise unabhängig voneinander entwickelt werden, wodurch die Arbeit an großen Projekten wesentlich erleichtert wird. Durch den Einsatz von Containern geht das Packen und das Ausliefern von Anwendungen schnell und einfach vonstatten, da sie prinzipiell in jeder Umgebung mit Docker Engine sofort einsatzbereit sind. Dies ist insbesondere für die beiden Entwicklungsansätze Continuous Deployment und Continuous Integration interessant, da jeder Softwareentwickler selbständig an seinem isolierten Teil des Projekts arbeiten kann. Hinzu kommt noch, dass sich über Docker Container ein Projekt schnell und unkompliziert mit Kollegen teilen und unabhängig vom jeweiligen Client verwenden lässt. Da ein Container in einer isolierten Umgebung ausgeführt wird, lassen sich verschiedene Umgebungen ohne größeren Aufwand simulieren.

Der Begriff DevOps (Development Operations) ist englischen Ursprungs und setzt sich aus „Dev“ (Entwicklung, Development) und „Ops“ (Vorgänge, Operations) zusammen. Mit DevOps wird ein Ansatz beschrieben, wie Prozesse, Technologien und Menschen vereint werden sollen, um Kunden kontinuierlich hochwertige Produkte zu liefern. Im folgenden Artikel gehen wir auf die Merkmale von DevOps im Detail ein und beleuchten das Thema von allen Seiten.

Development Operations im Überblick

Der Begriff DevOps bezieht sich auf einen Prozessverbesserungsansatz, der in erster Linie in der Softwareentwicklung und Systemadministration zum Einsatz kommt. Dieser Ansatz verfolgt das Ziel, in den Bereichen IT-Betrieb, Entwicklung und Qualitätssicherung für eine bessere und effizientere Zusammenarbeit zu sorgen. Um dies zu erreichen, kommen besondere Prozesse, Tools und Anreize zum Einsatz. Die verbesserte Zusammenarbeit der unterschiedlichen Teilbereiche wirkt sich äußerst positiv auf die Geschwindigkeit der Softwareentwicklung aus, wodurch auch die Kooperation zwischen den einzelnen Teams nachhaltig verbessert wird.

Der Development Operations-Ansatz bringt insbesondere für Teams eine Vielzahl unterschiedlicher Vorteile. So ermöglicht DevOps beispielsweise zuvor getrennte Rollen, wie IT-Betrieb und Sicherheit, einheitlich zu koordinieren und zusammenzuführen. Mit der Einführung innovativer Development Operations-Methoden und -Tools können Teams effizienter und schneller auf die Anforderungen ihrer Kundschaft reagieren, um zuverlässigere und bessere Dienstleistungen und Produkte bereitzustellen. Wenn Teams, die Methoden, Tools und Kultur einführen, die von DevOps bereitgestellt werden, können sie schneller bessere Produkte entwickeln. Diese effizientere Produktivität und Zusammenarbeit wirkt sich äußerst positiv auf das Erreichen folgender Geschäftsziele aus:

– Schnellere Anpassung an neue Marktbedingungen und Wettbewerb

Optimierung der MTTR (mittlere Reparaturzeit)

– Bessere Zuverlässigkeit und Stabilität wichtiger Systeme und IT-Server

Anwendungslebenszyklus im Kontext von DevOps

Development Operations wirkt sich durch die enge Einbindung seiner Methoden im hohen Maße auf den Anwendungslebenszyklus aus. Jede Phase ist von der anderen Phase abhängig und keine der Phasen sollte als eine geschlossene Einheit betrachtet werden. In einer Idealen Implementierung des Development Operations-Ansatzes ist jede Rolle bis zu einem bestimmten Grad an jeder Phase beteiligt. Anwendungslebenszyklus im Kontext von DevOps ist durch vier Phasen gekennzeichnet:

  1. Plan: DevOps-Teams definieren, konzipieren und beschreiben in der Planungsphase die Funktionalitäten und Features der Anwendung und aller Systeme, an denen sie aktiv arbeiten. Die Teams verfolgen dabei den Fortschritt von Aufgaben für ein einzelnes Produkt bis hin zu Aufgaben für ein vielfältiges Produktspektrum. Die gesamte Planung läuft dabei äußerst flexibel ab. Durch das Erstellen von Backlogs wird die Sichtbarkeit erhöht, sodass Fehler besser nachverfolgbar sind
  2. Entwickeln: Die Entwicklungsphase beinhaltet alle Programmierarbeiten. Hierzu gehören neben dem Schreiben, Testen, Prüfen und der Integration des Codes auch die Einbindung des Codes in sogenannte „Buildartefakte“. Diese können in einer Vielzahl verschiedener Umgebungen bereitgestellt werden, wie beispielsweise Microsoft Azure, Amazon Web Services oder Google Cloud.
  3. Bereitstellen: Unter „Continuous Delivery“ versteht man das zuverlässige und konsistente Bereitstellen von Anwendungen in Produktionsumgebungen. Diese Phase umfasst auch die Inbetriebnahme und Konfiguration der zugrundeliegenden IT-Infrastruktur und aller virtueller Maschinen, auf der die Anwendungen ausgeführt werden. Die Teams definieren in der Lieferphase einen Releaseverwaltungsprozess mit strikten Genehmigungsphasen. Die Automatisierung dieser Prozesse führt nicht nur zu einer besseren Skalierung und Kontrolle, sondern Prozesse lassen sich so zudem flexibler wiederholen, ohne dass dadurch die Release-Planung wesentlich beeinträchtigt wird.
  4. Betreiben: Zu der Betriebsphase gehören u. a. die Überwachung, Verwaltung und Problembehandlung von Applikationen in Produktionsumgebungen. Im Rahmen der Einführung neuer DevOps-Methoden müssen die Verfügbarkeit und Zuverlässigkeit bestehender Systeme gewährleistet werden, wobei eine Vermeidung von Ausfallzeiten angestrebt werden sollte.

DevOps und die Cloud

Cloud-Systeme bekommt immer mehr an Bedeutung und verändern maßgeblich die Arbeitsweise von Teams bei der Entwicklung, Bereitstellung und dem Betreiben von Anwendungen. Durch den Einsatz moderner DevOps-Methoden können Teams ihre bestehenden Methoden und Prozesse optimieren, um cloudnative Anwendungen optimal zu betreuen. Moderne Cloud-Systeme bieten Unternehmen eine enorme Flexibilität. So können Entwicklerteams beispielsweise ihre Anwendungen flexibler entwickeln, da sie auf eine schnelle Bereitstellung setzen und Cloud-Umgebungen mit unbegrenzten Ressourcen nutzen. Unternehmen müssen nicht mehr in eigene physische Hardware investieren. Stattdessen können Teams durch den Einsatz moderner Cloud-Umgebungen, wie beispielsweise Microsoft Azure, virtuelle Server nach Bedarf erstellen oder herunterfahren, wenn sie nicht mehr benötigt werden.

Im Rahmen moderner DevOps-Methoden hat sich in den letzten Jahren die Containertechnologie durchgesetzt und die Art und Weise, wie Apps in der Cloud bereitgestellt werden, maßgeblich verändert. Tools wie Docker und Kubernetes haben sich als Branchenstandard für das Erstellen und Bereitstellen von Containern entwickelt. Da die Verwaltung der gesamten IT-Infrastruktur zum größten Teil zum Aufgabenbereich des jeweiligen Cloudanbieters gehört, wie Amazon Web Services oder Microsoft Azure, können sich Teams voll und ganz auf die Entwicklung konzentrieren. Durch den Einsatz des serverlosen Computings lassen sich Anwendungen ausführen, ohne dass der Server konfiguriert oder verwaltet werden muss. Darüber hinaus stehen unterschiedliche Tools zur Reduzierung der Komplexität zur Verfügung.

VMWare Horizon ist eine Implementierung von virtuellen Desktoplösungen der Firma VMWare, die Funktionen eines üblichen Arbeitsplatzrechners in der Regel als Remote Desktop über eine Netzverbindung bereitstellen. Diese Funktionen können Sie so Ihren Mitarbeitern effizienter und einfacher anbieten.

Was ist eine VDI?

Eine VDI oder Virtual Desktop Infrastructure, wie VMWare Horizon lässt die Funktionen eines Desktop Rechners auf zentralen Servern laufen, auf die ein Benutzer mit einem Client zugreift. Dieser Client kann mit weniger Leistung als ein üblicher Arbeitsplatzrechner ausgestattet werden.

Auf einem Server verwaltet ein Hypervisor virtuelle Maschinen, in denen die Desktop Anwendungen gehostet sind. Ein Benutzer stellt von seinem Client die Verbindung zu dieser virtuellen Maschine her. Diese Verbindung kann über ein lokales Netz oder auch über das Internet erfolgen. Die Eingaben erfolgen durch die Tastatur und die Maus und werden an den Server übertragen. Dieser wiederum leitet die Ausgaben der auf ihm gehosteten Programme an den Client weiter. Gleich welches Netzwerk für die Übertragung genutzt wird, es muss bestimmte Mindestanforderungen betreffend Latenz und Übertragungskapazität erfüllen.

Die verwendeten Clients werden je nach Leistungsfähigkeit in Zero, Thin und Thick eingestuft. Von Zero bis Thick steigt nicht nur die Rechenleistung, es steigen auch der Konfigurationsaufwand, der Stromverbrauch, die Gerätgröße und -kosten sowie der Aufwand für die Kühlung.

Aus diesen Überlegungen lassen sich viele der Vorteile einer VDI ableiten. Die Bereitstellung von Rechenleistung für verschiedene Desktops bringt einen Effizienzgewinn, denn ein Server wird durch virtuelle Maschinen besser ausgelastet als viele Desktop Rechner durch je einen einzelnen Benutzer. Statt kompletter Desktops sind auch nur einfachere und billigere Geräte als Clients nötig.

Dazu sind Konfiguration, Updates und Backups zentral einfacher zu handhaben als verteilt auf verschiedene Desktop Maschinen. Die Clients können länger genutzt werden, da die Updates nur auf den Servern nötig sind und nicht auf jedem einzelnen Client. Softwarelizenzen sind in einer VDI-Umgebung nur für die Server erforderlich.

Wenn Ihre Mitarbeiter von außerhalb des Unternehmens auf Server zugreifen, bleiben sensible Daten besser unter der Kontrolle der Firma.

Was ist RDP?

Das Remote Desktop Protocol oder RDP ist ein von Microsoft entwickeltes Netzwerkprotokoll für die Abwicklung der Verbindung zwischen Clients einer VDI und den eingesetzten Servern.

Für den Server selbst ist eine Windows-Umgebung erforderlich, der Zugriff kann aber auch von Clients erfolgen, auf denen andere Betriebssysteme laufen. Das RDP ermöglicht so eine BYOD oder Bring-Your-Own-Device-Regelung in Ihrer Firma, mit der Ihre Mitarbeiter von ihren eigenen Geräten auf die Firmeninfrastruktur zugreifen können.

Technisch ist RDP ein Protokoll der Anwendungsschicht im Protokollstack des Internets. RDP kann als Anwendungsprotokoll sowohl auf TCP als auch UDP aufbauen.

Das Protokoll RDP wird für zwei Typen von Anwendungen eingesetzt. In der remote Unterstützung wird für Zwecke des Supports auf eine laufende Sitzung zugegriffen, mit der ein Benutzer Probleme hat und in der er Unterstützung benötigt. Im remote Desktop wird von einem Benutzer eine neue Sitzung begonnen, die eine Nutzung eines Desktops darstellt.

Die Lösung VMWare Horizon für eine VDI

Das Unternehmen bietet neben zahlreichen anderen Softwarepaketen die VDI-Lösung VWWare Horizon an, die sich in die anderen Angebote des Unternehmens integrieren lässt. Der Hauptzweck von VMWare Horizon liegt in der Erstellung und Verwaltung von VDI-Systemen.

Zum Betrieb ist ein Windows-System auf dem Server erforderlich, in den virtuellen Maschinen können aber auch Linux-Systeme betrieben werden.

VMWare Horizon zeichnet sich dadurch aus, dass neue Arbeitsplätze schnell und einfach eingerichtet werden können. Das erfolgt beispielsweise durch einen Clone von bereits bestehenden Desktops.

Neben ihren zahlreichen Vorteilen bringt eine VDI-Lösung auch eigene Probleme mit sich. Dazu gehört die Sicherheitsfrage, die sich aus der Übertragung von sensiblen Daten von sicherem Zugriff auf die Server ergibt. Als Lösung für diese Fragen setzt VMWare Horizon auf ein eigenes im Produkt integriertes System mit der Bezeichnung Intrinsic Security.

Für verschiedene Typen von Einsatzbereichen wird VMWare Horizon in zwei verschiedenen Lizenzmodellen angeboten. Muss eine bestimmte Zahl ihrer Mitarbeiter auf Ihre Systeme zugreifen können, wählen Sie das Modell der Abrechnung pro benannten Anwender. Werden Server von einer großen Zahl von Nutzern geteilt, die für sich nur relativ geringe Rechenleistung in Anspruch nehmen, bietet sich das Lizenzmodell einer Abrechnung pro gleichzeitigen Zugriff an.

Die Server können mit VMWare Horizon auf unterschiedliche Weise bereitgestellt werden. In einer on-premise-Lösung haben Sie die Geräte unter ihrer direkten Kontrolle. Genauso können die Server  in einer Cloud betrieben werden und darüber hinaus sind auch hybride Lösungen zwischen diesen zwei Extremfällen möglich.

Zum Kennenlernen des Systems bietet VMWare eine kostenlose Möglichkeit zum Testen von Horizon an.