Mehr Agilität ohne Risiko[Gesponsert]

DevOps in der Datenbankentwicklung

DevOps-Prozesse lassen sich mit den richtigen Tools auch in Datenbank-Umgebungen integrieren.
DevOps-Prozesse lassen sich mit den richtigen Tools auch in Datenbank-Umgebungen integrieren. (Bild: Quest)

Bereitgestellt von

Datenbankumgebungen erweisen sich bei der Umsetzung von DevOps-Konzepten oft als Flaschenhals, denn die Datenbankentwicklung birgt ganz eigene Herausforderungen. Doch mit dem Wissen um diese Probleme und den richtigen Tools ist auch hier mehr Agilität möglich.

Unternehmen müssen verschiedene Problemfelder wie Mobilität, Cloud, Big-Data-Analysen, Social Business und weitere in Schach halten. Und im Zentrum dieser Bemühungen steht die schnellere Softwarebereitstellung. Kaum einer möchte noch sechs, neun oder zwölf Monate bis zum nächsten Zyklus einer Softwareversion warten; die Marktanforderungen ändern sich zu schnell und das Risiko, dass eine Implementierung fehlschlägt, wird zu groß.

Viele IT-Abteilungen sind jedoch nicht auf die hohe Geschwindigkeit im heutigen Geschäftsleben eingestellt. Stattdessen vertrauen sie auf traditionelle Abläufe, die langsam, manuell und fehleranfällig sind. So kommt es zu langen Verzögerungen, da die Teams in der Entwicklung, Qualitätssicherung und Testabteilung aufeinander warten müssen.

Wenn dann noch ein Fehler auftritt, gestaltet sich auch die Fehlerbehebung als schwierig. Die Entwicklungsteams, die den Code geschrieben haben, und die Betriebsteams, die ihn implementieren, liegen oft im Streit und schieben sich gegenseitig die Schuld zu. All dies führt zu größeren Verzögerungen und geschäftlichen Einbußen.

Brauchen Sie DevOps?

DevOps kann Unternehmen helfen, die mit diesen Problemen kämpfen. Wenn Sie noch überlegen, ob DevOps für Ihr Unternehmen sinnvoll sein kann, stellen Sie sich einfach die folgenden Fragen:

  • Verlangt das höhere Management von Ihnen, Ihre Lieferfristen und Prozesse zu beschleunigen?
  • Kommt es in Entwicklung, Qualitätssicherung und Auslieferung zu Verzögerungen?
  • Gibt es im Anwendungslebenszyklus viele manuelle Prozesse, die die Bereitstellungszeit verzögern?

DevOps wird manchmal als Konzept, Philosophie oder Aufgabenrolle bezeichnet. Die meisten IT-Fachleute würden jedoch der Definition in Wikipedia zustimmen: DevOps ist eine Softwareentwicklungsmethode, in deren Mittelpunkt Kommunikation, Zusammenarbeit, Integration, Automatisierung und die Messung der Kooperation zwischen Softwareentwicklern und anderen IT-Experten stehen.

Besonderheiten der Datenbankentwicklung

Bei der Umsetzung von DevOps-Konzepten zeigt sich aber immer wieder, dass sich diese Ziele und die damit einhergehende Umstrukturierung der Prozesse nicht so einfach auf Datenbankumgebungen übertragen lassen. Was also steht der Datenbankentwicklung im Wege, zum Rest des Unternehmens aufholen zu können?

Die Antwort liegt in der Natur von Datenbanken und den inhärenten Eigenheiten der Datenbankentwicklung: Bei der Entwicklung von Standardanwendungen haben Änderungen am Code einer Front-End-Anwendung meist weniger Konsequenzen, da die Anwendung, sollte etwas schieflaufen, meist problemlos auf einen vorherigen Build zurückgesetzt werden kann. Es mag zu einer kurzen Serviceunterbrechung kommen, das Risiko des Datenverlusts ist aber gewöhnlich gering.

Bei der Datenbankentwicklung hingegen führt kein Weg daran vorbei, den Status der Datenbank zu erhalten und deren Daten während der Codeänderungen zu schützen. Hierzu ist ein komplexes Scripting erforderlich, das auf dem aktuellen Datenbankstatus des jeweiligen Zeitpunkts basiert. Während Anwendungsentwickler also jederzeit zu einer früheren Version zurückkehren können, müssen Datenbankentwickler zur Zurücksetzung von Änderungen wesentlich mehr Schritte durchführen, im schlimmsten Fall gar die vollständige Datenbank wiederherstellen.

Anwendungsteams checken ihren Code meist einfach ein, um eine Reihe automatisierter Prozesse zu starten: Kompilierung, Test, Prüfung, Staging, Bereitstellung. Die Änderungen werden automatisch in Testumgebungen und schließlich an die Produktion weitergeleitet, während sie die automatisierte Validierung durchlaufen. Sind aber zugleich auch Änderungen am Datenbankcode erforderlich, so muss das restliche Unternehmen warten, da die Prozesse auf dieser Ebene nach wie vor manuell durchgeführt werden.

Schnellere Prozesse bei niedrigeren Kosten ohne zusätzliches Risiko

Die Gründe für den Trend hin zu mehr Agilität sind die Reduzierung des Risikos, die Senkung der Kosten und schnellere Geschwindigkeiten. Dies sind auch die Gründe für die Automatisierung des Datenbankentwicklungszyklus.

Das beherrschende Thema der Datenbankentwicklung war immer, einen Kompromiss zwischen Geschwindigkeit und Qualität (bzw. Risiko) zu finden. Zur Vermeidung von Risiken arbeiten Datenbankentwickler methodisch und sorgfältig, kontrollieren ein jedes Script, um Fehler auszuschließen.

Ganz offensichtlich widerspricht das der Zielsetzung, Kosten zu sparen oder die Geschwindigkeit zu erhöhen. Ganz zu schweigen von der Agilität und Wendigkeit des gesamten Business. Wenn Datenbankänderungen der Engpass sind und deren Verringerung als bester Schutz der Datenbank betrachtet wird, dann erreichen Unternehmen, die sich an Stabilität klammern, niemals wahre Agilität.

Ergänzendes zum Thema
 
Wie können DevOps-Datenbanktools zu einer Beschleunigung der Softwarebereitstellung beitragen?

Toad DevOps Toolkit

Quest hat über die letzten zwei Jahre mit vielen Kunden zusammengearbeitet, um besser zu verstehen, welche Herausforderungen bestehen, die Oracle-Datenbankentwicklung in ihre DevOps Infrastruktur zu integrieren. Die Befragung fokussierte sich auf Mitarbeiter, Prozesse und Technologien, die eine Rolle für die erfolgreiche Implementierung von DevOps spielen.

Quest stellt in diesem Umfeld ein neues Produkt aus der TOAD Familie vor – das Toad DevOps Toolkit.

Das Toad DevOps Toolkit und sein Platz in der DevOps-Infrastruktur.
Das Toad DevOps Toolkit und sein Platz in der DevOps-Infrastruktur. (Bild: Quest)

Das Toad DevOps Toolkit reduziert den Datenbankengpass durch die Vereinfachung von wichtigen Datenbankentwicklungs-Funktionen in ihrem DevOps Workflow, ohne die Qualität, die Performance und die Zuverlässigkeit negativ zu beeinflussen.

Diese einzigartige Applikation stellt wichtige „Toad for Oracle“-Funktionalitäten als programmierbare Objekte zu Verfügung. Zum Beispiel das Testen vom PL/SQL Code auf funktionale Korrektheit und das Einhalten von Qualitätsstandards und Wartbarkeit, Schema- und Datenvergleich, um die Integrität sicherzustellen und Risiken zu minimieren oder Skriptimplementierung für physische Datenbankänderungen während der Release-Pipeline.

Aufruf einer Codeanalysefunktion vom Toad DevOps Toolkit in Jenkins über ein PowerShell-Skript.
Aufruf einer Codeanalysefunktion vom Toad DevOps Toolkit in Jenkins über ein PowerShell-Skript. (Bild: Quest)

Das Toad DevOps Toolkit lässt sich auf einem Windows-Laptop, -Desktop, -Server oder einer VM, sowohl on-premises als auch in der Cloud (vorausgesetzt, es kann sich mit dem Build Automation Server verbinden) installieren, um die Flexibilität zu maximieren. DevOps Automatisierungstools wie Jenkins und Bamboo können so auf Datenbanken bezogene Schritte als Teil ihrer kontinuierlichen Integrationsprozesse beinhalten, um die Fertigstellung von Projekten zu beschleunigen. Beispielsweise als PowerShell- und VB-Skripte.

Ein statischer Code-Review HTML Report, generiert durch einen Code-Analyse-Aufruf des Toad DevOps Toolkits, in der Bamboo-Build-Konsole.
Ein statischer Code-Review HTML Report, generiert durch einen Code-Analyse-Aufruf des Toad DevOps Toolkits, in der Bamboo-Build-Konsole. (Bild: Quest)

Funktionsaufrufe in das Toad DevOps Toolkit um statische Code Reviews, Unittests usw. auf Datenbankobjekte in dem Build durchzuführen, mit dem Output als Reports, JSON, Logs usw. sind in der Build-Konsole sichtbar. Die Build-Konsole bleibt das Dashboard, durch das DevOps-Operationen orchestriert werden.

In diesem ersten Release vom Toad DevOps Toolkit fokussieren wir uns auf die primären Elemente, die notwendig sind, um Oracle-Entwicklungsfunktionen in den Build- und Deployment-Prozess zu bringen.

  • PL/SQL Unit Tests – Sicherstellen der funktionalen Richtigkeit von PL/SQL Code in Ihrem Build mittels Unit Tests und Prüfung des Pass/Fail-Status.
  • Statische Code Reviews – Verbesserung der Qualität und der Wartbarkeit von PL/SQL Code durch statische Code Reviews basierend auf dem definierten Regelsatz der Toad-Code-Analyse und die Beurteilung der Qualität durch vordefinierte Schwellwerte.
  • Datenbank-, Schema- und Datenvergleich – Vergleich von Oracle-Datenbankkonfigurationen, Schemaobjekten, und Daten in Tabellen zwischen Quell- und Zieldatenbanken (wie Development- und Testdatenbanken) und Generierung von Skripten zu Synchronisation.
  • Skriptausführung – Einfügen Ihrer Build-Artefakte in die Zielumgebung und Prüfen des Fehler- oder Erfolgsstatus.

Was ist, wenn ich als Oracle-Datenbankentwickler keinen Funktionstest oder Code Reviews mache? Diese verbreitete Frage haben wir in den vergangenen zwei Jahren immer wieder von Kunden gehört. Die Antwort ist, dass dies unabdingbar ist, wenn man die Datenbankentwicklung in einen automatisierten Build-Prozess integrieren möchte.

Die gute Nachricht ist, dass dies nicht so schwer ist wie gedacht. Verwenden Sie Toad for Oracle: Die empfohlene Edition ist die Toad for Oracle Developer Edition (wurde auch als Toad Development Suite for Oracle bezeichnet). Sie beinhaltet alles was Sie und Ihre Entwickler brauchen, um hohe Qualität und robusten Code, der in Produktionsumgebungen skaliert und funktioniert, zu erstellen.

Toad for Oracle Developer Edition ist die perfekte Ergänzung zum Toad DevOps Toolkit. Es ermöglicht Ihren Entwicklungsteams PL/SQL Unit-Test zu kreieren und zu warten, konsistente Code-Reviews durchzuführen, SQL- und PL/SQL Code zu optimieren und die Skalierbarkeit der Performance zu testen, bevor sie in die Produktion übernommen werden.

Zusammenfassung des Toad DevOps Toolkit:

  • Integriert Datenbankentwicklung, Test- und Deployment-Aufgaben in den DevOps-Workflow.
  • Bietet statische und dynamische Code-Qualitätsstatistiken in Umgebungen mit kontinuierlicher Integration und Verteilung.
  • Fördert die Qualität von Code.
  • Stellt sicher, dass Projektfristen eingehalten werden.
  • Erhöht die Produktivität durch minimale Störung des DevOps-Prozesses.
  • Integriert sich in nahezu jedes Tool zur kontinuierlichen Integration wie Jenkins, TFS und Bamboo.
copyright

Dieser Beitrag ist urheberrechtlich geschützt. Sie wollen ihn für Ihre Zwecke verwenden? Infos finden Sie unter www.mycontentfactory.de (ID: 45072489 / Continuous Delivery & Integration)