Das war die JavaLand 2019

Die 6. JavaLand fand vom 19. – 21. März 2019 im Phantasialand in Brühl statt. Wir, das sind mein Kollege Dirk Mahler und ich, waren diesmal als Schulungspartner mit unserem Workshop „Lasst uns einen Monolithen (z)erlegen!“ dabei. Das Thema hat einen Schmerzpunkt getroffen – in kürzester Zeit war der Workshop ausgebucht.

Unseren Teilnehmern zeigten wir anhand eines realen, in Java implementierten E-Commerce-Systems, wie es gelingt, einen unstrukturierten Monolithen zielsicher und risikoarm zu einem strukturierten Modulithen zu refaktorisieren und anschließend Fachlichkeiten als eigenständige Microservices bereitzustellen. Dabei deckten wir interaktiv typische Probleme auf und zeigten Lösungsansätze und deren Anwendbarkeit. Die zahlreichen Herausforderungen, die es auf diesem Weg zu meistern gilt, und die verschiedenen Lösungsmöglichkeiten sorgten für angeregten Austausch während des Workshops.

Wir waren bereits an beiden Konferenztagen vor dem Schulungstag vor Ort. Die Location, das Phantasialand in Brühl bei Köln, kombinierte wieder auf einzigartige Art und Weise den Konferenzalltag mit zahlreichen Fahrgeschäften und Communityveranstaltungen. Über 2.000 Teilnehmer sorgten stets für gut gefüllte Räume und, besonders wichtig bei einer Konferenz, für viele interessante Gespräche zu aktuellen Themen.

Das Konferenzprogramm offerierte eine breite Palette an Themen. Angefangen bei Container-Technologien, Cloud- und Infrastrukturthemen bis hin zur Softwarearchitektur und der Analyse von Softwareanwendungen gab es für jeden Geschmack etwas Passendes. Besonders auffällig war dabei das vielfältige Angebot an Vorträgen über die Modernisierung und fachliche Zerlegung von Monolithen – Themen, die wir auch mit unserem Workshop bedienen konnten. Als Beispiel seien hier der Vortrag von Carola Lilienthal „Von modularen Architekturen zu Microservices“ sowie der Vortrag „Applying (D)DDD and CQ(R)S to Cloud Architectures“ von Benjamin Nothdurft genannt. In diesen stellten die Vortragenden Erfahrungen und Tipps, aber auch praktische Umsetzungen vor, um einen unstrukturierten Monolithen fit für die Zukunft zu machen. Die zahlreichen Diskussionen nach den Vorträgen zeigten, dass ein hohes Interesse daran besteht, aus der „Big Ball of Mud“-Hölle auszubrechen und Anwendungen besser zu strukturieren.

Allen, die ähnliche Schmerzpunkte in eigenen Projekten kennen und wissen möchten, wie Softwaresysteme strukturiert zerlegt werden können und welche Fallstricke existieren, empfehlen wir unseren 2-Tages-Workshop „Lasst uns einen Monolithen (z)erlegen!“. Inhalte, Termine und Preise finden Sie auf der Seite zum Workshop.

Multikriterielle Optimierung und Architekturerkennung – Die Evolution im Algorithmus Teil 2

Genetische Algorithmen haben sich, wie Teil 1 gezeigt hat, als hilfreiches Mittel zur einfachen Umsetzung komplexer Optimie­rungsprobleme erwiesen. Dabei sind die Möglichkeiten, die die Evolutionstheorie der Informatik eröffnet, aber noch wesentlich größer und eigentlich nur von der Fantasie der Entwickler be­grenzt. Dieser Artikel soll zeigen, wie genetische Algorithmen korrekt mit verschiedenen Optimierungszielen umgehen können und wie es sogar möglich ist, diese zur Erkennung von Software­strukturen einzusetzen.

Ein kurzer Rückblick

Der erste Teil in Heft 01/2018 hat gezeigt, wie genetische Algorithmen eingesetzt werden können, um Optimierungsprobleme mit wenig Aufwand zu lösen. Dabei haben wir gelernt, dass solche Algorithmen die Grundprinzipien der Evolution, nämlich Selektion, Vererbung und Mutation, implementieren. Beispielhaft wurde dafür das Ressourcenplanungsbeispiel eingeführt, welches das Ziel hat, Tasks unter Minimierung von Zeit und Kosten Ressourcen zuzuweisen. Wie sich herausstellte, stehen diese zwei Objectives allerdings in Konkurrenz zueinander. Die Single-Objective Optimization (SOO) kombinierte diese konfligierenden Objectives in einer Funktion. Zwar lieferte dieser Ansatz zufrieden stellende und sinnvolle Ergebnisse, wirft jedoch auch eine ganze Reihe von Problemen auf.

Dieser Artikel ist im Magazin JavaSPEKTRUM Ausgabe 03/2018 erschienen. Lesen Sie den vollständigen Artikel im Magazin oder hier:
Download Multikriterielle Optimierung und Architekturerkennung – Die Evolution im Algorithmus Teil 2 (PDF, <1 MB)

Der Artikel stellt den zweiten und damit abschließenden Teil zum Thema „Die Evolution im Algorithmus“ dar. Der erste Teil „Optimieren durch Selektion“ ist in Ausgabe 01/2018 (Veröffentlichungstermin: 26. Januar 2018) erschienen.

Vielen Dank an JavaSPEKTRUM für die Bereitstellung des Artikels als PDF.

Dein System: Das unbekannte Wesen?

Artikel als PDF herunterladen:
Download Dein System: Das unbekannte Wesen

Wir haben täglich mit über Jahre gewachsenen Softwaresystemen zu tun, welche so komplex und undurchdringlich sind, dass sie die Bezeichnung „Unbekanntes Wesen“ verdienen, das Stichwort ist hier oft Monolith. Das Hauptproblem: ein Großteil unserer Arbeitszeit fließt in das reine Verstehen solcher Monster, ohne dass wir produktiv etwas an der Anwendung ändern. Klar, es ist an der Zeit der Refaktorisierung, also wieder Struktur in das System zu bringen. Was sich so einfach anhört, birgt aber viele Gefahren. Diese sind zum einen technischer Natur: Wie soll die Zielstruktur aussehen? Stimmt meine gedachte Architektur mit der realen überein? Welche Komponenten gibt es und wie sollen sich die einzelnen Klassen diesen zuordnen? Welche Auswirkungen hat das Herauslösen von einer identifizierten Komponente? Aber auch wirtschaftliche Aspekte sind wichtig zu betrachten: Wie weise ich nach, dass eine Refaktorisierung für die zukünftige Arbeit wirtschaftliche Vorteile bringt? Wie kann der Aufwand und damit die Kosten möglichst geringgehalten werden? Was kann ich tun, um weiterhin lieferfähig zu bleiben? Beide Listen lassen sich vermutlich endlos weiterführen. Deswegen soll dieser Artikel einen Weg aufzeigen, wie mit dem SAR-Framework, einem Tool im jQAssistant-Universum, die bestehenden Strukturen analysiert und die Ergebnisse zur Beantwortung zahlreicher Fragen genutzt werden können.

weiterlesen

Optimieren durch Selektion –
Die Evolution im Algorithmus Teil 1

Bei der Lösung von Problemen lässt sich die Informatik häufig von anderen Wissenschaften inspirieren. Man denke nur an Neu­ronale Netze und die Möglichkeiten, die sich mit diesen eröff­nen. Doch während diese aufwendig angelernt werden müssen, bietet Darwin mit seiner Evolutionstheorie eine interessante und leicht umsetzbare Lösung für eine Vielzahl von Optimie­rungsproblemen. Wie man sich das Ganze vorstellen kann, soll diese Kolumne näher beleuchten.

Jeder ist sicher schon einmal auf Optimierungsprobleme gestoßen und hat überlegt, wie man diese algorithmisch lösen könnte. Ein Beispiel hierfür ist Ressourcenplanung. Dabei sollen Tasks in zeitlicher Begrenzung eine Menge von Ressourcen zugewiesen werden, um diese unter Beachtung verschiedener Gesichtspunkte, beispielsweise den entstehenden Kosten oder der benötigten Zeit, abzuarbeiten. Dies ist ganz klar ein Optimierungsproblem. Doch sind ausgefeilte, hochgradig spezialisierte Algorithmen oder Brute-Force die einzige Möglichkeit zur Lösung solch komplexer Optimierungsprobleme?

Dieser Artikel ist im Magazin JavaSPEKTRUM Ausgabe 01/2018 erschienen. Lesen Sie den vollständigen Artikel im Magazin oder hier:
Download Optimieren durch Selektion – Die Evolution im Algorithmus Teil 1 (PDF, 1 MB)

Der Artikel stellt den ersten von zwei Teilen zum Thema „Die Evolution im Algorithmus“ dar. Der zweite Teil beschäftigt sich mit multikriterieller Optimierung und automatisierter Architekturerkennung durch genetische Algorithmen. Er ist ins unserem Blog und im Magazin JavaSPEKTRUM Ausgabe 03/2018 (Veröffentlichungstermin: 25. Mai 2018) erschienen.

Vielen Dank an JavaSPEKTRUM für die Bereitstellung des Artikels als PDF.