Softwareentwicklung und Architektur / 01.10.2020 / Sergej Epp

Teil 3: Entwicklung einer Absence-App mit Grails und Neo4J

Während eines ihrer Kunden-Engagements haben unsere Kollegen Sergej Epp und Felix Hau ein „On-the-fly“-Projekt realisiert: Nämlich eine App, die die Stakeholder über geplante Absenzen der Teammitglieder informiert. Für das Projekt kamen das Web-Framework Groovy on Grails sowie die Graphdatenbank Neo4J zum Einsatz. In dieser dreiteiligen Blogserie beschreiben sie, welche Vorteile die beiden Technologien haben und wie sie sich im Praxis-Einsatz bewähren. Teil 3 stellt den Projektverlauf mit der App vor und zeigt, wie Grails und Neo4J sich dabei schlagen.

Absenzverwaltung mit Slack-Anbindung

In einem unserer PENTASYS-Kundenprojekte waren Abwesenheiten verschiedener Teammitglieder im Projektverlauf vorgesehen. Damit die Stakeholder im Voraus Bescheid wissen, welches Teammitglied an welchen Tagen nicht verfügbar ist und wer es vertritt, war bereits ein einfaches Tool im Einsatz. Dieses hatten wir im Rahmen eines „FedEx-Days“ entwickelt – also einem Format, bei dem die Lösung für eine bestimmte Fragestellung innerhalb von 24 Stunden konzipiert und entwickelt wird.

Technologisch baute das erste Tool auf Java und Spring Boot auf. Fürs erste tat es seinen Dienst. Im Lauf des Kundenprojekts kamen jedoch neue Anforderungen auf. Denn zunächst gab es keine Login-Funktion. Neue Nutzer konnten sich nicht über die grafische Oberfläche registrieren, sondern mussten per Rest-Endpoint eingefügt werden. Außerdem entwickelte sich Slack zu einem der präferierten Kommunikationskanäle im Team, weshalb eine Ausweitung der Benachrichtigungen auf diesen Kanal wünschenswert war.

Insofern entschieden wir uns dafĂĽr, die App neu aufzusetzen und damit verbunden auch die Basis-Technologie zu wechseln. Dabei ging es zum einen um eine Ăśbersetzung der alten App auf Grails in Verbindung mit Neo4J und zum anderen darum, die neuen Features mit einzubauen. Grails und Neo4J haben wir bereits in den ersten beiden Artikeln dieser Blogserie vorgestellt.

Die App sollte die folgenden Anforderungen berĂĽcksichtigen:

  • Login – Der Einfachheit halber sollte die App keinen separaten Login erfordern, sondern diesen vielmehr ĂĽber die bereits bestehenden Zugangsdaten des LDAP-Servers ermöglichen.
  • Graphical User Interface – Die Benutzeroberfläche sollte funktional, ĂĽbersichtlich und gut zu bedienen sein. Dies hat auch den Hintergrund, die Akzeptanz unter den Nutzern zu erhöhen. Eine „besondere“ UX stand hierbei jedoch nicht im Vordergrund, ebenso wenig das Corporate Design – denn schlieĂźlich richtet sich die App an Teammitglieder und interne Stakeholder und nicht an Kunden oder dergleichen.
  • Auswahl Abwesenheiten – FĂĽr die Auswahl sollten ein Datepicker sowie ein DropDown-MenĂĽ zur VerfĂĽgung stehen.
  • Benachrichtigung – Die Benachrichtigung ĂĽber aktuelle Abwesenheiten und Vertretungen sollte jeden Morgen ĂĽber die ausgewählten Slack-Kanäle versendet werden.
  • Betrieb und Weiterentwicklung – Die App sollte auf dem internen Server betrieben werden, WebApp und Datenbank dabei in Docker-Containern laufen.

Aufbau und Entwicklung der App

Die Stärken von Grails beziehungsweise Groovy haben sich besonders bei der Programmierung des Logins gezeigt. Dank der hauseigenen Dokumentation sowie zahlreicher Dokumente aus der Community ließ dieser sich mit den oben beschriebenen Anforderungen schnell umsetzen. Für die sicherheitsrelevante Verschlüsselung der Login-Daten ist das Grails Plugin jasypt-encryption gut geeignet. Ebenso nützlich war aus unserer Sicht das View-Layer, kombiniert mit dem Einsatz von Groovy Server Pages (GSPs). Damit ließ sich der GUI-Teil unseres Projekts einfach implementieren.

Insgesamt ist uns sowohl der Aufbau von Grails als auch die Programmierung in der dazugehörigen Programmiersprache Groovy positiv aufgefallen. Die syntaktischen Erweiterungen von Groovy gegenüber Java helfen bei einer besseren Leserlichkeit und Handhabbarkeit des Codes. Auch für Apps, die ein höheres beziehungsweise komplexeres Datenvolumen aufweisen, sind die beiden Technologien gut geeignet. Bei der Abwägung, ob Spring-Boot oder ein anderes Framework anstelle von Grails gewählt werden soll, ist insbesondere der Gesichtspunkt der Performance zu beachten.

In punkto Datenbank wäre Neo4J als Graphdatenbank zwar keine obligatorische Wahl gewesen, da die Datenrelationen in dieser App nicht allzu komplex sind. Es hätte also auch eine relationale Datenbank zum Einsatz kommen können. Aber auch wenn keine zwingenden fachlichen Gründe für eine Graphdatenbank vorliegen, ist Neo4J stets einen Blick wert. Die Vorteile sind die reibungslose Integration sowie die komfortable Bedienung.

Teil 1 und Teil 2 dieser Artikelserie finden Sie in unserer Rubrik Einblicke.

 

Einblicke

Shaping the future with our clients