Bachelorarbeit: Konzeption und Umsetzung einer GraphQL-Schnittstelle für das Projekt Elternsprechtag Digital

Unser Kollege Nils Helming hat sich im Rahmen seiner Bachelorarbeit mit der Konzeption und Umsetzung einer GraphQL-Schnittstelle für das Portal Elternsprechtag Digital befasst. In unserem Blogbeitrag erklärt Nils, worum es in seinem spannenden Bachelor-Projekt geht.

Mein Weg zu basecom

Eines der letzten Module meines Studiums bestand darin, ein Software-Projekt in einer größeren Gruppe zu entwickeln. In diesem Modul präsentierten mehrere Unternehmen ihre Projektvorschläge, aus denen die Studierenden eines auswählen konnten. Bei der Wahl eines Projekts entschied ich mich für basecom und nahm an der Weiterentwicklung des Projekts ‚Elternsprechtag Digital‘ teil. Nach Abschluss dieses Projekts blieb ich in Kontakt mit basecom und bewarb mich erfolgreich für meine Bachelorarbeit.

Die Ausgangssituation

Während der Entwicklung des Software-Projekts wurde das Produkt ‚Elternsprechtag Digital‘ in ein Backend und ein Frontend aufgeteilt. Die Studierenden waren für die Entwicklung des Frontends verantwortlich. Um die Umwandlung des Projekts ‚Elternsprechtag Digital‘ in ein Backend zu ermöglichen, wurde eine Schnittstelle für die vorhandene Datenstruktur des Projekts automatisch generiert. Obwohl es möglich war, ein Frontend über diese Schnittstelle zu entwickeln, traten mehrere Probleme mit der Schnittstelle auf.

Ziele

In meiner Bewerbung bei basecom brachte ich die Idee ein, diese Schnittstelle zu ersetzen. Schon während der ersten Vorstellungsgespräche präsentierte ich diese Idee und entschied später bei der Themenfindung, eine GraphQL-Schnittstelle als Ersatz für die generierte Schnittstelle zu entwickeln.
Da die Entwicklung dieser Schnittstelle ein integraler Teil der Weiterentwicklung von ‚Elternsprechtag Digital‘ ist, ist es von entscheidender Bedeutung, dass diese GraphQL-Schnittstelle den Branchenstandards entspricht. Ein weiteres Ziel dieser Entwicklung besteht darin, Sicherheitsaspekte zu berücksichtigen. Die generierte Schnittstelle erlaubte beinahe uneingeschränkten Zugriff auf alle Backend-Daten, und die Einführung einer neuen Schnittstellenarchitektur könnte potenzielle Sicherheitsprobleme mit sich bringen. Daher ist es wichtig, diese Sicherheitsaspekte in die Planung einzubeziehen.

GraphQL

In der Bachelorarbeit war die Entwicklung einer GraphQL-Schnittstelle vorgesehen. Dies ergab sich insbesondere daraus, dass GraphQL es ermöglicht, umfangreiche Anfragen zu stellen, bei denen der Umfang der Antwortdaten spezifiziert werden kann. Dies ist in diesem Fall von besonderem Interesse, da die Entitäten im Projekt ‚Elternsprechtag Digital‘ viele kleine, aber stark miteinander verbundene Datensätze darstellen. Über die Abfragesprache, die durch den GraphQL-Standard definiert wird, können Anfragen an den entstehenden Graphen gestellt werden. Als Beispiel könnte eine Anfrage folgendermaßen aussehen:

Eine Beispielanfrage an die Schnittstelle.

Vorgehen

Vor Beginn der Bachelorarbeit sieht die Hochschule Osnabrück die Durchführung eines Praxisprojekts zur Vorbereitung auf die Bachelorarbeit vor. In diesem Projekt führte ich zunächst eine Untersuchung durch, um herauszufinden, welches Symfony-Bundle zur Integration einer GraphQL-Schnittstelle in ein bestehendes Projekt am hilfreichsten ist. Das im Rahmen des Praxisprojekts ausgewählte Bundle wurde dann in der Bachelorarbeit zur Entwicklung der Schnittstelle verwendet.
Mit Beginn der Bachelorarbeit begann zunächst eine Recherche, bei der andere Arbeiten untersucht wurden, um die Standardkonventionen und -strukturen von GraphQL zu ermitteln. Anhand dieser Informationen wurden Anforderungen für die Schnittstelle definiert und die Schnittstelle selbst erstellt.
Unter diesen Anforderungen waren auch Sicherheitsaspekte enthalten. Insbesondere wurde festgelegt, auf welchen Datenumfang verschiedene Nutzer*innen zugreifen dürfen. Zudem wurde mit der Einführung von GraphQL eine Schwachstelle in das Projekt eingeführt.
Diese Schwachstelle betrifft den Umfang erlaubter Anfragen. Da die Schnittstelle grundsätzlich unendlich komplexe Anfragen zulässt, können auch Anfragen erlaubt werden, die den Server übermäßig belasten und somit Denial-of-Service-Angriffe ermöglichen. Um dem vorzubeugen, muss ein GraphQL-Server zwischen legitimen Anfragen und künstlich komplexen Anfragen unterscheiden und letztere ablehnen. In der von mir entwickelten Schnittstelle wurden die angefragten Entitäten gezählt und mit einem Schwellenwert verglichen.
Nachdem diese Schwachstelle analysiert und eingeschränkt wurde, wurde die Funktionalität der Schnittstelle anhand eines umfangreichen Beispiels getestet, und die grundlegende Funktionalität der Schnittstelle wurde durch automatisierte Tests sichergestellt.

Ergebnis/ Fazit

Ich habe das Projekt ‚Elternsprechtag Digital‘ um eine GraphQL-Schnittstelle erweitert. In meiner Bachelorarbeit habe ich mehrere Ziele definiert, die alle erfolgreich erreicht wurden. Jetzt, da diese Schnittstelle existiert und genutzt werden kann, stehen verschiedene Möglichkeiten für die Weiterentwicklung offen. Einer der logischen nächsten Schritte könnte die Umwandlung oder Neuentwicklung des Frontends sein. Da die neue Schnittstelle sehr spezifische Datenanfragen ermöglicht, wäre es interessant zu untersuchen, ob es möglich ist, die benötigten Daten durch die Komponenten eines Frontends zu definieren und daraus eine gesammelte Anfrage zu generieren.
Da die ursprüngliche Schnittstelle in Bezug auf Qualität nicht mit dieser GraphQL-Schnittstelle vergleichbar ist, wurde ein solcher Vergleich in meiner Bachelorarbeit nicht behandelt. Dennoch wäre ein Vergleich mit einer anderen Schnittstellenarchitektur interessant. Zum Beispiel könnte eine fachspezifische REST-Schnittstelle entwickelt werden, um sie in Bezug auf Entwicklungsaufwand, Performance und andere Aspekte mit der GraphQL-Schnittstelle zu vergleichen.
Schließlich ist auch die Weiterentwicklung der Schnittstelle an sich nach wie vor relevant. Sowohl die Performance der Schnittstelle als auch der Umfang der Tests sollten weiter verbessert werden.

Wie geht es jetzt weiter?

Nachdem ich meinen Bachelor durch die Bachelorarbeit erworben habe, werde ich weiterhin bei basecom bleiben. Ich habe mich während meiner gesamten Zeit hier immer wohlgefühlt und befinde mich derzeit in der Einarbeitung bei basecom. Ihr könnt mich aktuell in der basecom Academy finden, mit dem Ziel, mich zum Junior Software Developer weiterzuentwickeln.

 

An dieser Stelle bleibt nur zu sagen: Danke Nils für deinen ausführlichen Bericht! Wir freuen uns, dass du Teil des Teams bist! 

Wenn auch du Interesse daran hast, deine Bachelorarbeit bei basecom zu schreiben, dann informiere dich auf unserer Karriereseite www.wirsprecheninter.net . Wir freuen uns auf deine Bewerbung!