Docker, Kubernetes und Co.
Container-Technologien vereinfachen das Testen verteilter IT-Systeme
Mittels einer Container-Technologie wie Docker kann eine maßgeschneiderte Testinfrastruktur leicht, performant und ad-hoc aufgesetzt werden. Der Grund: Das Infrastructure-as-Code-Konzept kommt nicht nur beim Software-Design und -Deployment zum Einsatz, sondern auch beim Testing. Technische Unterstützung bei der Bereitstellung von Testumgebungen liefern Orchestrierungstools wie Kubernetes oder komplette Container-Anwendungsplattformen wie Red Hat OpenShift, die zusätzlich zur Container-Cluster-Verwaltung auch eine Lösung für den Aufbau von automatisierten Build-Pipelines beinhalten.
Die Integration der Container-Orchestrierung mit Code-Versionierungstools wie Git bietet die nötige Versionskontrolle und ermöglicht die parallele Verwaltung von Testumgebungen in unterschiedlichen Versionsständen.
Der Markt stellt heute vorgefertigte Container zur Verfügung, die der Anwender lediglich konfigurieren muss. So stehen Komponenten wie Datenbanken, Webserver, Messaging Broker, Such-Engines und noch viele weitere Komponenten auf Knopfdruck bereit.
Container für Testumgebungen einsetzen
Generell vereinfacht der Einsatz von Container-Technologien die Bereitstellung von Testumgebungen für die Entwicklung und Quality Assurance (QA) deutlich. In lokalen Testumgebungen auf dem Entwicklerrechner kommen dieselben Deployment-Werkzeuge und -Konzepte zum Einsatz wie in der Test- und Staging-Umgebung und letztlich auch in der Produktion. Dieses Setup bringt die Produktionsumgebung sehr nahe an den Test- und Development-Lifecycle.
Dadurch wird die Fehlersuche vereinfacht und Fehlerquellen werden deutlich reduziert. Die sehr schnellen Startzeiten der Container-Technologie ermöglichen neben kurzen Deployment-Zyklen auch einen wiederholbaren und vor allem kurzfristigen Infrastruktur-Aufbau für den Test. Durch die optimierte Nutzung von Ressourcen (Memory, CPU und Storage) unterstützt die Container-Technologie auch den Einsatz vieler gleichzeitig laufender Komponenten auf einem Rechner; damit können auch große Systeme lokal getestet werden.
- Einbindung ins Rechenzentrum
Um ihre volle Wirkung entfalten zu können, muss es möglich sein, Container in die bestehende IT-Infrastruktur des Unternehmens mit ihren Services einzubetten - seien es beispielsweise Security-, Authentisierungs- oder Netzwerk-Dienste. - VM-Management statt Chaos
Die IT-Verantwortlichen müssen einen Weg finden, ihre virtuellen Maschinen (VM) übersichtlich zu verwalten und die Kunden trotzdem parallel mit den benötigten Services zu versorgen. - Skalierbarkeit
Die heutige, hochdynamische Unternehmens-IT macht es erforderlich, dass Unternehmen ihre Container-Technlogie und die Kapazitäten zur Bereitstellung an die Anwender programmatisch skalieren können. - Orchestrierung
Unternehmen müssen mehrere Container miteinander kombinieren, Container mit anderen Applikationen kombinieren und die Kommunikation zwischen Containern und anderen IT-Ressourcen ermöglichen. Um all das zu erreichen, müssen die Container auch in einer Umgebung entwickelt werden, die diesen Mix aus Technologien und Rechenkapazitäten abbildet. - Legacy-Systeme beachten
Container müssen nicht nur mit den neuesten Anwendungen und Systemen im Unternehmen harmonieren, sondern auch die Altsysteme berücksichtigen.
Mehr Flexibilität und Portabilität durch Container-Technologien
Die daraus gewonnene Flexibilität im Aufbau von Testumgebungen ist auch die Basis für umfangreiche Testautomatisierungsszenarien. Diese Automatisierung ist zwingend erforderlich, um die Anforderung eines Continuous-Integration-Ansatzes mittels automatisierter Build Pipelines zu realisieren. Dies gilt als Grundvoraussetzung, um komplexe Release-Strategien wie Blue Green Deployments, Canary Releases oder A/B-Testing umzusetzen. Sie ermöglichen die schnelle und vor allem häufige Veröffentlichung eines jeweils aktuellen und getesteten Softwarestands.
Ein weiterer Vorteil von Containern ist die Portabilität, das heißt, Anwender können sie auf den Entwicklungsrechner herunterladen und somit auch für die Offline-Entwicklung und Tests außerhalb der Reichweite des eigenen Intranets - zum Beispiel auf einer Zugreise - problemlos verwenden.
Von Nutzen ist überdies der Infrastructure-as-Code-Ansatz. So wird die Einarbeitungszeit von neuen Mitarbeitern in ein Projekt drastisch reduziert, da die aufwendige Installation und Konfiguration von lokalen Container-basierten Entwicklungsumgebungen komplett automatisiert werden können. Somit gehört auch das "Abarbeiten" von langen Installationsanleitungen der Vergangenheit an.
Microservices und Container
Nicht zuletzt spricht auch der "Microservices-Trend" für einen Einsatz der Container-Technologie in der Testinfrastruktur. Microservices bringen neue Herausforderungen für das Testing mit sich, wie etwa die verifizierte Integration verschiedener Services in ein gesamtheitlich funktionierendes Softwaresystem. Die immer komplexer werdende Zusammenstellung von einzelnen Services zu einem kompletten Ganzen ist keine Selbstverständlichkeit mehr. Die dabei teilweise sehr aufwendigen Testszenarien können Unternehmen optimal mit Hilfe von Container-Technologien meistern.
Fazit
Insgesamt ermöglicht der Einsatz von Container-Technologien die nahtlose Integration von der Softwareentwicklung bis zur Produktivstellung - einschließlich des Testinfrastruktur-Setups. Allerdings ist für die erfolgreiche Einführung Experten-Know-how von Vorteil, idealerweise von Dienstleistern, die sowohl über Erfahrungen bei Container-Plattformen als auch beim Testing von Unit- über Integration- bis zu User-Interface (UI)-Tests verfügen.