Blog

Datenbankanwendungen mit Azure SQL Server und Delphi realisieren

Modernes Brot- und Buttergeschäft

Nov 9, 2022

Raten Sie mal, mit welcher Art von Software viel Geld verdient wird. Richtig: Datenbankanwendungen, die für die Digitalisierung in Unternehmen sorgen. Dabei herrscht der Trend vor, die Datenhaltung in die Cloud auszulagern. Das kann man auch für bestehende Applikationen mit einer sanften Migration erreichen. Ein Beispiel mit Azure und Delphi.

Seien wir als Entwickler:innen doch ehrlich: Viele Applikationen für Unternehmen sind klassische Datenbankanwendungen, mit dem Ziel, die digitale Transformation voranzutreiben. Der Autor bezeichnet diese Art von Aufträgen auch gern als „Brot- und Buttergeschäft“. Dabei geht es im Wesentlichen um vergleichbare Anforderungen, in deren Mittelpunkt eine datenbankgetriebene Client-Anwendung steht. Datenbankmodell und Verarbeitungslogik sind zu entwickeln und müssen regelmäßig an sich ändernde Anforderungen angepasst werden. Typische Beispiele sind das Verwaltungsprogramm der Aufträge einer beliebigen Branche oder die Planungssoftware für die individualisierte Projektsteuerung. Diese Art von Software mag technisch wenig spannend klingen, sie erfüllt jedoch genau den Zweck, dem IT in einem Großteil der Unternehmen dienen soll.

 

ZUM NEWSLETTER

Keine News mehr verpassen

 

Bei der Entscheidung für oder gegen ein solches Projekt sind stets auch die Alternativen zu betrachten. Sie lauten Standardsoftware oder die Entscheidung für ein System, das in einem Konfigurationsprozess an unterschiedliche Anforderungen angepasst werden kann. Die individuelle Softwareentwicklung bringt dabei den Vorteil einer guten Anpassbarkeit an den Geschäftsprozess mit. Sie muss sich jedoch in Fragen der Kosten und zeitlichen Umsetzung mit den genannten Alternativen messen, d. h., eine möglichst effiziente, kostengünstige und dennoch technisch aktuelle Lösung ist gefragt.

Für neue Applikationen ist der passende Technologiestack auszuwählen und für bestehende Anwendungen ist fortlaufend zu prüfen, ob und welche Teile bei einer Weiterentwicklung ggf. migriert werden sollen. Beispielhaft wollen wir den Wechsel des Datenbanksystems von einem lokal betriebenen Datenbankserver zu einer in der Cloud gehosteten Datenbank betrachten.

Technologische Entscheidungen müssen dabei stets vor dem Hintergrund der konkreten betrieblichen Anforderungen betrachtet werden. Daher widmet sich der kommende Abschnitt zunächst der Frage, welche Rolle Software heute in Unternehmen einnimmt.

Software als Innovationstreiber und die Wahl der Technologie

In immer mehr Unternehmen wird der Einsatz von Informationstechnologie zu einem Innovationstreiber. Unternehmen, denen es gelingt, ihre Geschäftsmodelle umfassend zu modernisieren oder sogar komplett zu transformieren, haben eine gute Chance, sich im harten Wettbewerb Vorteile zu erarbeiten. Ein einfaches Beispiel: Eine innovative Plattform zur Abwicklung aller relevanten administrativen Vorgänge in einem Produktionsbetrieb sorgt für eine Verschlankung und Beschleunigung der Prozesse. Der Einkauf von Vorprodukten wird bedarfsgerecht erledigt und Rechnungen werden ohne Verzögerung gestellt. Statt unzähliger Tabellen (Excel) und Dokumente (Word) werden alle relevanten Geschäftsprozesse in einem umfassenden Softwaresystem zusammengefasst. Peter Lieber, ehemaliger Präsident des Verbands Österreichischer Software Industrie (VÖSI), fasst es in einem Zitat [1] etwas provokant wie folgt zusammen: „Software ist der Innovationstreiber – meistens sogar gegen die IT. IT ist oft konservativ und will verhindern, dass zu viel Innovation die bestehenden Systeme gefährdet.“ Damit Software die Rolle des Innovationstreibers erfüllen kann, müssen einige Voraussetzungen gegeben sein (Abb. 1):

  • Fachliche Anforderungen: In einer sorgfältigen Anforderungsanalyse sind die Anforderungen an das umzusetzende System genau zu erheben. Die Güte einer solchen Analyse ist entscheidend für den Erfolg der Software. Individualsoftware wird auf die Belange der Kund:innen zugeschnitten und sollte Standardsoftware überlegen sein.

  • Moderne und ausgereifte Technologie: Die eingesetzte Technologie muss zum einem aktuell sein und sich zum anderen auch bewährt haben. Eine ausgereifte und etablierte Technologie ist in vielen Fällen entscheidend, um das Ziel der Digitalisierung möglichst mühelos und mit einem effizienten Entwicklungszyklus zu erreichen.

  • Geräteneutralität: Um die Anwendungen auf den unterschiedlichsten Geräten nutzen zu können, sind meist Webapplikationen oder Cross-Platform-Apps gefragt. Beide Anwendungsarten bieten eine Reihe von Vorteilen. Webanwendungen benötigen nur einen Browser auf Seiten des Anwenders. Cross-Platform-Apps haben den Vorteil, auch auf benötigte Hardware- und Systemkomponenten zugreifen zu können.

  • Moderne grafische Benutzeroberflächen und eine ansprechende User Experience: Auch bei Businessapplikationen werden heute hohe Ansprüche an das User Interface gestellt. Die gewählte Technologie muss in der Lage sein, eine solche grafische Oberfläche zu realisieren. Das User Interface muss im Hinblick auf das Design und die Bedienung sorgfältig gestaltet werden.

  • Nutzung diverser Datenhaltungstechnologien: Die Unternehmensdaten werden in der Regel auf Datenbankservern gehalten. Im Zuge einer weiteren Flexibilisierung werden diese heute häufig in die Cloud ausgelagert, sofern dem keine betrieblichen Belange entgegenstehen.

  • Effiziente Umsetzung: IT-Entwicklungsprojekte stehen stets unter einem gewissen wirtschaftlichen Druck. Vor dem Hintergrund steigender Kosten muss es gelingen, das Projekt in einem vorgegebenen Budget und der gewünschten Zeit umzusetzen. Es gilt, das magische Viereck des IT-Projektmanagements aus Kosten, Zeit, Qualität und Quantität in den Griff zu bekommen. Dieses Ziel kann besser durch etablierte Technologien und einen passenden Werkzeugeinsatz erreicht werden.

  • Gute Wartbarkeit: Die Lebensdauer einer Applikation hängt im Wesentlichen davon ab, wie gut sie über die geplante Nutzungsdauer an sich stetig ändernde Anforderungen angepasst werden kann. Maßgeblich ist auch hier unter anderem die Beständigkeit der Technologie.

Vor diesem Hintergrund die passende Technologie auszuwählen ist mitunter ein komplexer Vorgang. Die Vielfalt der Optionen macht den Entscheidungsprozess nicht einfach. Fragt man die Entwickler:innen, dann brennen sie für jede neue Technologie. Das ist die notwendige Neugier, um auch über viele Jahre den Spaß am Job zu behalten. Ebenso ist es ein Garant dafür, dass technische Innovationen vorangetrieben werden. Noch sehr neue technische Ansätze sind jedoch in der Regel nur eingeschränkt geeignet, um ein Softwareprojekt unter den gegebenen Restriktionen erfolgreich umzusetzen. Typische Kinderkrankheiten und fehlende Erfahrungen sprechen dagegen. Andererseits muss man auch stets mit der Zeit gehen und veraltete Technologien sollten in einem neuen Projekt auch keinen Platz haben.

Bewährt hat sich ein gemischtes Vorgehen: Die eingesetzten Technologien werden immer wieder auf den Prüfstand gestellt, evaluiert und schrittweise durch neue Komponenten ersetzt. Gelingt dieses Vorgehen, dann kommt es zu keinen größeren Systembrüchen. Man kann technologische Updates in die Lösung integrieren und dennoch einen effizienten Entwicklungszyklus beibehalten.

Ein Softwaresystem besteht normalerweise aus mehreren Komponenten. Als Entwickler:in oder Softwarearchitekt:in hat man dabei die Wahl und die Qual, das passende System zu bestimmen. Neben den Anforderungen der Kund:innen, müssen dabei auch die technischen Möglichkeiten des Teams, die anfallenden Kosten, die verfügbare Zeit und die Erfahrung berücksichtigt werden. Anhand der Anforderungen können die unterschiedlichen technischen Optionen ermittelt und bewertet werden. Ein typischer Schritt bei einer Erneuerung der technischen Basis ist die Verlagerung von Teilen der Applikation in die Cloud. Relativ einfach – wir bezeichnen es als sanfte Migration – ist das für das System der Datenhaltung zu realisieren, wie der kommende Abschnitt zeigt. Dabei können die anderen Bestandteile des Softwaresystems beibehalten werden und die in Administration und Wartung aufwendige Datenbank wird aus dem Softwaresystem ausgelagert.

 

Migration der Datenhaltung in die Cloud

Unternehmensapplikationen müssen in den meisten Fällen auf Datenbanken zugreifen. Dabei wird zwischen relationalen und NoSQL-Datenbanken unterschieden. Relationale Datenbanken machen weiterhin einen Großteil der Datenhaltung für Unternehmensapplikationen aus, da sich Unternehmensanforderungen im Allgemeinen sehr gut über zueinander in Beziehung stehende Tabellen abbilden lassen. Oft verwendet wird zum Beispiel Microsoft SQL Server. Bezüglich der physischen Anordnung der Datenbanken lassen sich grob die folgenden drei Kategorien differenzieren:

  • Lokale Datenbank: Eingebettet in die Applikation werden die Daten lokal auf dem Rechner des Softwaresystems abgelegt. Das ist heute die Ausnahme und nur für kleinere Applikationen geeignet.

  • Datenbankserver: Es wird eine klassische Client-Server-Struktur betrieben. Die Technologie ist in vielen Softwareapplikationen seit vielen Jahren Standard und etabliert.

  • Cloud-gehostete Datenbanken: Die Infrastruktur für die Datenbank wird in die Cloud verlagert. Dabei gibt es unterschiedliche Abstufungen, beginnend beim Betrieb auf einer virtuellen Maschine (VM) mit einem Serverbetriebssystem und einer installierten Datenbank bis hin zur Nutzung als virtuelle SQL-Datenbank.

Je nach gewähltem „Betriebsmodell“ (Abb. 2) für den Datenbankserver in der Cloud handelt es sich um Infrastructure as a Service (IaaS), zum Beispiel einen SQL-Server in einer virtuellen Maschine, oder um Platform as a Service (PaaS), zum Beispiel eine virtualisierte SQL-Datenbank, wobei man sich über den technologischen Unterbau keine Gedanken mehr machen muss. Mit anderen Worten: Beim Betrieb des Datenbankservers als virtuelle Maschine ist man weiterhin für die Administration des Servers zuständig, während man die Verantwortung für die Hardware vollständig abgegeben hat. Bei der Nutzung einer virtuellen Datenbank kann diese einfach nach Konfiguration genutzt werden.

 

Die Verlagerung der Datenbank in die Cloud ist nicht nur ein Trend, sondern bringt auch eine Reihe von Vorteilen:

  • Kosten: Geringere Kosten bzw. gute Kalkulierbarkeit durch eine Verlagerung der Infrastruktur zum Serviceanbieter

  • Verwaltung: Es verringert sich der Aufwand für die Einrichtung, den Betrieb und die Wartung der Infrastruktur je nach Betriebsmodell

  • Service-Level: Cloud-Services bieten eine hohe Verfügbarkeit von 99,95 Prozent oder mehr. Diese Werte können mit einer eigenständig betriebenen Infrastruktur nur mit großem Personal- und Sachaufwand erreicht werden.

  • Flexibilität: Die Leistung kann schnell und ohne große Verzögerungen mit direkten Auswirkungen auf die Kosten nach oben oder auch nach unten skaliert werden.

Natürlich gibt es auch Nachteile bei der Nutzung von Cloud-Services. Beispielsweise ist die Einhaltung der Datenschutzvorschriften (DSGVO) sicherzustellen. Da die Daten nunmehr von einem Dritten, dem Cloud-Dienstleister, vorgehalten werden, ist dieser Schritt sorgfältig mit dem Kunden gemeinsam zu planen und zu entscheiden.

Wie kann die Verlagerung der Datenbank konkret in der Praxis aussehen? Für Softwaresysteme, die bisher eine SQL-Datenbank auf dem eigenen Server genutzt haben, kann man eine Migration auf eine in der Cloud gehostete Datenbank erwägen. Am Beispiel des häufig eingesetzten Microsoft SQL Servers soll dieses Szenario skizziert werden. Über das Portal unter [3] kann man beide Datenbanken mit ihren zentralen Eigenschaften vergleichen. Die Eigenschaften der beiden Datenbankvarianten sind nahezu identisch. Ein Blick in die Dokumentation von Azure SQL [2] bestätigt das. Feingranular wird dabei nochmals zwischen den Cloud-Betriebsarten unterschieden. Die höchste Komptabilität im Vergleich zu einem on premises betrieben SQL-Server bietet dabei eine in Azure gehostete Virtuelle Maschine mit einem installierten SQL-Server. Bei einer Nutzung dieser Cloud-Betriebsart spricht man von einer „Lift & Shift“-Migration, die mit nur wenigen oder ganz ohne Änderungen auskommt. Bei der Konzeption eines vollständig neuen Softwaresystems ist man hier noch weniger eingeschränkt, da ein möglicher Anpassungsaufwand – bedingt durch die Cloud-Migration – in diesem Fall entfällt.

 

 

Fallbeispiel mit Delphi und einem Azure SQL Server

Gemäß dem beschriebenen Ziel einer effektiven Entwicklung soll hier beispielhaft die Verwendung des Azure SQL Server mit nativen, auf dem Client ausgeführten Applikationen beschrieben werden. Als Entwicklungsumgebung wird Delphi bzw. RAD Studio [4] verwendet. Mit dieser integrierten Entwicklungsumgebung, aktuell in Version 11.2 vorliegend, ist es möglich, Cross-Platform-Anwendungen für die Systeme Windows, macOS, Linux (Desktop), iOS und Android (Mobile) sowie über ein weiteres Framework (TMS WebCore [5]) auch Webapplikationen zu erstellen. Ein Vorzug dieser Entwicklungsumgebung ist eine komponentenbasierte Entwicklung mit einem grafischen Designer. Damit ist ein effizienter Entwicklungszyklus mit einer schnellen Bereitstellung des Softwaresystems für den Kunden möglich. Bisher wurden solche Systeme primär als klassische Client-SQL-Systeme konzipiert (Abb. 3).

Das Ziel besteht nun in einer Verlagerung der Datenbank in die Cloud (Abb. 4). Geeignet ist beispielsweise der Azure SQL Server. Dazu muss die Schnittstelle zwischen Anwendung und Datenbank angepasst werden. Als generischer Datenbanktreiber kommt in Delphi-Anwendungen die Komponente FireDAC zum Einsatz. Sie bietet über native Datenbanktreiber einen universellen Zugriff auf unterschiedliche Datenbanken, zum Beispiel Oracle, MS SQL und MySQL und viele mehr. FireDAC ist damit eine generische Abstraktionsschicht zwischen dem Anwendungssystem und der Datenbank (Abb. 5).

Statt einer Verbindung zu einem lokal verwalteten Datenbankserver wird eine Verbindung zum Cloud-Service mit der Datenbank in Azure hergestellt. Um sie zu betreiben und aus einer Delphi-Applikation zu adressieren, sind die folgenden Schritte notwendig:

  1. Anlegen einer SQL-Server-Instanz in Azure: Dazu ist der Name der Datenbank festzulegen, ein Server auszuwählen bzw. (wenn noch nicht vorhanden) neu zu erstellen und das Abrechnungsmodell über die Zuweisung einer Ressourcengruppe zu wählen (Abb. 6).

  2. Verbindungsdaten: Die Verbindungsdaten sind abzurufen: Servername, Name der Datenbank, Benutzername und Passwort.

  3. Verbindung konfigurieren: Der in Azure gehostete SQL-Server ist aus Sicht des Datenbanktreibers (FireDAC) mit einem lokal betriebenen SQL-Server identisch. Die Verbindungsdaten sind anzupassen. In Delphi erfolgt das über den Datenexplorer. Als Datenbanktreiber ist MSSQL auszuwählen. Die Verbindungsdaten (Schritt 2) sind zur Konfiguration einzugeben (Abb. 7).

  4. Import von Daten: Vorhandende Daten sind ggf. von einer lokal betriebenen Serverinstanz zum in der Cloud gehosteten SQL-Server zu migrieren.

Damit ist der Weg zur Nutzung einer SQL-Datenbank, die über Azure bereitgestellt wird, skizziert. Weitere technische Details finden sich im Blogbeitrag unter [7]. Wie bereits erwähnt, ist das Vorgehen sowohl für bestehende Anwendungen als auch für die Neuentwicklung geeignet. Der Technologiestack ist damit auf Unternehmensapplikationen ausgerichtet. Unsere beschriebenen Anforderungen für das „Brot- und Buttergeschäft“ der Anwendungsentwicklung können auf diese Weise gut umgesetzt werden und es ist eine Konzentration auf die Fachanwendung möglich. Sie wird im Beispiel mit Delphi realisiert. Die Vorzüge einer integrierten Entwicklungsumgebung können dabei genutzt werden. Die aufwendige Administration und der Betrieb des Datenbankservers werden in die Cloud ausgelagert.

 

Fazit und Ausblick

Betriebliche Anwendungen bestehen oft viele Jahre. Bei der Auswahl der passenden Technologie sind neben den Anforderungen der Kund:innen auch die Aspekte Wirtschaftlichkeit der Entwicklung und Wartbarkeit zu berücksichtigen. In diesem Artikel haben wir gezeigt, wie man die Datenhaltung vom lokal betriebenen Datenbankserver in die Cloud verlagert. Das Vorgehen kann sowohl für bestehende Applikationen (teilweise oder sanfte Migration) oder für Neuentwicklungen von Interesse sein.

Ihr aktueller Zugang zur .NET- und Microsoft-Welt.
Der BASTA! Newsletter:

Behind the Tracks

.NET Framework & C#
Visual Studio, TFS, C# & mehr

Agile & DevOps
Best Practices & mehr

Web Development
Alle Wege führen ins Web

Data Access & Storage
Alles rund um´s Thema Data

HTML5 & JavaScript
Leichtegewichtig entwickeln

User Interface
Alles rund um UI- und UX-Aspekte

Microservices & APIs
Services, die sich über APIs via REST und JavaScript nutzen lassen

Security
Tools und Methoden für sicherere Applikationen

Cloud & Azure
Cloud-basierte & Native Apps