CutoverManager: Technischer Einblick
Ihre Plandaten sind sicher!
Der Startschuss für die Entwicklung des CutoverManagers war ein detailliertes und ausgereiftes Anforderungsdokument, welches die Firmengründer aufgrund ihrer langjährigen Erfahrung in der Planung, Steuerung und Durchführung von erfolgreichen Cutovers/Go-Lives verfasst haben. Basierend hierauf wurde ein Architekturentwurf ausgearbeitet, der nicht nur die funktionalen Anforderungen aus dem Dokument umsetzt, sondern auch die geforderten Qualitätseigenschaften vollständig berücksichtigt.
Architektur
Die Ergebnisse des Architekturentwurfs, wie beispielsweise technischer/fachlicher Kontext und querschnittliche Konzepte, sind in arc42 einem Architekturdokumentations-Template festgehalten. Als UML-Modellierungswerkzeug wird Enterprise Architect eingesetzt. Im Modell sind nicht nur die einzelnen Komponenten und deren Beziehungen zueinander abgebildet, sondern auch ein vollständiges Domänenmodell modelliert, welches in normalisierter Form als Datenbankschema verwendet wird.

Der CutoverManager ist eine Webanwendung nach dem Client-Server Architekturmuster mit einer zusätzlichen Schichtenarchitektur im Server. Die Schichtenarchitektur besteht aus den folgenden drei technischen Schichten:
- Controller
- Nimmt eingehende Anfragen entgegen, validiert die Daten und leitet die Anfrage zur Beantwortung an die Business-Schicht weiter
- Business
- Enthält die Fachlichkeit und berechnet beispielsweise einen Plan. Hierfür holt es sich die notwendigen Daten von der Domain-Schicht ab
- Domain
- Kommuniziert mit dem Domänenmodell in der Datenbank
Die Entscheidung für eine Webanwendung wurde bewusst getroffen, da es nicht nur State-of-the-Art ist, sondern auch die Wartung und den Betrieb deutlich vereinfacht.
Die Wahl der Programmiersprache fiel durch ihre Plattformunabhängigkeit und ihren Verbreitungsgrad auf Java.
Spring Boot
Für die Entwicklung von Enterprise-Anwendungen mit Java hat sich unter anderem das Framework Spring durchgesetzt. Anstatt nativ Spring zu verwenden, wird das Spring Boot Framework eingesetzt, da es zusätzlich die Qualitätseigenschaften eines einfachen Deployments und die Cloud-Fähigkeit bestens unterstützt.
Spring Boot ermöglicht die Erstellung von eigenständigen Spring-Anwendungen. Das heißt, es wird kein externer Applikations-Server benötigt, sondern ein embedded Tomcat wird im Deployment mitgeliefert. Des Weiteren besteht die Anwendung aus einer einzigen JAR-Datei, einer sogenannten „fat-jar” Datei, welche sowohl On-Prem, als auch in der Cloud betrieben werden kann.
Konzepte
Bei der Entwicklung des CutoverManagers wurde von Beginn an auf die Ausarbeitung und Einhaltung von übergreifenden Konzepten großen Wert gelegt. Beispiele von ausgearbeiteten Konzepten im CutoverManager sind:
- Internationalisierung
- Mehrsprachigkeit der Anwendung
- Unterstützung von Zeitzonen
- Integrität der Daten
- Transaktionsgesicherte Veränderung der Daten
- Performance-Steigerung durch Optimistic-Locking mit abgesicherter Versionierung der Datensätze bei parallelen Änderungen
- Auditing der Datensätze (Speichern von Erstellung- und Änderungs-Zeitpunkt eines Datensatzes mit Benutzerangabe)
- Privatsphäre und Schutz der Daten
- Offline-Fähigkeit
- Keine Verwendung von Drittanbieter-Bibliotheken, welche die Daten nach „draußen” schicken
- Benutzerverwaltung mit Rechtesteuerung
- Betrieb/Deployment
- Unterstützung von verschiedenen Datenbankmanagementsystemen (DBMS)
- Vollständige Verwaltung des Datenbankschemas durch die Anwendung
- Skalierbarkeit durch Zustandslosigkeit
- Kommunikationskanal
- Benachrichtigung der Aufgabenempfänger durch E-Mail
Transaktion
Nachdem ein Cutover eine minutiöse Planung mit nachvollziehbarer Steuerung und Durchführung voraussetzt, kommen ausschließlich transaktionsbasierte Datenbanken zum Einsatz. Diese werden mithilfe von JDBC angesprochen. Zusätzlich kommt JPA als ORM Framework (Object-relational mapping) zum Einsatz. Zur Implementierung wird Hibernate verwendet.
Die Transaktions-Steuerung übernimmt vollständig Spring Boot. Als Transaktions-Strategie wurde Optimistic-Locking gewählt, weil es eine deutlich gesteigerte Performance im parallelen Mehrbenutzer-Betrieb erlaubt. Darüber hinaus schützt die Versionierung der Datensätze durch Hibernate die gleichzeitige Bearbeitung eines Datensatzes dahingehend, dass NICHT der letzte Änderer gewinnt. Stattdessen wird eine Fehlermeldung ausgegeben, dass dieser Datensatz von einem anderen Benutzer bereits geändert wurde und eine Aktualisierung der Daten notwendig ist, bevor eine weitere Änderung durchgeführt werden kann.
Cloud
Als weitere Vereinfachung des Deployments, vor allem in Cloud-Umgebungen, wird ein Framework für das Änderungsmanagement von Datenbankschemata eingesetzt. Die Wahl fiel dabei auf Liquibase. Dementsprechend entfallen beim Deployment manuelle Schritte für das Einspielen von SQL-Statements. Mithilfe von Liquibase können auch datenbank-spezifische Datentypen oder Eigenarten gezielt gesteuert werden, was eine perfekte Ausgangssituation für die Unterstützung verschiedener DBMS darstellt.
Für das Erreichen der Qualitätseigenschaften Ausfallsicherheit und Verfügbarkeit ist der CutoverManager skalierbar. Dies wird durch eine datenbankbasierte Session-Behandlung erreicht. Eine Session ist aufgrund der notwendigen Authentifizierung zwingend erforderlich. Hierüber werden auch die Benutzerrollen und die daraus resultierenden Zugriffsrechte abgedeckt und geprüft.
Für die Benachrichtigung von Aufgabenverantwortlichen wird primär auf Mail gesetzt. Technisch wird dabei die JavaMailSender-Klasse von Spring verwendet, welche mittels SMTP mit einem beliebigen Mail-Server kommuniziert. Bei der Implementierung wurde eine Abstraktionsschicht eingezogen, um zukünftig weitere Kommunikationskanäle anbieten zu können. Beispiele hierfür sind RocketChat oder Slack.
Client
Nach der detaillierten Ausführung der Server-Technologien kommen wir zum Client, der ebenfalls serverseitig mit Frameworks und Bibliotheken aufwartet.
Als Client wird ein installierter, moderner Browser vorausgesetzt, wie es bei Webanwendungen üblich ist. Als Technologie kommt ein für Multipage-Anwendungen optimiertes Framework Thymeleaf am Server zum Einsatz. Dieses erzeugt serverseitig gerendertes HTML, welches mit angereicherten JavaScript-Bibliotheken und Grafiken vom Server zum Client ausgeliefert wird.
Bei der Visualisierung von beispielsweise Datums- und Zeitpickern und client-seitigen Steuerungen kommt jQuery, jQuery-UI und spezialisierte JavaScript-Bibliotheken zum Einsatz. Die Darstellung der Gantt-Charts wurde ebenfalls in JavaScript entwickelt.
Ausblick
Abschließend geben wir einen Ausblick auf aktuell bei unserem Team in Diskussion befindlichen Entwicklungsmöglichkeiten:
- Responsive Web Design
- REST-Schnittstelle
- Anbindung von weiteren Kommunikationskanälen
- Planungsunterstützung durch Maschine-Learning-Ansätze
- Realtime-Benachrichtigung durch WebSockets
- Integrierte Chat-Funktion
- Smartphone App
Hierbei stehen immer die potenziellen Anforderungen unserer Kunden im Vordergrund.
Zusammenfassend sind alle Entscheidungen unter Berücksichtigung der State-of-the-Art Technologien und höchsten Datenschutzanforderungen getroffen worden.
Unser Fazit: „Ihre Plandaten sind bei uns im CutoverManager sicher.”
Änderungshistorie
12. April 2020 – Überschriften überarbeitet
24. November 2019 – Veröffentlichung
Passende Artikel zum Thema
