Docker
Ein Blick in die Vergangenheit
Die Art und Weise, wie Anwendungen von Servern bereitgestellt werden, hat sich durch Abstraktionen ständig verändert.
Anfangs wurde für jede größere Anwendung ein eigener physischer Server in einem Rechenzentrum eingerichtet. Wenn dieser Server mehr Leistung benötigte, musste die Hardware aufgerüstet werden. Wenn der Server die Leistung nicht benötigte, stand sie keinem anderen zur Verfügung.
Durch die Virtualisierung der Server wurde die erste Abstraktion geschaffen. Nun war es möglich, einen sehr leistungsfähigen Server in mehrere virtuelle Server aufzuteilen. Dadurch kann die Hardware effizienter genutzt werden und ein virtueller Server kann z.B. nachträglich mit mehr CPU-Kernen ausgestattet werden. Allerdings ist der Aufwand für die Erstellung und Installation eines virtuellen Servers und der zu betreibenden Anwendung nach wie vor hoch.
Durch die Containerisierungstechnologie wurde eine weitere Abstraktion zwischen Betriebssystem und Anwendung geschaffen. Ein physischer oder virtueller Server kann in mehrere voneinander isolierte Kontexte aufgeteilt werden, in denen die Anwendungen ausgeführt werden. In Kombination mit der Zerlegung großer monolithischer Anwendungen in Microservices wurde die Skalierbarkeit auf Kosten einer komplexeren Struktur der Anwendung selbst vereinfacht.
Durch Lösungen wie Kubernetes wurde eine weitere Abstraktion um die Containerisierungstechnologie geschaffen, die nun die Verteilung der Container auf die Server übernimmt. Man installiert einen Dienst, der von Kubernetes gesteuert wird. Dieser Server steht dann für die Ausführung von Containern zur Verfügung. Wird ein neuer Container ausgeführt, übernimmt Kubernetes die Verteilung auf die verfügbaren Ressourcen.