16.01.2020

Functional Core für einen seiteneffektfreien Anwendungskern

Kai Schmidt, Thomas Ruhroth

Zusammenfassung

Erfreust du dich an den Vorteilen funktionaler Programmierung? Der Code ist verständlicher, da Funktionen keine Seiteneffekte haben. Immutable Objects vereinfachen das Debugging. Auch das Testen ist einfacher, weil Ergebnisse bei gleichen Eingabeparametern immer gleich sind. Solltest du deshalb auf rein funktionale Programmiersprachen umsteigen?

Das muss nicht sein. Die Vorzüge lassen sich auch in JVM Sprachen wie Java oder Kotlin nutzen. Wie ist das möglich? Durch die strikte Trennung von Funktionen mit und ohne Seiteneffekten (pure/impure Functions). Leider scheint das hierfür aus der Ruby-Welt bekannte Architekturmuster “Functional Core / Imperative Shell” in der Java-Welt kaum bekannt zu sein. Dies möchten wir mit diesem Vortrag ändern.

In dieser Architektur ist der Kern einer Anwendung (“Functional Core”) funktional beschreibbar, Objekte sind immutable und Funktionen sind pure. Eingepackt wird der Kern in eine Seiteneffekt-behaftete Hülle (“imperative Shell”) - schließlich müssen wir irgendwo Daten persistieren oder mit anderen Services sprechen. Wir möchten die Vor- und Nachteile dieses Musters aus Erfahrungen zusammenstellen, die von der Entwicklung bis zur Livesetzung von ES/CQRS-Microservices mit diesem Architekturprinzip entstanden sind.

Sprecher

Kai Schmidt (@electronickai) ist freiberuflicher Software-Entwickler und -Architekt. Zuvor war bei den IT-Beratungsunternehmen .msg systems ag und Capgemini angestellt. In seiner über 10-jährigen Projekterfahrung war er größtenteils in Java und C#-Projekten in den Bereichen Logistik, Flugzeugbau sowie Handel tätig. Bereits in seiner Kindheit hat er mit einem C64 erste Programmiererfahrungen gemacht. Heute berät und beteiligt er sich gerne an betrieblichen Anwendungssystemen und ist in der JUG sowie für Kids4IT aktiv.

Thomas Ruhroth (@electronickai), Lead IT Consultant bei .msg systems ag, In seiner industriellen Arbeitserfahrung arbeitete er als Entwickler, Software-Architekt und Business-Analyst in verschieden Bereichen wie Geographische Informationssysteme und Logistik. In der Forschung liegt sein Fachgebiet in der Softwarespezifikation und in der Entwicklung langlebiger Informationssysteme. Der Wissenstransfer aus der Kombination von Forschungsarbeiten mit industrieller Anwendung ist in vielen seiner Projekte eine treibende Kraft.

Sponsoren

Cosee stellt uns die Räumlichkeiten zur Verfügung und sorgt für unser leibliches Wohl. Vielen Dank dafür. Der übliche Abstecher in den Hotzenplotz nach dem Vortrag entfällt somit - wir bleiben einfach vor Ort!

logo

Eine Veranstaltung des iJUG e.V., organisiert durch die JUG Darmstadt.