+49 40 790 117 97 info@sab-team.com

Menu
Flexible, kostengünstige und skalierbare Anwendungsarchitektur – ein Praxisbeispiel

Flexible, kostengünstige und skalierbare Anwendungsarchitektur – ein Praxisbeispiel

By In Allgemein On 11. September 2023


Im Bereich der kundenspezifischen Softwareentwicklung existieren bereits viele erprobte und bewährte Methoden für moderne Anwendungsarchitekturen. Insbesondere bei mehrschichtigen und verteilten Anwendungen können eine hohe Leistung und Flexibilität der Anwendungen erreicht werden. Jedoch steigen die Kosten für eine individuelle Softwareentwicklung oft in eine Höhe, die Kunden nicht immer bereit sind zu investieren.

In diesem Beitrag wird eine Architektur vorgestellt, die ebenfalls eine skalierbare Leistung mit hoher Flexibilität der Anwendung bietet, aber durch den gezielten Einsatz von Tools zur Produktivitätssteigerung die Kosten für die Softwareentwicklung deutlich unter dem üblichen Niveau hält.

Das Ziel: individuelle Anwendung, geringe Kosten
Für ein Entwicklungsprojekt, in dem individuelle Anforderungen umzusetzen waren, sollte modernste Technologie bei gleichzeitiger Minimierung der Entwicklungskosten zum Einsatz kommen.

Die Anforderungen zu Beginn des Projekts wurden wie folgt definiert:
• Es soll nur eine einzige, moderne Programmiersprache verwendet werden.
• Für die Anwendung soll ein responsives Web-Interface erstellt werden, damit sie auf PCs und Tablets genutzt werden kann.
• Für die Erstellung des User-Interface muss ein Rapid-Development-Tool genutzt werden, um aufwändige Programmierung zu vermeiden.
• Die Software-Entwicklung muss unabhängig vom gewählten Betriebssystem erfolgen und auf alle gängigen Betriebssysteme übertragbar sein.
• Die Architektur muss vollständig in der Cloud oder vollständig on premises laufen können oder in Teilen in der Cloud und in Teilen on premises.
• Komponenten zum Einsatz Künstlicher Intelligenz müssen ermöglicht werden.
• Bereits existierender Speicher (Storage) wie NAS-Systeme, Cloud-Storages müssen mit geringem Aufwand integrierbar sein.

 

Aufgrund dieser Vorgaben fiel die Wahl auf die Programmiersprache Python und das RAD-Tool Anvil. Damit können Web-Interfaces grafisch und mit geringem Programmieraufwand erstellt werden. Anvil stellt hierfür eine Sammlung von grundlegenden Steuer-Elementen zur Erstellung eines Web-Interfaces bereit, die leicht in Python angepasst und mit Logik versehen werden können:

Beispielsweise können die Grundeigenschaften eines Buttons über ein Menü festgelegt werden.

Für jedes Event, das ein Steuerelement bietet, können Funktionen in Python erstellt werden, um eine Anwendungslogik auszuführen. Eine Anpassung mit HTML, Javascript, CSS usw. ist mit Anvil möglich, aber verzichtbar, wenn man sich mit einem „einfachen“ Web-User-Interface begnügen möchte.
So müssen z.B. Login-Dialoge nicht programmiert, sondern nur konfiguriert werden:

Auswahlfelder und Tabellen für Stammdaten lassen sich durch wenige Code-Zeilen mit Leben füllen:

Popup-Dialoge wie der nachfolgende

und Such-Dialoge lassen sich einem grafischen Editor erstellen und mit wenigen Code-Zeilen mit Anwendungslogik versehen:

 

Für die Kommunikation mit Backend-Services wie Datenbanken, Storage oder Services von Cloud-Anbietern usw. können in Anvil „Server-Funktionen“ genutzt werden, die aus dem User-Interface nicht sichtbar sind und daher gut geschützt auch sensible Daten verarbeiten können.

Eine besondere Stärke von Anvil ist die Bereitstellung einer „Uplink“-Funktion. Diese Funktion ermöglicht die Kommunikation mit weiteren Programm-Modulen, die in Python erstellt wurden und auf weiteren Systemen laufen. Dies erlaubt einen gemischten Betrieb von Komponenten, die in einer Cloud arbeiten und mit Komponenten, die on-premises arbeiten, selbst wenn sie hinter einer Firewall platziert wurden:

Je nach Kundenanforderung können auch alle Komponente vollständig in einer Cloud oder vollständig on premises arbeiten.

Im beauftragten Projekt befinden sich Storage und Anwendungslogik auf der Kunden-Hardware (on-premises) und sind durch die Firewall des Kunden geschützt. Die Anwendungs-Logik enthält Module, die Texte aus bereits vor Projektstart vorhandenen Dokumenten und Dateien aller Art und in unterschiedlichen Formaten extrahieren, um diese für Such- und Auswertungsfunktionen in einer Datenbank zu speichern.

Ein lokal installiertes KI-Modell ermittelt datenschutzkonform aus jedem Text die wichtigsten Schlüsselwörter, um anschließend eine inhaltliche Kategorisierung vornehmen zu können. So können Dokumenttypen wie Verträge, Angebote, Bescheide von Behörden, usw. leichter erkannt und gefunden werden.

Die Komponenten zur Bereitstellung des Web-Interfaces der Anwendung laufen aktuell in einer Cloud, um auch den Datenzugriff außerhalb der Firmenkunden-Netzwerks zu ermöglichen. Somit wurde im beschriebenen Projekt der im obigen Bild „rot“ skizzierte Weg umgesetzt.

Da die Anwendung aktuell für eine Nutzung am PC-Bildschirm und auf einem Tablet konzipiert wurde, reichen die responsiven Eigenschaften des mit Anvil erzeugten User-Interfaces aus.

Einige Funktionen sollen zukünftig auf einem SmartPhone (im Hochformat) genutzt werden können. Das ist mit Anvil möglich, erzeugt aber nicht unbedingt ergonomische Interfaces. Alle Funktionen, die in Anvil aber bereits erstellt wurden, können aber auch per API (Application Programming Interface) bereitgestellt werden. Dies ermöglicht die Anbindung von App-Entwicklungssystemen wie z.B. flutterflow, um bereits erstellte Funktionen auf einem kompakten SmartPhone-Bildschirm nutzen zu können.

Das Ergebnis: geringe Kosten, zufriedener Kunde
In dieser erweiterbaren Architektur wurde das Ziel erreicht, den individuelle Software-Entwicklungsaufwand und damit die Entwicklungskosten so gering wie möglich zu halten, indem möglichst viele bewährte Komponenten wie RAD-Tools, Tools für Schrifterkennung und Tools für Text-Analysen zum Einsatz kamen. Die nächsten geplanten Erweiterungen, wie z.B. die Erstellung und Verarbeitung von Sprachnotizen oder die Abfrage von Dokument-Inhalten mit lokalen Large Language Models (LLM), werden in Kürze ebenfalls ohne Änderung der Architektur kostengünstig umgesetzt werden können.

Alle Produktnamen sind geschützte Marken und Markennamen der jeweiligen Hersteller.


Related Posts