Читать книгу Kubernetes - Kelsey Hightower - Страница 20

1.4Effizienz

Оглавление

Neben den Vorteilen von Containern und Kubernetes für die Entwickler und das IT-Management gibt es auch einen konkreten ökonomischen Vorteil durch die Abstraktion. Weil Entwickler nicht mehr länger in »Rechnern« denken, können ihre Anwendungen auf den gleichen Maschinen nebeneinander laufen, ohne sich gegenseitig zu beeinflussen. So lassen sich die Aufgaben von mehreren Anwendern enger auf weniger Maschinen zusammenfassen.

Effizienz kann anhand des Verhältnisses der durch eine Maschine erledigten nützlichen Arbeit oder Prozesse zur durch sie gesamten verbrauchten Energie gemessen werden. Wenn es um das Deployen und Managen von Anwendungen geht, sind viele der verfügbaren Tools und Prozesse (zum Beispiel bash-Skripte, apt-Updates oder ein imperatives Konfigurations-Management) auf die eine oder andere Weise ineffizient. Bei Überlegungen zur Effizienz ist es häufig hilfreich, sich sowohl über die Kosten für das Betreiben eines Servers wie auch über die Kosten für die Mitarbeiter zum Managen des Servers Gedanken zu machen.

Das Laufenlassen eines Servers führt zu Kosten, die auf dem Energieverbrauch, dem Kühlbedarf, dem Raum im Data Center und der echten Computerleistung basieren. Wurde ein Server aufgestellt und eingeschaltet (oder angeklickt und hochgefahren), beginnt der Zähler zu laufen. Jegliche ungenutzte CPU-Zeit ist verschwendetes Geld. Daher ist es Aufgabe der Systemadministratoren, die Nutzung der Server auf akzeptablem Niveau zu halten, was ein fortlaufendes Management bedeutet. Hier kommen Container und der Workflow von Kubernetes ins Spiel. Kubernetes bringt Tools mit, die das Verteilen von Anwendungen auf ein Cluster aus Maschinen automatisieren und damit ein höheres Nutzungsniveau sicherstellen, als dies mit den klassischen Tools möglich wäre.

Zusätzlich steigt die Effizienz noch dadurch, dass die Testumgebung eines Entwicklers schnell und günstig als Satz von Containern geschaffen werden kann, der in einer privaten View eines gemeinsamen Kubernetes-Clusters läuft (mithilfe von Namensräumen). Früher musste man zum Starten eines Test-Clusters für einen Entwickler vielleicht extra drei Maschinen hochfahren. Mit Kubernetes können sich alle Entwickler ein einzelnes Test-Cluster teilen und ihre Verwendung auf weniger Maschinen zusammenfassen. Durch das Verringern der Gesamtanzahl an eingesetzten Maschinen steigt die Effizienz jedes Systems: Da mehr Ressourcen (CPU, RAM und so weiter) auf jeder einzelnen Maschine genutzt werden, sinken die Gesamtkosten für jeden Container.

Das Verringern der Kosten für Entwicklungs-Instanzen in Ihrem Stack ermöglicht Entwicklungs-Praktiken, die früher zu teuer gewesen wären. So ist es mit Ihrer über Kubernetes deployten Anwendung nun zum Beispiel denkbar, jeden einzelnen Commit von jedem einzelnen Entwickler im gesamten Stack zu deployen und zu testen.

Wenn die Kosten jedes Deployments nur noch anhand weniger Container statt mehrerer vollständiger virtueller Maschinen (VMs) gemessen werden, sinken die anfallenden Kosten für das Testen dramatisch. So kommen wir dann zu dem eigentlichen Wert von Kubernetes zurück – solch ein Testen steigert die Schnelligkeit, weil Sie sich über die Zuverlässigkeit Ihres Codes sicherer sein können und weil die Granularität so fein ist, dass Sie schnell erkennen können, wodurch ein Problem entstanden ist.

Kubernetes

Подняться наверх