Plattformbasiertes Cloud Data Management

Test- und Dev-Umgebungen effizient automatisieren

Test- und Dev-Umgebungen effizient automatisieren

Ansatz im Cloud Data Management

IT-Umgebungen werden in praktisch allen Unternehmen im Laufe der Zeit komplex. Wird dabei eine Produktionsumgebung in einer Testumgebung so nahe wie möglich nachgeahmt, so wird auch diese extrem komplex. Oft stehen jedoch nicht die gleichen Ressourcen für Test und Entwicklung wie für die Produktion zur Verfügung, was für die Softwareentwickler zum Problem wird, denn sie wollen nicht durch die Unzulänglichkeiten der Infrastruktur behindert werden. Dadurch erklärt sich auch die Beliebtheit der Nutzung öffentlicher Cloud-Ressourcen auf Abruf. IT-Infrastruktur-Teams möchten ihren internen Kunden die bestmögliche Erfahrung bieten und suchen nach Möglichkeiten, um mehr Flexibilität in die Umgebung zu bringen. Im plattformbasierten Cloud Data Management, sieht Rubrik hier einen erfolgsversprechenden Ansatz.

Ein Aspekt ist auch Automatisierung. Dies ist eine Möglichkeit, um die Bereitstellung von Ressourcen zu beschleunigen, einen konsistenten Service sicherzustellen, Fehler zu reduzieren und zusätzliche Unterbrechungen zu vermeiden. All dies führt zu einer höheren Produktivität. Weniger bekannt ist, dass in der eigenen IT-Infrastruktur verborgenes Potenzial steckt, das in dieser Hinsicht von Vorteil sein könnte. Die Rede ist dabei von Backup-Daten, also Daten, die in der Regel ungenutzt in der Umgebung vorgehalten werden und dabei Speicherplatz und Ressourcen in Anspruch nehmen, bis sie – hoffentlich erfolgreich – für eine Wiederherstellung herangezogen werden.

Datenmanagement mit Optionen für Test und Entwicklung

Eine konvergierte Datenmanagement-Plattform, die Backup-Software überflüssig macht, indem deduplizierter Speicher, Katalogmanagement und Datenorchestrierung in einer einzigen Scale-out-Fabric kombiniert zur Verfügung stehen, bietet sich als Lösungsansatz an. Damit werden Enterprise-Backup- und Desaster-Recovery-Aufgaben in bestehenden IT-Security-Umgebungen stark vereinfacht. Umfassende Backup-Funktionen werden in einem einzigen Gerät bereitgestellt, das linear skalierbar ist.

Einer der Vorteile ist dabei die Möglichkeit, mit einer Live Mount-Funktion Daten sofort wiederherzustellen. Mit Live Mount lassen sich die Leistungs- und Kapazitätsstufen der Appliances nutzen, um die eigentlichen Daten zu hosten, anstatt die Daten sofort in das Produktionsspeichersystem zurück zu speichern, wo sie wertvolle Ressourcen für Produktions-Workloads verbrauchen. Im Fall von VMware zum Beispiel würde eine Appliance als NFSv3-Datenspeicher für den ESXi-Host bereitstehen, auf dem die Sicherungskopie der VM hochgefahren würde.

Live Mount kann auch im weiteren Sinne verwendet werden, um Backup-Daten zu erstellen, die sich normalerweise im Leerlauf des Test-/Entwicklungs-Workflows befinden. Da dies sowohl mit älteren Sicherungsversionen als auch mit den neuesten Sicherungskopien möglich ist, besteht die Möglichkeit, eine Testumgebung zu erstellen, in der stets die neuesten Produktionsdaten verwendet werden. Dies ergibt das Beste aus beiden Welten: Es stehen Datensätze so nah wie möglich an der Produktion zur Verfügung und für das Hosting dieser Datensätze werden nicht-produktive Ressourcen herangezogen. Dadurch werden Störungen und potenzielle Leistungseinbußen vermieden.

Sobald die Anwendung (als eine virtuelle Maschine) hochgefahren und mit dem Netzwerk verbunden ist, kann sie sich mit anderen erforderlichen Diensten in der Testinfrastruktur (Domain Name Server, Active Directory etc.) integrieren, und der Entwickler oder Tester kann nun auf einfache Weise auf die Umgebung zugreifen und seine Aufgaben erledigen.

Verwalten von Test/Dev-Umgebungen

Eine solche Umgebung manuell zu erstellen, ist bereits ein Schritt in die richtige Richtung, aber eine weitere Herausforderung, die typischerweise bei Test/Dev-Umgebungen auftritt, ist, wie man sie verwaltet, einschließlich deren Spin-Up und Herunterfahren. Wenn diese Umgebungen und die Daten, die sich darin befinden, einfacher genutzt werden können, sollte die Verwaltung des Lebenszyklus letztendlich auch einfacher werden. Hierbei ist die Möglichkeit der Integration oder Automatisierung mit der vorhandenen Tool-Chain (z.B. einem bestimmten Tool oder einer Skriptsprache) interessant.

In diesem Fall zahlt sich ein konsolidierter Ansatz aus. Wird der gesamte Stack, sowohl die Software als auch die Hardware, zentral gesteuert, können diese unter einer einheitlichen RESTful-API abgebildet werden, was die Nutzung vereinfacht.

Bei der Verwendung eines automatisierten Ansatzes trifft der Entwickler die Entscheidung, eine neue Umgebung zu erstellen, indem er seine bevorzugten Werkzeuge verwendet. Das Systen wird angewiesen, eine Kopie der Anwendung oder des Datensatzes hochzufahren, die Netzwerkeinstellungen auf der VM zu ändern, sie in der Testumgebung zu registrieren, bei Bedarf Variablen in der Anwendung zu ändern und den Entwickler zu informieren, dass die Umgebung für die Nutzung bereitsteht. Dies erfolgt alles ohne jegliche Interaktion mit dem Infrastrukturteam.

Automatisierung mittels Infrastruktur als Code

Dieser Prozess führt zum Thema „Infrastruktur als Code“, ein Ansatz zur Infrastrukturautomatisierung, der auf Praktiken basiert, die aus der Softwareentwicklung gewonnen wurden. Dabei stehen konsistente, wiederholbare Prozesse für die Bereitstellung und Verwaltung der Infrastruktur und ihrer Konfiguration im Vordergrund. Änderungen werden in der Regel über Konfigurationsdateien (z.B. in YAML) vorgenommen und anschließend über unbeaufsichtigte Prozesse, die eine gründliche Validierung umfassen, auf Systemen – entweder direkt oder über ein automatisiertes Config-Server-Typen-Setup – bereitgestellt.

Die Prämisse ist, dass moderne Tools (Chef, Puppet, Ansible, Terraform, Packer etc.) die Infrastruktur wie Software und Daten behandeln können. Auf diese Weise können Softwareentwicklungsmethoden wie Versionierung, automatisiertes Testen und die Orchestrierung der Bereitstellung zur Verwaltung der Infrastruktur verwendet werden. Dies öffnet auch die Tür, um moderne Entwicklungspraktiken wie Test-Driven Development (TDD), Continuous Integration (CI) und Continuous Delivery (CD) zu verwenden.