All-Flash Speichersysteme als Turbo für DevOps und Continuous Delivery

München, Starnberg, 14. März 2017 - Scale-out All-Flash mit QoS-Funktionen und niedriger Latenz für die Software-Entwicklung; Storage macht den Unterschied...

Zum Hintergrund: Durch die digitale Transformation in den Unternehmen gewinnt die Entwicklung und Anpassung von Software verstärkt an Bedeutung. Das Beratungshaus McKinsey schätzt, dass in Kürze bei Branchen wie dem Versicherungswesen, Einzelhandel und auch Logistik rund 40 Prozent des Umsatzes auf digitale Angebote entfallen. Mit Flash-basierten Storage-Lösungen lassen sich Projekte im Bereich Software-Entwicklung schneller und effizienter umsetzen. Im folgenden Gastbeitrag von Clemens Siebler (1), Manager Solution Architects EMEA bei NetApp erläutert dieser, wie sich mit Hilfe von (NetApp) SolidFire - Arrays die Wartezeiten von langsamen Speichersystemen drastisch verkürzen lassen und fein-granulare Quality-of-Service-Verfahren bei der Softwareentwicklung möglich werden.


Zum Gastbeitrag: „Eine Folge dieser Entwicklung ist, dass moderne Methoden der Software-Entwicklung wie DevOps, Continuous Integration (CI) und Continuous Delivery (CD) an Boden gewinnen. Durch solche Ansätze laufen die Entwicklung, der Test, das Modifizieren und die Implementierung von Code in kurzen und kontinuierlichen Zyklen ab. In einigen Bereichen, etwa der Entwicklung von mobilen Apps, werden teilweise mehrmals wöchentlich Anpassungen vorgenommen. In der Online-Gaming-Branche erfolgt das teilweise täglich, oft sogar stündlich. Eine Konsequenz ist, dass die Anforderungen an die Speicherinfrastruktur steigen. So müssen sich Storage-Ressourcen flexibler und weitgehend automatisiert bereitstellen lassen. Außerdem ist eine höhere Performance erforderlich.

Wartezeiten durch langsame Storage-Systeme

  • Beim Continuous-Integration-Ansatz beispielsweise speisen Entwickler in kurzen Intervallen neuen Code in eine Applikation ein. Um die Validität des Codes zu prüfen und Fehler zu identifizieren, werden automatisch neue Builds (Versionen) der entsprechenden Software generiert. Mit herkömmlichen Storage-Arrays mit SAS (Serial-Attached SCSI)-Festplatten kann es mehrere Stunden dauern, bis ein Entwickler auf das Resultat zugreifen kann. Dies hat den Hintergrund, dass in CI/CD-Umgebungen etliche automatisierte Prozesse wie zum Beispiel das Erzeugen von Builds, automatisierte Tests oder das Packaging beziehungsweise Deployment oft viele Ressourcen benötigen. Je nach Größe einer Entwicklungsabteilung können sich diese Zeitverluste zu Hunderten von Arbeitsstunden pro Jahr summieren.

  • Einen Ausweg bieten All-Flash-basierte Storage-Lösungen wie von NetApp SolidFire. Sie verkürzen die Zeitdauer für die Erstellung eines neuen Builds auf wenige Minuten. Außerdem lassen sich Kopiervorgänge – zum Beispiel das Sichern von Produktionsdaten oder das Kopieren von Produktions- in Testumgebungen – durch extrem effiziente Cloning-Algorithmen von Stunden auf wenige Minuten reduzieren. Ein Grund ist die hohe Performance von Flash-Speicher-Systemen im Vergleich zu Storage-Arrays mit Festplatten. Auch der Einsatz von Cache-Speicher in Systemen mit Harddisks bringt keine nachhaltige Besserung. So treten bei solchen Lösungen Latenzzeiten von 10 bis 100 Millisekunden auf. Bei Flash-basierten Lösungen liegen sie durchgängig unter 1 Millisekunde. Derartige Performance-Unterschiede wirken sich in Software-Entwicklungsumgebungen mit großen Datenbanken, Entwicklungs-Tools sowie Test- und Quality-Assurance (QA)-Werkzeugen spürbar aus.

Ressourcen je nach Bedarf

  • In Umgebungen, in denen sich Applikationen dieselbe Storage-Infrastruktur teilen, tritt zudem regelmäßig folgendes Phänomen auf: Bestimmte Anwendungen beanspruchen einen übermäßig großen Anteil der Bandbreite und der I/O-Performance. Dies kann dazu führen, dass Software-Entwicklern nicht die erforderlichen Storage-Ressourcen zur Verfügung stehen. Mit Quality-of-Service (QoS)-Funktionen lässt sich dies lösen.

  • Der Haken dabei: Zwar bieten etliche Hersteller von Speicherlösungen solche QoS-Funktionen an. In der Praxis weisen jedoch die meisten Schwächen auf. So haben QoS-Verfahren, die auf Hypervisor-Systemen basieren, nur begrenzte Möglichkeiten, um die IOPS (Input/Output Operations Per Second)-Werte der Speichersysteme zu beeinflussen.

Granulare Quality-of-Service-Verfahren

  • Damit der Software-Entwicklung die erforderliche QoS zur Verfügung steht, ist eine spezielle Speichersystem-Architektur erforderlich. Sie muss durchgängig auf Flash-Speicher basieren, um konsistent niedrige Latenzzeiten zu garantieren. Zudem ist ein Scale-out-Ansatz erforderlich: Bei Bedarf werden weitere Storage-Knoten hinzugefügt. Nur dadurch lässt sich ein linearer Performance-Zuwachs sicherstellen.

  • Besonders wichtig sind jedoch zwei Funktionen: Eine feinkörnige QoS-Kontrolle sowie eine Performance-Virtualisierung. Diese Technologien ermöglichen es, Performance und Storage-Kapazität unabhängig voneinander zu steuern. Außerdem lassen sich für jedes Volume QoS-Werte festlegen, auch für den Fall, dass eine Applikation für kurze Zeit hohe IOPS-Kapazitäten benötigt. Das ist beispielsweise dann der Fall, wenn Entwickler einen Build-Prozess auslösen, automatisierte Tests ausführen, Snapshots erstellen, ein Cloning durchführen oder große Datenmengen übermitteln, etwa in eine Testumgebung. Herkömmliche Ansätze wie das "Deckeln" von IOPS-Werten führen dazu, dass solche Aktivitäten mehr Zeit in Anspruch nehmen als nötig.


Abb. 1: NetApp SolidFire Storage Array (Bildquelle: Hersteller)


Storage-Kapazitäten erweitern

  • Ein weiterer Faktor, der Software-Entwicklungsabteilungen "ausbremsen" kann, ist das Management der Storage-Infrastruktur. Ein Beispiel: Im Verlauf eines Software-Entwicklungsprojekts stellt sich heraus, dass weitere Storage-Ressourcen benötigt werden. Bislang bedeutet dies in den meisten Fällen, dass die Entwicklungsabteilung die Kollegen in der IT-Abteilung damit beauftragen muss, mehr Speicherplatz bereitzustellen. Dies deshalb, weil spezielles Know-how erforderlich ist, um neue Storage-Komponenten anzubinden.

  • Diese Vorgehensweise kostet Zeit und ist mit Ansätzen wie DevOps, CI und CD nicht vereinbar. Die Lösung besteht darin, horizontal skalierbare All-Flash-Systeme wie NetApp SolidFire zu implementieren. Nach erfolgter Implementierung lassen sich mit dem Zero-Touch-Ansatz weitere Flash-Storage-Ressourcen bei Bedarf automatisiert per API (Application Programming Interfaces)-Aufruf hinzufügen. Das "Charmante" dabei ist, dass ein Entwickler eigenständig Speicherplatz hinzufügen kann, ohne den Storage-Administrator damit zu behelligen. Er hat darüber hinaus die Möglichkeit, mithilfe von Scripts eine komplette Entwicklungs- und Testumgebung zusammenzustellen, mit den benötigten Server-Instanzen, Storage-Ressourcen und Applikationen. Dies erfolgt entsprechend den Vorgaben der IT-Abteilung. Dennoch haben Entwickler genügend Freiraum, um eine IT- und Storage-Umgebung zu definieren, die ihren Anforderungen entspricht.

  • Die Grundlage bilden RESTful-APIs. Darüber können Entwickler Plattformen wie Docker, Kubernetes, OpenShift, OpenStack und VMware anbinden. Gleiches gilt für Tools wie Puppet oder Programmiersprachen und Frameworks wie C#, Java, .NET und Python. Die offene Architektur von SolidFire ermöglicht es, mittels Software Speicherressourcen zu verwalten und sie den einzelnen Prozessen im Rahmen der Software-Entwicklung zuzuweisen – von der Erstellung der Builds über das Release und Monitoring der Applikationen bis hin zu Test- und Produktionsumgebungen.

Fazit: Storage macht den Unterschied

  • Wenn Storage-Ressourcen zum Flaschenhals werden, können Ansätze wie DevOps und Continuous Integration ihr Potenzial nicht entfalten. Das sollte IT-Abteilungen und Managern bewusst sein, die ein Unternehmen für den digitalen Wandel fit machen wollen. Unverzichtbar ist eine leistungsstarke, flexible und skalierbare Storage-Architektur, die sich nahtlos in alle Phasen der Software-Entwicklung einbinden lässt. Sie bildet einen der Eckpfeiler, auf denen ein modernes agiles Unternehmen ruht.“


(1) Foto: Clemens Siebler / Manager Solution Architects EMEA (Bildquelle: NetApp)