Gastbeitrag
13.05.2022, 07:30 Uhr
Low-Code: mit Vollgas ins IT-Risiko?
In der Software-Entwicklung ist Low-Code aktuell in aller Munde und birgt viel Potenzial für Unternehmen. Beim Einsatz gilt es allerdings einiges zu beachten. Wir haben die wichtigsten Aspekte zusammengefasst.
Low-Code ist ein viel besprochenes Thema und die Erwartungen sind dementsprechend hoch: Eine kürzere Time-to-Market neuer Funktionalitäten, eine Konzentration auf den Business-Mehrwert einer App anstatt auf technische Fragestellungen oder der intensive Einbezug von Fachexperten in die Applikationsentwicklung im «Citizen Development» sind einige der prominentesten Vorteile. Je nach Einsatzzweck können moderne Low-Code-Plattformen diese Versprechen auch bereits zu einem guten Stück erfüllen.
Bei aller Euphorie darf jedoch nicht vergessen werden: Low-Code kann die Entwicklung zwar stark beschleunigen und je nach Situation auch Fachexperten miteinbeziehen, es bleibt aber immer noch Software-Entwicklung. Das bedeutet, dass auch bei der Low-Code-Entwicklung Patterns, Methoden und Best Practices eingehalten werden müssen, die auch für den Erfolg in «klassischen» Software-Projekten zentral sind. Passiert dies nicht, steigen Eintrittswahrscheinlichkeit und Auswirkungen verschiedener IT-Risiken sprunghaft an; dass die Entwicklung der Applikationen nicht so effizient wie eigentlich möglich abläuft, ist dabei das kleinste Problem. Sicherheitsrisiken wie Datenabgriff oder ein rapide anwachsendes Backlog an technischen Schulden sind dagegen ernst zu nehmende Herausforderungen. Die hohe Geschwindigkeit, in der mit einer Low-Code-Plattform entwickelt werden kann, lässt diese Probleme teilweise exponentiell wachsen.
“Low-Code besitzt grosses Potenzial – birgt aber auch einige Risiken„
Silvan Stich
Usability versus Flexibilität
Die Schwierigkeit dieser Situation: Low-Code-Plattformen müssen den Spagat schaffen zwischen einfacher Bedienbarkeit (für Citizen Developer), Effizienz mit vorgefertigten Bausteinen (für Citizen Developer und Pro-Coder) und technischer Flexibilität (für Pro-Coder). Eine Konsequenz daraus ist, dass Low-Code-Plattformen diese Patterns und Best Practices zwar prinzipiell realisieren können, dies aber weder technisch erzwungen noch vorgegeben werden kann. Anders formuliert: Fehlt im Low-Code-Entwicklungsteam das Bewusstsein für diese Voraussetzungen oder die Erfahrung und das Wissen, passieren schnell Fehler, welche die genannten Probleme hervorrufen.
Unser Artikel setzt an diesem Punkt an und stellt die wichtigsten Patterns zusammen, die auch bei der Low-Code-Entwicklung berücksichtigt werden müssen. Die Patterns sind in der nebenstehenden Abbildung, einer stark vereinfachten Architekturskizze, eingeordnet.
1. Application Layer nutzen: Gängige Low-Code-Plattformen implementieren häufig bereits das «4-Tier»-Applikationsmodell:
- Präsentationsschicht: Die Benutzeroberfläche, auf der wir Daten sehen und eingeben.
- Geschäftsschicht: Ist für die Ausführung der Geschäftslogik verantwortlich.
- Anwendungsschicht: Steuert die Kommunikation zwischen der Präsentationsschicht und der Datenschicht.
- Datenschicht: Besteht aus einer Datenbank zur Verwaltung der Daten.
Wird aber direkt aus der Präsentationsschicht auf die Datenschicht zugegriffen, so können Daten manipuliert und abgegriffen werden. Das Einhalten des Schichtenmodells führt deshalb zu höherer Sicherheit und einfacher Verständlichkeit bei den Anwendern.
2. So wenig Entscheide wie möglich im Client treffen: Low-Code-Plattformen standardisieren die Technologie und nicht die Logik. Deswegen entscheidet das Entwicklungsteam, wo die Logik abgebildet wird. Werden die Geschäftslogik oder Zugriffsberechtigungen im Client abgebildet, so kann diese durch Anwenderinnen und Anwender manipuliert werden. Werden diese Entscheide hingegen im Backend implementiert, führt dies zu einer Verringerung des Missbrauchspotenzials.
3. Sauberes Aufteilen der Logik: Low-Code-Plattformen können Logik an verschiedener Stelle implementieren. Es muss geprüft werden, ob Berechnungen in der grafischen Logik als eigene Komponente innerhalb der Plattform oder als Backend-Service realisiert werden sollen. Fehlentscheide können zu Problemen bei der Performance oder schlechter Wartbarkeit führen. Wird eine Microservice-Architektur verwendet, führt dies zu einer performanten und gut wartbaren Applikation.
4. Datenbank normalisieren: Eine Low-Code-Plattform zwingt den Entwickler typischerweise nicht zu einem sinnvollen Datenmodell. Setzen Applikationen aber keine normalisierte Datenbank ein, so werden die Datenzugriffe aufgrund der Grösse der Tabellen langsam, es kann zu duplizierten Daten kommen und die Zugriffe werden aufgrund von Transaktionen teilweise blockiert. Um dies zu verhindern, ist es zwingend, das Datenmodell sauber zu implementieren. Dies führt zu einem performanten und korrekten System.
5. Need-to-know-Prinzip: Low-Code-Plattformen ermöglichen beim Laden der Daten viel Flexibilität. Wenn aber ganze Datensätze oder komplette Tabellen geladen werden, führt dies zu Performance-Problemen und verletzt das «Need-to-know»-Prinzip. Es besagt, dass nur jene Daten geladen werden sollen, die verwendet werden. Was nicht da ist, kann auch nicht missbraucht werden. Folgt man diesem Prinzip, gewinnt man sowohl an Datensicherheit als auch an Performance.
6. Fehler-Handling: Low-Code-Plattformen bieten den Vorteil, dass sie auf Inkonsistenzen wie fehlende Berechtigungen bei der Entwicklung hinweisen. Auch die Fehlersuche wird unterstützt, beispielsweise durch eingebaute Logs. Werden aber wichtige Informationen nicht ausgegeben, so ist das Nachstellen und Beheben von Defekten aufwendig. Wenn der Fehlerfall nicht in der Benutzerführung berücksichtigt wird, kann es zu Dateninkonsistenzen kommen oder die Applikation wird unbenutzbar. Wenn das Fehlerhandling konsequent berücksichtigt wird, führt dies zu einem besseren Nutzererlebnis und hoher wahrgenommener Qualität.
7. Prozesse der Software-Entwicklung gelten auch mit Low-Code: Low-Code-Plattformen bieten eine Vielfalt an vorgefertigten Bausteinen, die es ermöglichen, schnell vorzeigbare Resultate zu erzielen. Wenn Entwickler nicht wissen, wo die Limitierungen und die Möglichkeiten der Bausteine liegen, treten aber schnell Probleme auf. Und wenn keine sauberen Definition-of-Ready und Definition-of-Done vereinbart werden, fehlen wichtige Bausteine der Qualitätssicherung in der Software-Entwicklung. Insbesondere die Geschwindigkeit verleitet dazu, diese Prinzipien zu verletzen und später von den technischen Schulden ausgebremst zu werden. Werden diese Prozesse aber sauber gelebt, zahlt sich der Vorteil einer Low-Code-Plattform voll aus.
So profitieren Firmen von Low-Code
Die aufgeführten Patterns zeigen auf, an welchen Stellen grosse Hebel in Richtung professioneller Software-Entwicklung mit Low-Code liegen. Es ist wichtig zu erwähnen, dass die Zusammenstellung nicht bedeutet, dass mit Low-Code eben doch «nur» erfahrene Engineers arbeiten können oder sollen. Es geht vielmehr darum, ein Bewusstsein dafür zu schaffen, dass es trotz aller Vereinfachung, Abstraktion und beeindruckenden Verkaufsargumenten um Software-Entwicklung geht, mit der auch eine Verantwortung einhergeht. Dieses Bewusstsein und das für die Patterns notwendige Wissen kann über Werkzeuge wie ein «Center of Excellence» effizient und effektiv sicher beziehungsweise bereitgestellt werden. Ausserdem erlaubt die Standardisierung der Low-Code-Plattformen, für punktuelle Fragen oder Problemlösungen unkompliziert auch externe Experten hinzuzuziehen.
Das grosse Potenzial und die genannten Versprechen sind aus unserer Sicht durchaus realistisch und konnten in unseren Kundenprojekten verifiziert werden. Werden die relevanten Punkte berücksichtigt, kann ein Unternehmen auch langfristig enorm von der Low-Code-Entwicklung profitieren.
Der Autor
Silvan Stich ist Head of Application Platforms bei Zühlke Schweiz. www.zuehlke.com