Jeder Entwickler möchte seinen eigenen Entwicklerstand. Jeder Tester möchte seinen eigenen Prüfstand. Und jeder Spezialist für Vorproduktion will seinen eigenen Stand - um endlich alles zu überprüfen und den Start im Produkt zu proben. Wenn all diese Wunschliste in der Verarbeitung zusammenlaufen - eines der größten und aktivsten Systeme der Bank -, kratzen Sie sich aufgrund der Infrastrukturkosten am Kopf und suchen nach „Optionen“. Wir werden erzählen, was wir in diesem Beitrag gefunden haben.
Das Volumen der Verarbeitungsdatenbanken in unserem Unternehmen beträgt ca. 6 TB. Bei einer Kopie der Datenbanken stören sich die Entwickler gegenseitig, sodass der tatsächliche Platzbedarf der Basen schnell und proportional zunimmt. Obwohl wie schnell ... zu schnell für den Escortservice und nicht schnell genug für diejenigen, die Kopien der Datenbanken benötigen. Und hier ist warum.
Zum Testen ist es erforderlich, dass der Prüfstand vollständig mit der aktuellen Produktionsversion übereinstimmt (dies gilt auch für den Vorproduktionsstand). Die Hauptsicherung des Systems wird den ganzen Tag kopiert und dann auf dem Stand bereitgestellt. Während dieser längeren Vorgänge sind keine Stände verfügbar, sodass das Kopieren auf Wochenenden und Feiertage übertragen wird, an denen niemand mit Ständen arbeitet. Wir bekommen eine Verzögerung von 1 bis 5 Tagen. Um sich vorab auf den Kopiervorgang selbst zu einigen, braucht es auch Zeit - wir haben mehrere Prüfstände, normalerweise von drei bis sechs. Wir fügen 2-3 Tage hinzu, um die Standleerlaufzeit zu koordinieren. Bevor Sie sich zur Genehmigung an den Administrator wenden, befindet sich die Anwendung noch in der Warteschlange. Insgesamt bekommen wir eine sehr große Verzögerung.
Was hat Delphix geholfen?
Was kann den Prozess beschleunigen und Platz sparen? Datenbankvirtualisierung. Wir haben verschiedene Optionen in Betracht gezogen: Oracle SnapClone, NetApp + Oracle Cloud, nur Snapshots auf Arrays. Alles erfordert eine komplexe Einrichtung. Oracle-Lösungen funktionieren außerdem nur mit Oracle-Datenbanken.
Dann sah ich Delphix an. Es ist einfach zu implementieren und unterstützt verschiedene Datenbanken - Oracle, SQL Server, DB2, Sybase ASE. Für alle Operationen wird eine Schnittstelle bereitgestellt. Dadurch können Entwickler und Tester ihre Kopien unabhängig voneinander verwalten - aktualisieren, speichern / wiederherstellen, stoppen / starten usw. Es gibt auch eine API und eine CLI für die Integration in CI / CD-Systeme oder deren Prozesse.
Die Bereitstellung von Delphix selbst dauert nicht lange - mehrere Stunden. Die Quelle kann viel länger angeschlossen werden, hier ist die Zeit proportional zur Größe. In unserem Fall war die Quelle eine Verkaufskopie der Datenbank, und die Verbindung dauerte fast einen Tag. Das Vorbereiten der Quelle und der Server für Datenbankklone erfordert keine besonderen Arbeiten. Auf dem Zielserver müssen Sie das entsprechende ORACLE_HOME installieren und einen speziellen Benutzer für die Verbindung erstellen. Für virtuelle Testkopien verwenden wir dieselben Server, auf denen zuvor physische Kopien vorhanden waren.
Mit Delphix können Sie Prüfstände in nahezu Echtzeit ohne Koordination erstellen, da die Prüfstände vollständig voneinander isoliert sind. Einige Zeit wird nur für die Aktualisierung der Datenbank auf den aktuellen Status aufgewendet - von 20 Minuten bis zu mehreren Stunden gibt es keine Frage von Tagen.
Wir versuchen, Stresstests unter möglichst produktnahen Bedingungen durchzuführen. Wenn der Stoß auf physischen Festplatten - dann steht auch die Last. In diesem Fall hilft die Schaltfläche Delphix V2P, mit der Sie aus einer virtuellen Datenbank eine „ehrliche“ Datenbank erstellen können.

Um Speicherplatz zu sparen, täuschen natürlich die Messwerte unseres Delphix-Dashboards - eine 73-fache Reduzierung des Volumens ist zu fabelhaft. In unserer Verarbeitung belegt eine Kopie des Verkaufs mit täglichen Snapshots und archivierten Transaktionsprotokollen für 2 Wochen (200 GB pro Tag) 4,5 TB Speicherplatz. Weitere 1,5 TB - neun Klone mit einer Größe von 50 bis 500 GB, in denen jeweils auch die täglichen Schnappschüsse gespeichert sind. Insgesamt werden 6 TB erhalten.
Wir fügen weitere 15% des freien Speicherplatzes (900 GB) hinzu, damit Delphix normal funktioniert. Wenn wir also nur etwa 7 TB ausgeben, können wir eine Testkopie mit Daten erhalten, die zu jedem Zeitpunkt in den letzten zwei Wochen relevant sind.
Zuvor benötigten wir 54 TB (oder ~ 20 TB unter Berücksichtigung der 2-3-fachen Komprimierung des Speichers), um neun physische Kopien der Datenbank in 6 TB zu speichern. Und im Gegensatz zum neuen System konnten die Entwickler diese Kopien hier nicht verwalten und frühere Zustände wiederherstellen - als die Daten zerstört wurden, war es nur möglich, eine Kopie des Verkaufs neu zu laden.
Mit Delphix können Sie auch schnell verschiedene Zweige desselben Containers für verschiedene Projekte erstellen - und das alles in minimaler Zeit. Entwickler haben keine Angst davor, Daten zu beschädigen. Sie können einen Rollback durchführen und ihren vorherigen Status wiederherstellen. Dies gibt einen Leistungsschub.
Aber es gibt Nuancen ...
Die Eindrücke von Delphix sind überwiegend positiv, obwohl nicht alles perfekt ist. Das größte Problem ist die Verwendung von Festplatten. Jeder Datenblock wird nur einmal für alle virtuellen Kopien gespeichert. Bis alle virtuellen Kopien den Block nicht mehr verwenden, kann er nicht gelöscht werden. Hier können organisatorische Probleme auftreten - nicht alle Benutzer sind bereit, den kurzen Lebenszyklus ihrer Stände zu unterstützen. Wenn der Prüfstand auf einer alten Kopie lebt, werde ich ihn verkaufen. Wir lösen dieses Problem umfassend, indem wir die Festplatten erweitern, ohne den Dienst zu unterbrechen. Wir sorgen dafür, dass immer 15% des freien Speicherplatzes gespart werden. Wenn es kleiner ist, beendet das System einfach die Ausführung von Vorgängen mit virtuellen Kopien. Obwohl die Basen selbst verfügbar bleiben.
Bei Systemen mit intensiver Festplatten-E / A ist die Netzwerkbandbreite wahrscheinlich ein begrenzender Faktor. Abhängig vom spezifischen Lastprofil arbeitet das System möglicherweise besser mit der Virtualisierung. Abhängig von der Auslastung beträgt die durchschnittliche sequentielle Leselatenz der DB-Datei 5-10 ms, was selbst für industrielle Systeme ziemlich gut ist.
Delphix "klassische" Laufwerke sind auf eine Weise verbunden, die ESX unterstützt, und der Anbieter hat eine Liste mit Empfehlungen, wie dies mit maximaler Leistung durchgeführt werden kann. Wir verwenden SAN. Das System selbst präsentiert die Datenträger, auf denen sich die virtuellen Datenbankdateien befinden, nur über das NFS-Protokoll. Aus diesem Grund müssen Sie auf die Bandbreite des Kanals und seine Überlastung achten. In unserem Fall ist es sinnvoll, nur Datendateien für Delphix auf Festplatten-Arrays zu platzieren, damit keine Aktivität in der Bank die E / A-Geschwindigkeit für virtuelle Datenbanken beeinflusst.
Jetzt arbeiten wir an Delphix 5.1.9, aber schauen Sie sich Version 5.2 an - darin hat die Benutzeroberfläche den Flash verlassen und ist laut Hersteller viel praktischer geworden. Delphix hat unsere Kollegen beeindruckt, und nach der Verarbeitung erwägen wir, Profil, CRM und Internetbanking auf dieses Entwicklersystem zu übertragen.