Wir freuen uns auf Ihre Anfrage an:
contact@prooph.de

Hier geben wir Einblicke in das Unternehmen, Gedanken, How-Tos, Wissenswertes und News, die sich aus der Programmierung und Projekten ergeben. Auch unsere Open Source Aktivitäten begleiten wir hier.

Corporate Blog der prooph software GmbH

Projektunterstützung bei der Entwicklung von INOWAS DSS mit React, Symfony und prooph

Time Management

Martine Wolf / photocase.de

Klimawandel ist ein hochaktuelles Thema. INOWAS DSS ist eine Plattform, mit der Eingriffe in und die Auswirkungen auf die Umwelt, speziell den Grundwasserhaushalt analysiert werden. Wir von der prooph software GmbH haben die Nachwuchsforschergruppe INOWAS an der TU Dresden mit unserem Know-How im Bereich Domain-Driven Design, CQRS und Event Sourcing unterstützt. Neben der Arbeit im Backend lag unser Schwerpunkt dieses Mal in der Frontend Entwicklung mit der React JavaScript-Library von Facebook.

INOWAS DSS Web-Service

INOWAS DSS ist ein Open Source Web-Service zur Grundwassermodellierung basierend auf einer umfassenden Sammlung von analytischen und numerischen Modellen. In Case Studies wird anhand von verschiedenen Berechnungen die Veränderung des Grundwasserspiegels simuliert, womit einhergehende Folgen wie z.B. die Absenkung des Erdbodens analysiert und entsprechende vorbeugende oder Gegenmaßnahmen geplant werden sollen. Gerade in Regionen, in denen wenig Wasser zur Verfügung steht, ist ein nachhaltiges Grundwassermanagement existenziell.

INOWAS DSS Projekt

Grundwassermanagement (Quelle: INOWAS)

Symfony und prooph im Backend

Das Backend der INOWAS DSS Web-Service Plattform ist eine komplexe Symfony Applikation mit einer REST API und einem Event Sourcing Kern. Dank des NelmioApiDocBundle wird die API Dokumentation über ein WEB-UI bereitgestellt, was sich bei der Größe des Projekts als sehr nützlich für neue Entwickler erweist.

Die Entwicklung startete mit den Vorgängerversionen der prooph components. Wir haben daher als Erstes eine Migration auf die aktuellen prooph components vorgenommen, denn diese nutzen mittlerweile viele Features von PHP 7 und ermöglichen den Einsatz von sogenannten Continuous Projections, die in einem Worker-Prozess permanent das Read Model aktualisieren.

Performance Analyse mit Blackfire

Für einige wichtige Service-Requests haben wir eine Performance Analyse mit dem PHP Profiler Blackfire von SensioLabs durchgeführt. Mittels Blackfire konnten wir langsame Datenbank-Abfragen identifizieren und durch gezieltes Refactoring die Performance-Engpässe beheben.

React JavaScript Frontend

Das INOWAS DSS Projekt setzt im Frontend auf die React JavaScript-Library von Facebook in Verbindung mit einem Redux Store. React übernimmt dabei die Arbeit des View Layers und Redux kümmert sich um die Datenhaltung. Diese Kombination wird häufig in JavaScript Projekten verwendet und hilft bei der Kontrolle und Strukturierung des Frontends.

Die verschiedenen Benutzerwerkzeuge auf der Plattform und die komplexe Domain der Grundwassermodellierung erfordern aufwendige Workflows. Frontend und Backend müssen hierbei gut ineinander greifen, um dem Nutzer die Arbeit mit der Modellierungsplattform zu erleichtern. Für die Kommunikation zwischen Frontend und Backend haben wir Redux-Saga eingeführt, eine Erweiterung für den Redux Store. Die JavaScript-Library Redux-Saga setzt auf ES6 Generators zum asynchronen Laden und Verarbeiten von Daten aus dem Backend. Eine bekannte Alternative dazu ist Redux-Thunk. Diese Library arbeitet allerdings nicht mit ES6 Generators und hat damit das Problem der Callback Hell, die die Lesbarkeit und Testbarkeit des JavaScript Source Codes beeinträchtigt.

Verbesserte React Frontend Performance

Die Performance spielt auch im Frontend eine große Rolle, denn die React Komponenten rendern gerne neu, obwohl sich ihr Zustand nicht geändert hat. Gerade bei Komponenten, die komplexe Berechnungen durchführen, führt dies zu einem trägen User Interface. Hiefür gibt es Lösungen. Neben pure functions nutzen wir in Projekten recompose und reselect und haben diese funktionalen React Addons auch im INOWAS DSS Projekt eingeführt.

Zukunft des Forschungsprojekts

Die Unterstützung bei der Entwicklung des INOWAS DSS Web-Service war durch die komplexe Domain der Grundwassermodellierung und die Umsetzung auf einer modernen webbasierten Plattform ein interessantes Projekt. Durch die Bündelung unterschiedlicher Tools, die Rechenleistung in der Cloud und einer optimierten Nutzerführung auf der Plattform kann die Grundwassermodellierung effizienter und kostengünstiger gestaltet werden, wodurch der Service von mehr Städten und Kommunen überall auf der Erde genutzt werden kann. Gezielte Investitionen in die Installation von Brunnen und die effiziente Nutzung natürlicher Wasserspeicher können mithilfe der Werkzeuge auf der INOWAS DSS Plattform ermittelt werden. Das erhöht die Lebensqualität in der Region und sichert die Zukunft ihrer Bewohner. Wir wünschen der Nachwuchsforschergruppe INOWAS weiterhin viel Erfolg bei ihrem Vorhaben, auch über die Grenzen des Forschungsprojekts hinaus.

React und Redux sind ideale Werkzeuge für die Visualisierung komplexer Web-Anwendungen. Die prooph software Gmbh steht beratend zur Seite und unterstützt bei der Entwicklung anspruchsvoller JavaScript Frontend Projekte.

Sie suchen JavaScript Spezialisten für Ihr Projekt: Anfrage stellen

Blog Artikel mit ähnlichen Themen