Sie sehen aus dem Zeitraum bis in
  • Continuous Integration und Delivery von Microservices mit GitLab CI

    Vortrag Philipp Haußleiter, Christine Koppelt Frankfurter Entwicklertag 2018

    Eine der Voraussetzungen für ein erfolgreiches Softwareprojekt ist eine unkomplizierte Infrastruktur, die ein kontinuierliches Bauen, Testen und Deployen der Software ermöglicht. Mit der Verbreitung von Microservice-Architekturen und Docker Containern sind die Anforderungen an diese Infrastruktur weiter gestiegen. Ein relativ neues Tool, das sich gut für diesen Bereich eignet, ist GitLab CI.

    GitLab CI ermöglicht es, die Konfiguration von Build- und Deployment Pipelines vollständig textuell zu beschreiben, was eine schnelle und effiziente Einrichtung ermöglicht. Isolierte Buildumgebungen lassen sich unabhänging von anderen Pipelines und ohne die Notwendigkeit von Adminrechten erstellen und anpassen. Die Buildausführung lässt sich flexibel auf mehrere Server verteilen. Alles zusammen erhöht die Wartbarkeit, Stabilität und Skalierbarkeit der Buildinfrastruktur. Der eingebaute Docker-in-Docker Support und die mitgebrachte Docker Registry vereinfachen die Erstellung und Verteilung von Docker Images. Basierend auf den Erfahrungen aus dem Einsatz von GitLab CI in einem Kundenprojekt zeigen wir anhand von Beispielen verschiedene Möglichkeiten wie sich Build, Test und Deployment mit GitLab CI automatisieren lassen.

    Mehr lesen
  • Go, Go, Go: Schnelleinstieg in die Programmiersprache Go

    Vortrag Daniel Bornkessel, Christoph Iserlohn OOP 2018

    Obwohl noch recht jung, hat sich Go in der Softwareentwicklung fest etabliert. Viele kritische Systeme werden heutzutage in Go implementiert – Docker ist hier einer der prominenten Vertreter. Go macht vieles anders als gewohnt. Mit Channels und Goroutines besitzt Go moderne Nebenläufigkeitskonstrukte, die in den altbewährten Programmiersprachen so nicht zu finden sind. Auf der anderen Seite verzichtet Go auf einige Dinge, die mittlerweile als selbstverständlich angesehen werden, wie Generics oder Exceptions. Anhand von Beispielen und praktischen Übungen vermittelt dieser Workshop die nötigen Kenntnisse, um kleinere eigene Programme in Go zu schreiben und Channels und Goroutines zu nutzen.

    Benötigt wird ein eigener Laptop mit aktuellem Go und Git sowie einem Editor oder einer IDE zum Programmieren.

    • Zielpublikum: Entwickler, Architekten
    • Voraussetzungen: Gute Kenntnisse in einer Programmiersprache wie Java, C#, C/C++. Notebook mit aktuellem Go und Git
    • Schwierigkeitsgrad: Anfänger
    Mehr lesen

    Viermal Microservices: REST, Kubernetes, UI-Integration, asynchron

    Vortrag Eberhard Wolff OOP 2018

    Dieses Tutorial gibt zunächst eine Einführung in Microservices und zeigt dann vier konkrete Möglichkeiten zur Umsetzung von Microservices: REST-Microservices mit Kubernetes, UI-Integration auf Client oder Service und asynchrone Microservices mit Kafka und Atom-Feeds. Konkrete Code-Beispiele illustrieren die Ansätze und können ein Startpunkt für eine eigene Umsetzung sein. Die Teilnehmer können anschließend Vor- und Nachteile abwägen und die Implementierung von Microservices mit diesen Ansätzen starten.

    Es gibt viele Wege, um Microservices zu realisieren. Oft ist das aber Teams nicht klar. Daher zeigt dieses Tutorial verschiedene Ansätze. Neben dem populären REST-Protokoll geht es vor allem auch um asynchrone Systeme und UI-Integration, die in der Praxis zu selten eine Rolle spielen. Die Beispiele stehen auf Github bereit und können dann für eine eigene Implementierung erweitert werden.

    • Zielpublikum: Software-Architekten, Technische Projektleiter, Entwickler
    • Voraussetzungen: Grundsätzliches Verständnis von Software-Architektur
    • Schwierigkeitsgrad: Anfänger
    Mehr lesen
  • Schlank und fit dank Kubernetes!

    Vortrag Daniel Bornkessel, Christopher Schmidt OOP 2018

    Eine gute, passende Infrastruktur ist essenziell, um Projekte mit einer Microservice-Architektur schnell und ständig auszuliefern. Kubernetes ist eine Plattform, die diesen Anforderungen gerecht wird. In diesem Tutorial lernen die Teilnehmer, wann und warum ein System wie Kubernetes sinnvoll ist, und welche Aufgaben es erfüllen kann. Nach einem ersten Überblick bauen wir sukzessive eine komplette Microservice-Architektur auf und vermitteln so bewährte Methoden für die Nutzung von Kubernetes.

    Ziel dieses Tutorials ist, zunächst die Notwendigkeit von System wie Kubernetes bei großen Microservice-Architekturen zu zeigen, wenn diese mit dem Continuous-Delivery-Gedanken betrieben werden sollen.

    Ein Überblick über die Architektur und die einzelnen Komponenten erklärt, wie Kubernetes konkret bestimmte Probleme löst. Anschließend wird praktisch vermittelt, wie eine komplette Microservice-Architektur mit Kubernetes deployed werden kann. Folgende Aspekte werden gezeigt:

    • das Deployment von vielen, verschiedenen Services innerhalb eines Kubernetes-Clusters
    • die öffentliche Bereitstellung von Services, die innerhalb eines Kubernetes-Clusters laufen
    • die Nutzung eines Kubernetes-Clusters mit verschiedenen, unabhängigen Teams
    • das Release-Management für Apps, die per CI deployed werden
    • das Logging und Monitoring von Apps in Kubernetes
    Mehr lesen

    Modularisierung: Monolithen gegen (aktuellen Trend hier eintragen)

    Vortrag Christoph Iserlohn, Till Schulte-Coerne OOP 2018

    ORB-Architekturen, SOA, Microservices: alle Jahre wieder wird ein neuer Ansatz zur Modularisierung durchs globale IT-Dorf gejagt. Verpackt mit ein paar netten Anekdoten, warum Firma X unglaublich erfolgreich mit dem neusten Trend Y ist, wird das Ganze als neuer Heilsbringer für die Unternehmens-IT verkauft. Dabei ist es oft einfacher, einen Monolithen mit klassischen Mitteln modular zu halten oder modular zu machen. Lernen Sie in diesem Vortrag, wie Sie trotz - oder gerade wegen - Ihrem Monolithen in der IT Champions League mitspielen.

    Microservices sind der aktuelle Trend, um Softwaresysteme zu modularisieren. Das damit aber nicht nur eine Änderung der Architektur eines Softwaresystems verbunden ist, sondern auch strukturelle und organisatorische Änderungen für das Unternehmen, und psychologische für die Mitarbeiter, wird oft übersehen. Gleichzeitig bekommt man die Fallstricke und Komplexität eines verteilten Systems. Für viele Unternehmen ist das nicht leicht zu stemmen.

    Dabei ist der wichtigste Punkt bei der Modularisierung der fachliche und technische Schnitt der Komponenten, egal ob es sich um ein monolithisches System oder eine Microservice-Architektur handelt. Daneben bieten die meisten Programmiersprachen und Laufzeitumgebungen Möglichkeiten zur Modularisierung. Werden diese konsequent genutzt und mit einem guten Komponentenschnitt verbunden, ist es möglich, die Vorteile einer Microservice-Architektur (z.B. leichte Änderbarkeit und schnelles Deployment) auch mit einem Monolithen zu realisieren. Ganz ohne dessen Komplexität zu übernehmen. Sollte der Komponentenschnitt mal nicht gut gelungen sein, ist oft sogar einfacher, diesen innerhalb eines Monolithen zu ändern als in dem verteilten System einer Microservice-Architektur.

    • Zielpublikum: Architekten, Entwickler, Entscheider
    • Voraussetzungen: Erfahrung mit der Entwicklung von mittleren bis größeren Softwaresystemen/Softwarearchitekturen.
    • Schwierigkeitsgrad: Fortgeschritten
    Mehr lesen
  • Hände waschen, Zähne putzen: (manchmal) vergessene Grundlagen von Software-Engineering

    Vortrag Gernot Starke OOP 2018

    Zeitlose Prinzipien, Heuristiken und andere vermeintlich esoterische, aber in Wirklichkeit sehr nützliche Dinge, die Softwareteams wissen und berücksichtigen sollten - aber leider tendenziell ignorieren - weil Hype und der Glanz vermeintlich moderner Technologien diese Grundregeln in eine finstere Ecke des Unterbewusstseins verbannt haben … Sie hören von Einfachheit (im Gegensatz zu Eindrücklichkeit [impressiveness]), Kohäsion, Modularität, Erst-Denken-dann-Coden sowie einigen grundlegenden Aufgaben von Softwarearchitekten.

    Zu Beginn werde ich Grundlagen, Prinzipien und Heuristiken unterscheiden, und dabei ein wenig über Entwicklungsorganisationen schimpfen. Danach tauchen wir in ausgewählte Themen des „methodischen Software-Engineerings" ein. Einige Beispiele, über die ich im Vortrag sprechen werde:

    • Einfachheit - auch als KISS-Prinzip bekannt, wird oft zugunsten von „schick“ oder „modern” vernachlässigt. Ich spreche LOC als die einfachste und möglicherweise nützlichste Metrik an, und warum wenig oft besser ist (Sicher ein Grund, warum Microservices seit einigen Jahren so angesagt sind). Sie hören von typischen Kompromissen bezüglich Einfachheit – beispielsweise können Sie Programmierung vereinfachen auf Kosten komplizierter Konfiguration und aufwendigen Betriebs.
    • Kohäsion - also die Gruppierung zusammengehöriger Elemente - wird allgemein als hochgradig nützlich angesehen. Allerdings ist Kohäsion immens schwierig zu messen, und noch schwerer zu erreichen. Sie werden die Problematik widersprüchlicher Kriterien für Kohäsion kennenlernen.
    • Modularität gilt zu Recht als die Mutter aller Entwurfsprinzipien - dennoch lohnen ein paar Gedanken in ihre Richtung: Ich werde „Zusammensetzbarkeit" als einen weiteren Begriff erwähnen - womit wir hoffentlich zu noch besseren Kriterien für den Entwurf nützlicher Module kommen können.
    • Grundlegende Aktivitäten und Tätigkeiten in Softwarearchitektur und -engineering, wie beispielsweise „Erst-Denken-dann-Coden", also die saubere Trennung von Problem- und Lösungsraum: Erst das Problem verstehen, dann über Lösungen nachdenken.
    • Wenn wir so weit gekommen sind, sprechen wir Dokumentation an: Die ist oft nützlich, aber niemals ausreichend, um gute Systeme zu implementieren. Verlassen Sie sich niemals auf Dokumentation, sondern arbeiten Sie bei der Implementierung mit. Finden Sie positive und negative Abweichungen vom Soll-Zustand, und berücksichtigen Sie solche Abweichungen in Entwürfen.
    Mehr lesen

    VENOM: Leiden und Rettung eines großen Systems

    Vortrag Gernot Starke, Cem Kulac OOP 2018

    Wir stellen Ihnen VENOM vor - ein E-Commerce-System für komplizierte Produkte (Komplettausstattung von Supermärkten, Apotheken, Gartenplanung etc.) inklusive Logistik, Lieferung, Verzollung, Inbetriebnahme … Erleben Sie die Auswirkungen desaströser Architekturarbeit und verkorkster Entwicklungs-, Betriebs- und Unternehmensprozesse. Wir zeigen, wie methodische Verbesserung von Organisation bis zum Code funktionieren kann: Von Architekturbewertung über Entwicklung angemessener Verbesserungsmaßnahmen bis zur effektiven Umsetzung.

    Dürfen wir Ihnen VENOM vorstellen - ein E-Commerce-System für ziemlich komplizierte Produkte (Komplettausstattung von Supermärkten, Gartenplanung, Regal- und Möbelplanung und ähnliche abgefahrene Dinge) - inklusive kompletter Logistik, Lieferung, Verzollung, Aufbau, Abnahme, Inbetriebnahme … nennen wir es “very normal system”.

    Das System ist historisch/hysterisch gewachsen, wird von einer ziemlich desolat organisierten Firma (SAMM Inc.) entwickelt und betrieben. SAMM Inc. hat 600 Mitarbeiter und die IT ist als Kostenstelle (angeblich) immer zu teuer und in Verzug. Die Fachabteilungen entscheiden über Lösungen und involvieren die IT oft erst, wenn Umfang, Budget und Lösungsansätze bereits entschieden sind. VENOM verliert seit einiger Zeit Marktanteile und droht „den Bach herunter“ zu gehen.

    Daraufhin zog SAMM Inc. die Reißleine: Gemäß der Devise „Succeed or die“ beauftragte sie ein Team, die Rettung von VENOM mit der gesamten Organisation vorzubereiten und durchzuführen. Dabei stehen neben der Technik auch organisatorische Prozesse zur Verbesserung an. Diese (völlig fiktive) Situation ist in Wirklichkeit völlig real: Hören Sie über „rise and fall of the system“, „cultural change over agile toolboxes", sehen Sie die Auswirkungen desaströser Architekturarbeit und verkorkster Entwicklungs-, Betriebs- und Unternehmensprozesse.

    Erleben Sie anschließend, wie methodische Verbesserung von Organisation bis zum Code funktionieren kann, die Rettung von VENOM: Von der systematischen Architekturbewertung über die Entwicklung angemessener Verbesserungsmaßnahmen bis hin zur effektiven Umsetzung zeigen wir, wie Modernisierung und Evolution sich mit Projektalltag und Feature-Druck vereinbaren lässt. Über die Sprecher: Cem und Gernot haben Systeme und Organisationen im Großen und Kleinen verbessert - und die hier geschilderten Situationen live und 3D erlebt und erlitten …

    Mehr lesen
  • Domain-driven Design Architektur Kata

    Vortrag Eberhard Wolff OOP 2018

    Domain-driven Design gibt Architekten ein Vorgehen an die Hand, mit dem große Anwendungen aufgeteilt werden können. So entsteht eine klare fachliche Aufteilung. In diesem Tutorial werden die Teilnehmer verschiedene Techniken ausprobieren, um eine Domäne aufzuteilen. Ganz praktisch erarbeiten die Teilnehmer mit Event Storming, aber auch mit alternativen Ansätzen die Modellierung der Domäne. Im Mittelpunkt steht dabei selbst machen, Feedback - und Spaß!

    Mit Eberhard Wolff, Peter Kern, Victor Sauermann, Martin Heider und Robin Timmermann

    • Zielpublikum: Software-Architekten und -Entwickler
    • Voraussetzungen: Grundsätzliches Verständnis von Software-Architektur
    • Schwierigkeitsgrad: Anfänger
    Mehr lesen
  • Monolithen – besser als ihr Ruf

    Vortrag Christoph Iserlohn IT Tage 2017

    ORB-Architekturen, SOA, Microservices: alle Jahre wieder wird eine neuer Ansatz zur Modularisierung durchs IT-Dorf gejagt. Verpackt mit ein paar netten Anekdoten, warum Firma X unglaublich erfolgreich mit dem neusten Trend Y ist, wird das Ganze als neuer Heilsbringer für die Unternehmens-IT verkauft. Doch die Wirklichkeit sieht meistens ganz anders aus: Für die Umsetzung sind strukturelle, organistorische und technische Änderungen nötig, die oft kaum zu stemmen sind. Im Gegenzug bekommt man die Fallstricke und Komplexität eines verteilten Systems – eine “lose-lose”-Situation.

    In diesem Vortrag klären wir Sie über die Risiken und Probleme der aktuellen Modularisierungs-Trends auf und erinnern an fast vergessene Modularisierungs-Techniken, bei denen nicht das ganze Unternehmen auf den Kopf gestellt werden muss. Damit man auch heute noch mit seinem Monolithen glücklich sein kann.

    Mehr lesen
  • Transklusion – Kitt für gut geschnittene Webanwendungen

    Vortrag Franziska Dessart IT Tage 2017

    Selbst kleinere Webanwendungen stammen heutzutage nur noch selten aus einer Quelle. Daten und Inhalte aus Drittsystemen oder Content aus dem CMS wollen integriert werden oder gar ein Altsystem schrittweise abgelöst werden. Auch Microservices oder Self contained Systems stellen Teile eines Frontends isoliert zur Verfügung, um den Frontendmonolithen zu vermeiden. Schön entkoppelt, aus Sicht der Architektur. Doch wie und wo bringe ich am Ende alle Einzelteile zusammen? Mit einer selbstgestrickten Lösung in meinem Backend? Alles clientseitig integriert? Welche Möglichkeiten es gibt und für welche Anwendungsfälle sie sich am besten eignen, soll das Thema dieses Vortrags sein.

    Mehr lesen
  • Sicherheit in Microservice-Umgebungen

    Vortrag Christoph Iserlohn IT Tage 2017

    Microservices sind momentan in aller Munde. Selten wird jedoch der Sicherheitsaspekt berücksichtigt, obwohl dieser eine beträchtliche Herausforderung darstellt: Statt einer monolithischen Applikation müssen nun eine Vielzahl von Microservices, teilweise in verschiedenen Programmiersprachen implementiert und abgesichert werden. Die Authentifizierungs-/Autorisierungskonzepte und -mechanismen müssen über Applikations- und Netzwerkgrenzen hinweg funktionieren. Mehr Schnittstellen sind über das Netzwerk exponiert und bieten eine größere Angriffsfläche.

    In diesem Vortrag werden die Herausforderungen im Bezug auf Security in Microservice-Umgebungen aufgezeigt und passende Lösungsansätze angeboten.

    Mehr lesen

    Die VENOM-Story: Von Leben, Leiden und Rettung eines großen (und gar nicht so hypothetischen) IT-Systems

    Vortrag Gernot Starke IT Tage 2017

    Darf ich Ihnen VENOM vorstellen – ein eCommerce-System für ziemlich komplizierte Produkte (Komplettausstattung von Supermärkten, Gartenplanung, Regal- und Möbelplanung und ähnlich abgefahrene Dinge) – inklusive kompletter Logistik, Lieferung, Verzollung, Aufbau, Abnahme, Inbetriebnahme… nennen wir es “very normal system”. Das System ist historisch/hysterisch gewachsen, wird von einer zerfahrenen, ziemlich desolaten Firma (SAMM Inc.) entwickelt und betrieben und drohte vor einiger Zeit, “den Bach hinunter” zu gehen. SAMM Inc. zog die Reißleine, und beauftragte ein (agiles) Team damit, die Rettung von VENOM (und SAMM) vorzubereiten und durchzuführen – “Succeed or die”, hieß die Devise. Diese (völlig fiktive) Situation ist in Wirklichkeit völlig real: Hören Sie über “rise and fall of the system”, sehen Sie die Auswirkungen desaströser Architekturarbeit und verkorkster Entwicklungs- und Betriebsprozesse.

    Erleben Sie anschließend, wie methodische Verbesserung von Software funktionieren kann, die Rettung von VENOM: Von der systematischen Architekturbewertung über die Entwicklung angemessener Verbesserungsmaßnahmen bis hin zur effektiven Umsetzung zeige ich auf, wie Modernisierung und Evolution sich mit Projektalltag und Feature-Druck vereinbaren lässt.

    Disclaimer: Eventuelle Ähnlichkeiten mit realen Softwaresystemen und Entwicklungsorganisationen wären rein zufällig – obwohl ich diverse der hier geschilderten Situationen selbst erleben durfte oder erleiden musste.

    Mehr lesen

    Schnelleinstieg in Go

    Vortrag Daniel Bornkessel, Christoph Iserlohn IT Tage 2017

    Obwohl noch recht jung, hat sich Go in der Softwareentwicklung fest etabliert. Viele kritische Systeme werden heutzutage in Go implementiert – Docker ist hier einer der prominenten Vertreter. Go macht vieles anders als gewohnt. Mit channels und go-routines besitzt Go moderne Nebenläufigkeitskonstrukte, die in den altbewährten Programmiersprachen so nicht zu finden sind. Auf der anderen Seite verzichtet Go auf einige Dinge, die mittlerweile als selbstverständlich angesehen werden wie Generics oder Exceptions.

    Anhand von Beispielen und praktischen Übungen vermittelt diese Session die nötigen Kenntnisse, um kleinere eigene Programme in Go zu schreiben und channels und go-routines zu nutzen.

    Mehr lesen
  • Microservices-Workshop: REST, Kubernetes, UI-Integration und asynchron als alternative Ansätze

    Vortrag Eberhard Wolff IT Tage 2017

    Dieser Workshop gibt zunächst eine Einführung in Microservices und zeigt dann drei konkrete Möglichkeiten zur Umsetzung von Microservices nicht nur mit Java: REST Microservices mit Kubernetes, UI-Integration auf Client oder Service und asynchrone Microservices mit Kafka. Konkrete Codebeispiele illustrieren die Ansätze und können ein Startpunkt für eine eigene Umsetzung sein. Die Teilnehmer können anschließend Vor- und Nachteile abwägen und die Implementierung von Microservices mit diesen Ansätzen starten.

    Mehr lesen
  • Pragmatischer Einstieg in Clojure

    Vortrag Michael Vitz JVM-Con 2017

    Clojure ist eine JVM Sprache die etwas unmögliches schafft: ein Lisp, das tatsächlich von Menschen gelesen und benutzt werden kann.

    Dieser Workshop richtet sich an Anfänger, die eine dynamische, funktionale Sprache auf der JVM lernen möchten. Nach einer kurzen Einführung in die Sprache werden wir gemeinsam einige einfache Programmieraufgaben machen und somit zusammen ein Gefühl für die Sprache entwickeln.

    Mehr lesen
  • Java9 – Features abseits von Jigsaw und JShell

    Vortrag Michael Vitz JVM-Con 2017

    Spricht man mit Entwicklern über Java9 so fällt den meisten zuerst Jigsaw und nach einigem Überlegen noch JShell als neue Features ein. Neben diesen beiden, im Rampenlicht stehenden, Features bietet Java9 jedoch noch eine Menge an weiteren neuen Features. Einige dieser „Hidden“ Features lernen Sie in dieser Session kennen. Und wer weiß, vielleicht ist auch eines dabei, dass Sie viel besser verwenden können als die beiden Großen.

    Mehr lesen

    Bis an den Abgrund - und zurück!

    Vortrag Gernot Starke Java Usergroup Hamburg November 2017

    Aufstieg, Krise und Rettung einer (gar nicht so) hypothetischen Software

    Unser “ganz normales System” (VENOM, "very normal system“) unterstützt eCommerce-Prozesse für ziemlich komplizierte Produkte (Komplettausstattung von Kaufhäusern und Apotheken, Gartenplanung, Regal- und Möbelplanung und ähnliche abgefahrene Dinge) - inklusive kompletter Lieferung, Verzollung, Aufbau, Abnahme, Inbetriebnahme….

    Das System, über viele Jahre eher hysterisch als historisch gewachsen, wird von einer ziemlich desolaten organisierten Firma (SAMM Inc.) entwickelt und betrieben. Es drohte vor einiger Zeit, „den Bach herunter“ zu gehen. SAMM Inc. zog die Reißleine, und beauftragte ein (agiles) Team damit, die Rettung von VENOM (und SAMM) vorzubereiten und durchzuführen - „Succeed or die", hieß die Devise.

    Diese (überaus fiktive) Situation ist in Wirklichkeit völlig real. Lernen Sie „rise and fall of a system“ aus der Nähe kennen, sehen Sie die Auswirkungen desaströser Architekturarbeit sowie verkorkster Entwicklungs- und Betriebsprozesse. Und dann - erfahren Sie von Maßnahmen, die wirklich helfen könnten (oder auch nicht) - und sehen Sie (am realen Beispiel), wie methodische Verbesserung von Software(architektur) funktionieren kann.

    Disclaimer: Ähnlichkeit mit real existierenden Unternehmen ist rein zufällig.

    Mehr lesen
  • Continuous Delivery mit Microservices

    Vortrag Eberhard Wolff Microservices Summit 2017

    Microservices lösen viele Probleme in der Software-Entwicklung. Aber die große Anzahl an Services macht das Deployment wesentlich aufwendiger. Dieses Tutorial zeigt die Herausforderungen rund um Deployment und die Continuous-Delivery-Pipeline für Microservices auf und mögliche Lösungen, um Microservices mit wenig Risiko zu deployen und zu testen. Neben konkreten Technologien zeigt das Tutorial auch Lösungen auf der Ebene von Architektur und Organisation.

    Mehr lesen
  • Ant’s Community - Looking Back and Current State

    Vortrag Stefan Bodewig FOSS Backstage Folien verfügbar

    Apache Ant has been created almost twenty years ago. It’s been a large success in its early years and the community grew with it. Today Ant no longer makes headlines - unlike its grandchildren - but is still happily serving its friends, even if the party is smaller now. In this talk Stefan looks back at events inside Ant’s community, how they affected the community in the long term, and what other communities may learn from this. He’ll also talk about the specific challenges of an aging project.

    Mehr lesen
  • Mutation Testing in Continuous Delivery Pipelines

    Vortrag Jan Stępień Continuous Lifecycle 2017 Folien verfügbar

    Mutation testing is a method of evaluating and improving the quality of our test suites. It introduces subtle bugs to source code of our projects and checks that our tests catch those synthetic faults. High computational cost of this technique have prevented it from being widely used in our standard programming toolchain.

    Can we try to sneak it in through the backdoor of our continuous delivery pipelines? How much of it can we automate? How can our version control system help us in the process?

    Let’s try to answer those questions together.

    Mehr lesen

    Reactive Systems & Extensions

    Vortrag Phillip Ghadir Softwareforen Leipzig, User Group "Softwarearchitektur und Softwareentwicklung"

    Reactive Systems zeichnen sich durch die Fähigkeit aus, trotz vieler Benutzeranfragen und großen Datenmengen weiterhin auf Anfragen reagieren zu können. Das Mittel der Wahl ist üblicherweise ein asynchroner Nachrichtenaustausch.

    In diesem Vortrag stelle ich dafür zwei Mechanismen vor: Mit Reactive Extensions lassen sich Nachrichten elegant verarbeiten und mit Kafka Produzenten von Konsumenten effektiv entkoppeln.

    Stichpunkte:

    • Strukturierte Datenflüsse
    • RxJava
    • Apache Kafka
    Mehr lesen
  • Datenbankzentrische Anwendungen mit Spring Boot und jOOQ

    Vortrag Michael Simons Java Usergroup Münster, November 2017 Folien verfügbar

    In diesem Vortrag wird eine Variante datenbankzentrischer Anwendungen mit einer modernen Architektur vorgestellt, die sowohl in einer klassischen Verteilung als auch “cloud native” genutzt werden kann, und dabei eine sehr direkte Interaktion mit Datenbanken erlaubt.

    jOOQ ist eine von vielen Möglichkeiten, Datenbankzugriff in Java zu realisieren, aber weder eine Objektrelationale Abbildung (ORM) noch “Plain SQL”, sondern eine typsichere Umsetzung aktueller SQL Standards in Java. jOOQ “schützt” den Entwickler nicht vor SQL Code, sondern unterstützt ihn dabei, typsicher Abfragen in Java zu schreiben.

    Spring Boot setzt seit mehreren Jahren neue Standards im Bereich der Anwendungsentwicklung mit dem Spring Framework. Waren vor wenigen Jahren noch aufwändige XML Konfigurationen notwendig, ersetzen heute “opinionated defaults” manuelle Konfiguration. Eine vollständige Spring Boot Anwendung passt mittlerweile in einen Tweet.

    Der Autor setzt die Kombination beider Technologien erfolgreich zur Migration einer bestehenden, komplexen Oracle Forms Client Server Anwendung mit zahlreichen Tabellen und PL/SQL Stored Procedures hinzu einer modernen Architektur ein. Das Projekt profitiert sehr davon, die Datenbankstrukturen nicht in einen ORM “zu zwängen”.

    Der Vortrag demonstriert, wie Spring Boot genutzt wird, um den Kontext für jOOQ vorzubereiten (Datenbankverbindung, Transaktionen etc.) und anschließend fortgeschrittene, analytische Abfragen als HTTP apis zu veröffentlichen.

    Auf dem Weg dorthin wird ebenfalls über Datenbankmigrationen gesprochen und wie auch an dieser Stelle die Magie von Spring Boot eingesetzt werden kann, um Entwicklungs-, Test- und Produktivdatenbanken synchron zu halten.

    Kann Domain Driven Design von spezialisierten SQL-Abfragen profitieren? Die Gefahr ist groß, JPA-Entities mit Entitäten aus Evans’ DDD Buch zu verwechseln und zu meinen, man ist fertig mit DDD. Vielleicht ist es eine gute Idee, auch für DDD Entitäten und Value-Objekte spezialisierte Abfragen zu verwenden.

    Mehr lesen

    Die Grenzen von Continuous Delivery

    Vortrag Eberhard Wolff Continuous Lifecycle 2017

    “Schneller Software deployen ist ein wichtiger Wettbewerbsvorteil”, so heißt es oft. Also gilt es: Entweder die Firmen setzen Continuous Delivery um - oder sie verschwinden vom Markt. Aber in der Realität haben viele Organisationen den Sprung zu schnellen Deployments noch nicht geschafft. Warum nicht? Wenn es so viele nicht tun – ist es dann überhaupt relevant?

    Dieser Vortrag beschäftigt sich mit der Frage, warum Continuous Delivery in der Praxis nicht funktioniert - und was wir dagegen tun können. Die möglichen Maßnahmen sind technologische Tricks, aber vor allem auch organisatorische Maßnahmen und Vereinfachungen.

    Mehr lesen
  • Microservices mit Spring Cloud und Spring Boot

    Vortrag Eberhard Wolff Continuous Lifecycle 2017

    In diesem Workshop entwickeln die Teilnehmer eine Microservices-Umgebung mit Spring Boot und Spring Cloud. Nach einer theoretischen Einführung erstellen die Teilnehmer zunächst einen einfachen Microservice mit Spring Boot, packen ihn in einen Docker-Container ein und registrieren ihn in der Service Discovery Consul. Dann können die Teilnehmer in der Umgebung praktische Erfahrungen mit Hystrix für Resilience oder Ribbon für Load Balancing sammeln. So lernen sie die grundlegenden notwendigen Technologien für Microservices und eine konkrete Implementierung für ein entsprechendes System kennen.

    Mehr lesen
  • Introducing structure in Clojure

    Vortrag Jan Stępień Codemotion 2017 Folien verfügbar

    Once you’ve got a couple of Clojure katas under your belt you start to wonder how to structure an entire application. Where does the logic go? Where do you respond to HTTP requests? Where to connect to the database and how to pass the connection to code which needs it? Let’s see what the best practices are and which Clojure libraries can help us.

    Mehr lesen
  • Code Retreat – Best Practices ganz praktisch

    Vortrag Eberhard Wolff, Martin Klose W-JAX 2017

    “Wir spielen täglich ein Konzert. Ein Code Retreat ist die nötige Fingerübung, die jeder Musiker auch macht.” Üben Sie Test-driven Development – das Schreiben des Tests vor der Implementierung, Pair Programming – das Programmieren zu zweit, und Refactoring ganz praktisch. Dazu benötigen Sie lediglich einen Laptop mit installierter IDE und Spaß am Programmieren.

    Mehr lesen
  • Die VENOM-Story: Von Leben, Leiden und Rettung eines großen (und gar nicht so hypothetischen) IT-Systems

    Vortrag Gernot Starke W-JAX 2017

    Darf ich Ihnen VENOM vorstellen – ein E-Commerce-System für ziemlich komplizierte Produkte (Komplettausstattung von Supermärkten, Gartenplanung, Regal- und Möbelplanung und ähnliche abgefahrene Dinge) inklusive kompletter Logistik, Lieferung, Verzollung, Aufbau, Abnahme, Inbetriebnahme, nennen wir es „very normal system“.

    Das System ist historisch/hysterisch gewachsen, wird von einer zerfahrenen, ziemlich desolaten Firma (SAMM Inc.) entwickelt und betrieben und drohte vor einiger Zeit, „den Bach herunter“ zu gehen. SAMM Inc. zog die Reißleine und beauftragte ein (agiles) Team damit, die Rettung von VENOM (und SAMM) vorzubereiten und durchzuführen – „Succeed or die“ hieß die Devise.

    Diese (völlig fiktive) Situation ist in Wirklichkeit völlig real: Hören Sie über „rise and fall of the system“, sehen Sie die Auswirkungen desaströser Architekturarbeit und verkorkster Entwicklungs- und Betriebsprozesse.

    Erleben Sie anschließend, wie methodische Verbesserung von Software funktionieren kann, die Rettung von VENOM: Von der systematischen Architekturbewertung über die Entwicklung angemessener Verbesserungsmaßnahmen bis hin zur effektiven Umsetzung zeige ich auf, wie Modernisierung und Evolution sich mit Projektalltag und Featuredruck vereinbaren lassen.

    Disclaimer: Eventuelle Ähnlichkeiten mit realen Softwaresystemen und Entwicklungsorganisationen wären rein zufällig – obwohl ich diverse der hier geschilderten Situationen selbst erleben durfte oder erleiden musste.

    Mehr lesen

    Property-based testing: You won’t look at your tests the same way ever again

    Vortrag Jan Stępień Munich Rubyshift November 2017

    Property-based testing changes the way you look at your test suites. Instead of specifying test cases one after another, this advanced testing technique enables you to use logic to automatically generate a stream of inputs. Despite its potential, property-based testing still remains under the radar within the Ruby community. Let’s try to uncover its strengths together.

    The talk will discuss how property-based testing compares to traditional testing methods and demonstrate its principles with simple examples. We will also see how it fits into a TDD workflow and a CD pipeline. In order to bust the myth of the inapplicability of property-based testing in a real-world setting we’ll bring up some use cases from industry. Finally, we’ll wander into the world of concurrency and the automation of race condition detection.

    Mehr lesen
  • Beyond Microservices – ein Blick hinter den Hype

    Vortrag Eberhard Wolff W-JAX 2017

    Im Moment sind Microservices der Architekturhype, aber auch Microservices sind nicht die Lösung aller Probleme. Dieser Vortrag schaut hinter den Hype, analysiert die Vor- und Nachteile von Microservices und zeigt alternative Ansätze, die viele Nachteile vermeiden und immer noch die wichtigsten Vorteile bieten. So sind maßgeschneiderte Architekturansätze möglich, die je nach Szenario unterschiedliche Trade-offs umsetzen. Ideen wie Domain-driven Design, Optimierung des Deployments, konsequente Modularisierung und weitgehende Selbstorganisation der Teams spielen dabei eine Rolle.

    Mehr lesen

    Wie etabliert man DDD im Spannungsfeld zwischen Business und IT?

    Vortrag Michael Plöd, Carola Lilienthal W-JAX 2017 Folien verfügbar

    DDD bietet eine Reihe von Konzepten und Lösungsvorschlägen, die nur dann funktionieren, wenn sich die Stakeholder aus den Fachbereichen und die Entwickler auf eine weitgehende Zusammenarbeit einlassen. Einerseits müssen die Stakeholder für eine umfassende Diskussion ihrer Fachsprache offen sein, damit in den verschiedenen Bounded Contexts jeweils eine einheitliche Ubiquitous Language entsteht. Andererseits müssen die Entwickler ihr gewohntes Terrain der technischen Abstraktionen verlassen. Eine einseitige Konzentration auf die Building Blocks von DDD (Aggregates, Entities, Value Objects …), führt dazu, dass das volle Potenzial von DDD nicht ausgeschöpft wird.

    Im Rahmen des Vortrags werden wir Ihnen vorstellen, wie Sie als Architekt in einem solchen Umfeld agieren können. Wir zeigen Ihnen Mittel, Wege und Moderationstechniken, wie Sie anfangs zurückhaltende Stakeholder doch noch überzeugen können, zusammen mit Ihnen effektiv Domain-driven Design zu praktizieren.

    Mehr lesen

    Spring Boot Microservices mit Domain Events

    Vortrag Michael Plöd W-JAX 2017

    Domain Events sind ein zentraler Aspekt des taktischen Domain-driven Designs und zudem die Basis für die Implementierung lose gekoppelter Microservices, die auf asynchrones Event Processing ausgelegt sind. In diesem Vortrag werden wir uns mit dem Konzept der Domain Events beschäftigen und kennen lernen, wie sie modelliert und genutzt werden können, um eine lose Kopplung ohne synchrone Kommunikation von Microservices erreichen zu können.

    Weiterhin werden wir das Konzept anhand eines konkreten Beispiels in die Praxis umsetzen. Hierbei werden wir Technologien wie Spring Boot, Spring Cloud Stream (Rabbit/Kafka) und Cloud Foundry verwenden, um anhand von Events und unterschiedlichen Modellierungsstilen von Events die Vor- und Nachteile des Ansatzes kennen zu lernen.

    Mehr lesen

    Microservices: Patterns und Antipatterns

    Vortrag Stefan Tilkov W-JAX 2017 Folien verfügbar

    Man könnte glatt das Gefühl bekommen, sämtliche Probleme aller Arten von Systemen lassen sich auf einfachste Art lösen, wenn man nur einfach ganz viele kleine Module baut und sie „Microservices“ nennt. Tatsächlich ist eine Microservices-Architektur manchmal eine gute Lösung, oft aber nur eine Quelle zusätzlicher Frustration, die außer interessant aufgewerteten Lebensläufen nur wenig Nutzen bringt. In diesem Vortrag sehen wir uns gemeinsam an, welche Muster den Weg zum Erfolg weisen können – und welche eher ein Warnsignal vor einer falschen Abbiegung sind.

    Mehr lesen

    Asynchrone Microservices mit Kafka und REST / Atom

    Vortrag Eberhard Wolff W-JAX 2017

    Asynchrone Kommunikation zwischen Microservices führt zu einer losen Kopplung und zu besserer Resilience. Und Event Sourcing bietet sogar noch weitere Vorteile. Dieser Vortrag zeigt, wie asynchrone Microservices mit Kafka und Atom implementiert werden können und was es dabei zu beachten gilt.

    Mehr lesen
  • Microservices-Workshop: REST, Kubernetes, UI-Integration und asynchron als alternative Ansätze

    Vortrag Eberhard Wolff W-JAX 2017

    Dieser Power-Workshop gibt zunächst eine Einführung in Microservices und zeigt dann drei konkrete Möglichkeiten zur Umsetzung von Microservices, nicht nur mit Java: REST Microservices mit Kubernetes, UI-Integration auf Client oder Service und asynchrone Microservices mit Kafka. Konkrete Codebeispiele illustrieren die Ansätze und können ein Startpunkt für eine eigene Umsetzung sein. Die Teilnehmer können anschließend Vor- und Nachteile abwägen und die Implementierung von Microservices mit diesen Ansätzen starten.

    Mehr lesen
  • Strategisches Design (DDD) für Microservices

    Vortrag Michael Plöd Enterprise Java User Group (eJUG) Austria

    Zweifelsohne kann das Buch „Domain-Driven Design“ von Eric Evans als „Muss“ für Softwarearchitekten und Entwickler betrachtet werden. Die dort geschilderten Ideen sind heute im Kontext von Trends wie Microservices relevanter denn je. Dabei gilt es jedoch zu berücksichtigen, dass Domain-driven Design (DDD) nicht einfach nur auf Aggregate, Entitäten und Services zu reduzieren ist und dass es viel tiefergehende Zusammenhänge zwischen DDD und Microservices wie den Bounded Context gibt.

    An dieser Stelle setzt der Vortrag an: wir werden Schritt für Schritt erkunden, wie uns die Ideen und Patterns beim Aufbau und Design von Microservices-Landschaften helfen. Des Weiteren werden wir betrachten, wie wir mithilfe von DDD eine bestehende Landschaft in Richtung von Microservices migrieren können.

    Mehr lesen
  • OAuth2 und OpenID Connect

    Vortrag Christoph Iserlohn, Simon Kölsch heise devSec 2017

    Als Webnutzer möchte ich eigentlich nur eins: endlich keine 100 verschiedene Passwörter mehr und trotzdem sichere Authentifizierung. OpenID und OAuth sind aus diesen Problemen heraus entstanden und über mehrere Jahre zu einer komplexen Sammlung an unterschiedlichen Spezifikationen gewachsen.

    Diese Session gibt einen Überblick über die Ideen dahinter sowie über Funktionsweise, Einsatzzwecke und Schwierigkeiten.

    Vorkenntnisse

    Grundkenntnisse in der Entwicklung von verteilten Webanwendungen.

    Lernziele

    Nach dem Vortrag sollen die Besucher einen Überblick über die derzeit gängigen Authentifizierungs- und Autorisierungsverfahren im Web haben und wissen, welche Vor- und Nachteile mit ihnen verbunden sind.

    Mehr lesen

    Sicherheit in Microservice-Umgebungen

    Vortrag Christoph Iserlohn heise devSec 2017

    Microservices sind momentan in aller Munde. Selten wird jedoch der Sicherheitsaspekt berücksichtigt, obwohl er eine beträchtliche Herausfoderung darstellt: Statt einer monolithischen Applikation müssen nun eine Vielzahl von Microservices – teilweise in verschiedenen Programmiersprachen implementiert – abgesichert werden. Die Authentifizierungs-/Autorisierungskonzepte und Mechanismen müssen über Applikations- und Netzwerkgrenzen hinweg funktionieren. Mehr Schnittstellen sind über das Netzwerk exponiert und bieten eine größere Angriffsfläche.

    In diesem Vortrag werden die Herausforderungen in Bezug auf Security in Microservice-Umgebungen aufgezeigt und passende Lösungsansätze angeboten.

    Vorkenntnisse

    Grundkenntnisse in der Entwicklung von Microservices.

    Lernziele

    Die Besucher sollen nach dem Vortrag die typischen Securityprobleme in Microservice-Umgebungen kennen und wissen, wie sie gelöst werden können.

    Mehr lesen
  • Java9 – Features abseits von Jigsaw und JShell

    Vortrag Michael Vitz JCON 2017 Folien verfügbar

    Spricht man mit Entwicklern über Java9 so fällt den meisten zuerst Jigsaw und nach einigem Überlegen noch JShell als neue Features ein. Neben diesen beiden, im Rampenlicht stehenden, Features bietet Java9 jedoch noch eine Menge an weiteren neuen Features. Einige dieser “Hidden” Features lernen Sie in dieser Session kennen. Und wer weiß, vielleicht ist auch eines dabei, dass Sie viel besser verwenden können als die beiden Großen.

    Mehr lesen
  • Modularisierte UIs für Microservices abseits von SPAs

    Vortrag Michael Vitz JCON 2017 Folien verfügbar

    Besonders aufgrund des aktuellen Trends zu Microservice-Architekturen bestehen aktuelle Systeme aus mehren Services. Häufig wird das User-Interface dabei als eigener Service realisiert und separat deployt oder es wird eine Single-Page-App genutzt. In dieser Session zeige ich Ihnen, dass es hierfür auch andere Möglichkeiten gibt. Neben den Vor- und Nachteilen werden dabei auch konkrete Technologien, wie z.B. Edge-Side-Includes oder Transklusion betrachtet.

    Mehr lesen
  • Die Magie hinter Spring-Boot-Startern

    Vortrag Michael Simons Java User Group Darmstadt Oktober 2017 Folien verfügbar

    Zusammen mit Spring Boot wird fast immer der Spring Initializr auf start.spring.io erwähnt: Eine komfortable REST-Anwendung, mit deren Hilfe sich Entwicklerinnen die Abhängigkeiten einer neuen Anwendung einfach zusammenklicken können.

    Diese Abhängigkeiten sind in der Regel sogenannte Starter. Starter deklarieren zum einen transitive Abhängigkeiten und bringen eine automatische Konfiguration für das Thema des Starters mit.

    Die Deklaration des spring-boot-starter-web reicht zum Beispiel vollkommen aus, um nicht nur Spring Web MVC vollständig zu konfigurieren, sondern schließt weiterhin einen eingebetteten Servlet-Container mit ein.

    In diesem Vortrag wird gezeigt, wie der Mechanismus eines Starters funktioniert: Ist es wirklich Magie ist oder wurden vielmehr vorhandene Spring Konzepte intelligent genutzt, um eine möglichst widerstandsfähige und leicht erweiterbare Schnittstelle zur internen und externen Konfiguration einer Spring-Anwendung zu schaffen. Während der Demo wird ein individueller Dialekt für die Templatesprache Thymeleaf entwickelt, der mit einem Spring-Boot-Starter-Modul zur Verfügung gestellt wird.

    Mehr lesen
  • Java 9 – Features abseits von Jigsaw und JShell

    Vortrag Michael Vitz JUG Berlin-Brandenburg Oktober 2017 Folien verfügbar

    Spricht man mit Entwicklern über Java 9 so fällt den meisten zuerst Jigsaw und nach einigem Überlegen noch JShell als neue Features ein.

    Neben diesen beiden, im Rampenlicht stehenden, Features bietet Java 9 jedoch noch eine Menge an weiteren neuen Features. Einige dieser “Hidden” Features lernen Sie in dieser Session kennen. Und wer weiß, vielleicht ist auch eines dabei, dass Sie viel besser verwenden können als die beiden Großen.

    Mehr lesen
  • Architekturen und Alternativen

    Vortrag Eberhard Wolff The Architecture Gathering 2017

    Software-Architektur kommt eine zentrale Rolle in Software-Projekte zu. Daher zielt eine Verbesserung oft auf die Software-Architektur - obwohl es viele andere Handlungsfelder wie Betrieb, Test oder Organisation gibt. In diesem Vortrag geht es um typische Anforderungen an Software-Architektur wie Änderbarkeit oder Robustheit - und mit welchen Mitteln auch außerhalb der Architektur sie erreicht werden können. So lernen Software-Architekten, was alles in ihrem Werkzeugkoffer enthalten sein kann.

    Mehr lesen
  • Enemy of the State

    Vortrag Joy Clark Topconf Düsseldorf 2017

    Another term for technical debt is accidental complexity. This differs from the essential complexity that is inherent in the problem at hand because it refers to the unnecessary complexity that we add into our application. The state of an application refers to all of the information needed in order for the application to run correctly. When the state is accidentally modified due to unexpected side effects or when state is hidden and handled in an unexpected way, this is a huge source for accidental complexity.

    This talk will look at patterns for decreasing the state needed for an application and for handling the remaining state in such a way that it decreases the complexity of the application.

    Mehr lesen

    From Brownfield to DevOps

    Vortrag Sven Johann Topconf Düsseldorf 2017

    In urban planning, a brownfield is when we build on land that was previously used for industrial purposes, potentially contaminated with hazardous waste or pollution. In order to improve the land, existing structures need to be demolished or toxic materials need to be removed. In software development, a brownfield comes often with significant Technical Debt such as having no automated tests or running on unsupported platforms. A greenfield in software development means to start from scratch and worry less about existing code bases, processes and teams.

    Many people believe that DevOps, which requires a software architecture optimised for testability and deployability, is only possible for greenfield projects, but many companies, such as Etsy or LinkedIn showed how to close the large performance gap between what customers needed and what the organisation was able to deliver by selecting the right value streams and improving their software architecture along those value streams.

    This talk starts with defining the Technical Debt landscape from Code Smells to the Technology Gap and shows why solving the problems of the landscape unsystematically is neither economical nor goal oriented and won’t lead you anywhere. We then look at the specific goals DevOps wants to achieve and how certain parts of the Technical Debt landscape interfere with these goals unequally strong. The presentation will offer conceptual background and concrete steps and examples on how to understand and select the right value stream for a brownfield DevOps transformation, how to get started and measure progress, select the right technologies at a certain point in time and finally move towards continuous architecting for DevOps.

    Mehr lesen
  • Beyond Microservices

    Vortrag Eberhard Wolff Topconf Düsseldorf 2017

    Everyone is doing microservices these days - but they are no silver bullet. This talk reviews the advantages microservices bring - e.g. better modularization, many technical advantages and better support for continuous delivery. Then, the talk discusses the drawbacks, e.g. concerning operations. Finally, the talk shows several case studies with alternative approaches that provide some of the advantages, while avoiding the pitfalls. Domain-driven Design, optimizing the deployment, different approaches to modularization and self-organizing teams are important ingredients of these architectures.

    Mehr lesen
  • Getting started fast: Development infrastructure, CI, and test deployment to a Kubernetes cluster on AWS

    Vortrag Andreas Krüger, Jörg Müller AWS Tech Community Days Folien verfügbar

    When a new software development project is to start, infrastructure is urgently needed. This is even more important when developing a modern system based on microservices. We present, as a viable approach, hosting both development infrastructure (source control, issue tracking, documentation, continuous integration, continuous deployment pipeline) and also a test-bed for the new software itself on a Kubernetes cluster deployed to AWS. All this can be set up in a few hours or even less. We describe the software stack used and some lessons learned.

    Mehr lesen
  • Java9 – Features abseits von Jigsaw und JShell

    Vortrag Michael Vitz BED-Con 2017 Folien verfügbar

    Spricht man mit Entwicklern über Java9 so fällt den meisten zuerst Jigsaw und nach einigem Überlegen noch JShell als neue Features ein. Neben diesen beiden, im Rampenlicht stehenden, Features bietet Java9 jedoch noch eine Menge an weiteren neuen Features. Einige dieser “Hidden” Features lernen Sie in dieser Session kennen. Und wer weiß, vielleicht ist auch eines dabei, dass Sie viel besser verwenden können als die beiden Großen.

    Mehr lesen

    Die Grenzen von Continuous Delivery

    Vortrag Eberhard Wolff BED-Con 2017

    “Schneller Software deployen ist ein wichtiger Wettbewerbsvorteil.”, so heißt es oft. Aber in der Realität haben viele Organisationen den Sprung noch nicht geschafft.

    Warum nicht? Wenn es so viele nicht tun - ist es dann überhaupt relevant? Dieser Vortrag beschäftigt sich mit der Frage, warum Continuous Delivery in der Praxis nicht funktioniert - und was wir dagegen tun können.

    Mehr lesen

    Property-based testing: You won’t look at your tests the same way ever again

    Vortrag Jan Stępień BED-Con 2017 Folien verfügbar

    Property-based testing changes the way you look at your test suites. Instead of specifying test cases one after another, this advanced testing technique enables you to use logic to automatically generate a stream of inputs. Despite its potential, property-based testing still remains under the radar within the Java community. Let’s try to uncover its strengths together.

    The talk will discuss how property-based testing compares to traditional testing methods and demonstrate its principles with simple examples. We will also see how it fits into a TDD workflow and a CD pipeline. In order to bust the myth of the inapplicability of property-based testing in a real-world setting we’ll bring up some use cases from industry. Finally, we’ll wander into the world of concurrency and the automation of race condition detection.

    Mehr lesen
  • Serverlose IoT-Applikationen

    Vortrag Niko Will BED-Con 2017 Folien verfügbar

    Softwareentwickler sehen sich heutzutage mit einer Vielzahl von Anforderungen konfrontiert. Bereits das Verstehen der Domäne für die Implementierung der Geschäftslogik kann beliebig komplex werden. Hinzu kommen nun immer mehr Themen wie Skalierung und Ausfallsicherheit. Ganz zu schweigen von Benutzerauthentifizierung und -autorisierung oder Logging, Monitoring und Betrieb der Anwendung. Im IoT-Umfeld bereiten uns zusätzlich noch die Anbindung von Geräten über unsichere und instabile Verbindungen Kopfzerbrechen.

    Andererseits bieten mittlerweile viele der großen Cloud-Plattformen zusätzlich zu Datenbanken und Messaging-Systemen auch ein reiches Portfolio an Diensten, die speziell auf die Bedürfnisse von IoT-Applikationen zugeschnitten sind. In Kombination mit serverlosen Funktionen lassen sich so bereits in einigen Tagen bis wenigen Wochen erste Konzepte praktisch erproben oder sogar komplett umsetzen. Darüber hinaus kann durch den Verzicht auf eigene Backend-Services ein Großteil der typischen Betriebsthemen entfallen.

    Dieser Vortrag zeigt am Beispiel von Amazon Web Services (AWS), wie sich Geräte schnell und sicher an eine Cloud-Plattform anbinden lassen. Außerdem lernen die Teilnehmer, wie sie durch Kombination der vorhandenen Dienste und einiger weniger serverloser Funktionen zu einer produktiv einsetzbaren IoT-Applikation kommen.

    Mehr lesen

    Modularisierte UIs für Microservices abseits von SPAs

    Vortrag Michael Vitz BED-Con 2017 Folien verfügbar

    Besonders aufgrund des aktuellen Trends zu Microservice-Architekturen bestehen aktuelle Systeme aus mehren Services. Häufig wird das User-Interface dabei als eigener Service realisiert und separat deployt oder es wird eine Single-Page-App genutzt. In dieser Session zeige ich Ihnen, dass es hierfür auch andere Möglichkeiten gibt. Neben den Vor- und Nachteilen werden dabei auch konkrete Technologien, wie z.B. Edge-Side-Includes oder Transklusion betrachtet.

    Mehr lesen

    Viermal Microservices anders - REST, Kubernetes, UI-Integration und asynchron

    Vortrag Eberhard Wolff BED-Con 2017

    Viele sagen: “Microservices sind kleine REST-Services”. Das ist aber nur eine Option.

    Dieser Vortrag zeigt vier völlig andere Ansätze: Asynchrone Microservices mit Kafka, asynchrone Microservices mit Atom-Feeds oder eine Integration auf UI-Ebene. Vor- und Nachteile aller Ansätze werden anhand praktischer Code-Beispiele beleuchtet - wie auch die jeweilige Komplexität. So können die Teilnehmer den für sie passenden Ansatz finden und umsetzten.

    Mehr lesen
  • Keynote: Architektur, Organisation, Prozesse – und Menschen

    Vortrag Stefan Tilkov Software Architecture Summit Berlin 2017 Folien verfügbar

    Keine Präsentation über moderne Architekturen ohne „Conways Law“: Der Zusammenhang zwischen Organisationsstruktur und Architektur ist mittlerweile fast ein Allgemeinplatz. Aber was machen wir aus dieser profunden und doch gleichzeitig trivialen Erkenntnis?

    Mit diesem Vortrag werden wir versuchen, gemeinsam einen Blick auf Herausforderungen, Patterns und Antipatterns von Architekturarbeit in der Praxis zu werfen – und daraus möglichst konkrete Empfehlungen für die tägliche Arbeit abzuleiten.

    Mehr lesen

    Beyond Microservices

    Vortrag Eberhard Wolff Software Architecture Summit 2017

    Jeder macht heutzutage Microservices – und es zeigt sich, dass auch Microservices nicht die Lösung aller Probleme sind. Dieser Workshop vermittelt, was Microservices bringen – bessere Modularisierung, eine Vielzahl technischer Vorteile, optimale Unterstützung für Continuous Delivery. Wir diskutieren dann die Nachteile, etwa erhöhte Komplexität, aufwändigerer Betrieb und Mehraufwand wegen der verteilten Kommunikation.

    Schließlich erörtern wir mögliche Lösungen und alternative Ansätze, die immer noch die meisten der Vorteile bieten, aber Nachteile vermeiden. Um die Ansätze konkret zu illustrieren, werden wir beispielhafte Architekturen erarbeiten.

    Mehr lesen
  • Keynote: Verbesserung eines großen IT-Systems – am (guten + schlechten) Beispiel

    Vortrag Gernot Starke Software Architecture Summit Berlin 2017

    Lernen Sie VENOM kennen, ein großes und über mehrere Jahre lang auch erfolgreiches IT-System. Hören Sie Erfolgsberichte begeisterter Anwender und Trauerreden beteiligter Entwicklerinnen, Horrorgeschichten aus Betrieb und Support. Die Protagonisten dieses Systems sind zufriedene und erschrockene Benutzer, motivierte, engagierte und frustrierte Entwickler, scham- und rücksichtslose, effektive und chaotische Manager, Admins und Betreiber und andere.

    VENOM stößt an vielerlei Grenzen, das Management wechselt häufig die Fahrtrichtung, das Entwicklungsteam alterniert zwischen Stress, Depression und Euphorie.

    Das Management beauftragt „Verbesserung“ – und dann erleben Sie, wie’s gehen kann. Soviel sei verraten: Nicht jeder Ansatz führt zu Erfolg – und manches drohende Desaster kann sich dann doch noch zum Positiven wenden. Außerdem sollen Vollbremsungen bei hoher Geschwindigkeit schon so manches Vehikel vor der Kollision mit der (harten) Wand bewahrt haben.

    Das hier beschriebene VENOM-System (für very normal system) ist einerseits völlig fiktiv, aber andererseits basieren viele der zugrunde liegenden Entscheidungen, Strukturen und Konzepte maßgeblich auf real existierenden Systemen. Die Verbesserungsansätze, die Sie erleben werden, entstammen sämtlich der Realität.

    Mehr lesen
  • Hitchhikers Guide to Architecture Documentation

    Vortrag Gernot Starke, Ralf D. Müller Software Architecture Summit Berlin 2017

    Anhand eines großen Systems zeigen Ralf und Gernot, wie Sie mit ziemlich wenig Aufwand angemessene und vernünftige Dokumentation für unterschiedliche Stakeholder produzieren – sodass Entwicklungsteams dabei auch noch Spaß haben.

    Das Rezept: AsciiDoc mit arc42 mischen, Automatisierung mit Gradle und Maven hinzufügen und bei Bedarf mit PowerPoint, Grafik- oder Modellierungstools Ihrer Wahl kombinieren – schon bekommen Sie schicke HTML- und PDF-Dokumente generiert, auf Wunsch auch Confluence und docx als Zugabe.

    Wir zeigen, wie Sie Doku genau wie Quellcode verwalten können, stakeholderspezifische Dokumente erzeugen und Diagramme automatisiert integrieren können.

    Zwischendurch bekommen Sie zahlreiche Tipps, wie und wo Sie systematisch den Aufwand für Dokumentation reduzieren können, geschickt Aufgaben im Team verteilen und ganz nebenbei lesbare, verständliche und praxistaugliche Ergebnisse produzieren. Zum Schluss zeigen wir, wie Sie Teile dieser Doku automatisiert testen können.

    Mehr lesen
  • Self-contained Systems: Microservices-Archi­tekturen mit System

    Vortrag Eberhard Wolff Zalando Tech Talk Dortmund September 2017

    Eberhard Wolff gibt uns Einblicke wie Self-contained Systems (SCS) die Ideen von Microservices nutzen und Systeme in stark entkoppelte Anwendungen aufteilen. So können große, komplexe Anwendungen strukturiert werden - aber auch in vielen anderen Szenarien sind die Ansätze sinnvoll nutzbar. SCS werden bei Firmen wie Otto, Kaufhof oder Kühne+Nagel erfolgreich eingesetzt. Der Vortrag erklärt SCS und zeigt die Unterschiede zu Microservices.

    Mehr lesen
  • Modularisierung in Groß und Klein

    Vortrag Stefan Tilkov Java Forum Nord 2017 Folien verfügbar

    (Micro-)services, Bounded Contexts, Komponenten, Module, Klassen, Structs und Records, Prozeduren und Funktionen – was auch immer der Strukturierungsmechanismus ist, eine immer wiederkehrende Herausforderung ist, die richtige Größe für den gewählten Bausteintyp zu finden. In dieser Keynote betrachten wir einige der Kräfte, die Dinge zusammenfügen oder auseinander treiben, diskutieren, welche Effekte sich daraus auf unsere Archtitekturen ergeben und betrachten am Beispiel von Microservices einige erfolgversprechende, aber auch erfolgvernichtende Strategien.

    Mehr lesen
  • Transklusion – Kitt für gut geschnittene Webanwendungen

    Vortrag Franziska Dessart Herbstcampus 2017 Folien verfügbar

    Selbst kleinere Webanwendungen stammen heutzutage nur noch selten aus einer Quelle. Daten und Inhalte aus Drittsystemen oder Content aus dem CMS wollen integriert oder gar ein Altsystem schrittweise abgelöst werden. Auch Microservices oder Self contained Systems stellen Teile eines Frontends isoliert zur Verfügung, um den Frontend-Monolithen zu vermeiden. Schön entkoppelt, aus Sicht der Architektur.

    Doch wie und wo bringe ich am Ende alle Einzelteile zusammen? Mit einer selbstgestrickten Lösung in meinem Backend? Alles clientseitig integriert? Welche Möglichkeiten es gibt und für welche Anwendungsfälle sie sich am besten eignen, soll das Thema dieses Vortrags sein.

    • Was ist Transklusion, und für was brauche ich sie?
    • Welche Ziele verfolge ich beim Schneiden von Webanwendungen?
    • Wie schneide ich “an der richtigen Stelle”?
    • Wo transkludiere ich und mit welcher Methode?
    • Gibt es verwandte Konzepte, die hilfreich sein könnten?
    Mehr lesen
  • Microservices – Umsetzungen nicht nur mit Java

    Vortrag Eberhard Wolff Herbstcampus 2017

    Der Microservices-Trend hat eine Vielzahl neuer Technologien hervorgebracht. Viele Projekte nutzen diesen Architekturansatz – setzen ihn aber völlig unterschiedlich um.

    Dieser Vortrag zeigt verschiedene Microservices-Spielarten und die technischen Implikationen, die sich daraus ergeben – nicht nur in der Java-Welt. So gibt der Vortrag einen Leitfaden für das Umsetzen einer Microservices-Architektur und die Auswahl von Technologien.

    Skills

    • Grundlegendes Verständnis von Softwarearchitektur und -entwicklung
    • Idealerweise ein grober Überblick über Microservices
    • Grundlegendes Wissen über die Entwicklung mit Java

    Lernziele

    • Welche technischen Möglichkeiten gibt es zur Umsetzung von Microservices mit Java?
    • Welche Rolle spielen klassischen Technologien wie Java EE oder OSGi?
    • Wie können Ablaufumgebungen wie der Netflix-Stack, Kubernetes oder AWS Lambda helfen?
    • Was benötigt man zur Umsetzung webbasierter Microservices (Self-contained Systems)?
    • Warum sind Programmiersprachen wie Go interessant für Microservices?
    Mehr lesen
  • Property-based testing: You won’t look at your tests the same way ever again

    Vortrag Jan Stępień Lightweight Java User Group München August 2017 Folien verfügbar

    Property-based testing changes the way you look at your test suites. Instead of specifying test cases one after another, this advanced testing technique enables you to use logic to automatically generate a stream of inputs. Despite its potential, property-based testing still remains under the radar within the Java community. Let’s try to uncover its strengths together.

    The talk will discuss how property-based testing compares to traditional testing methods and demonstrate its principles with simple examples. We will also see how it fits into a TDD workflow and a CD pipeline. In order to bust the myth of the inapplicability of property-based testing in a real-world setting we’ll bring up some use cases from industry. Finally, we’ll wander into the world of concurrency and the automation of race condition detection.

    Mehr lesen
  • Introducing structure

    Vortrag Jan Stępień Functional Programming Wroclaw #16 Folien verfügbar

    Once you’ve got a couple of Clojure katas under your belt you start to wonder how to structure an entire application. Where does the logic go? Where do you respond to HTTP requests? Where to connect to the database and how to pass the connection to code which needs it? Let’s see what the best practices are and which Clojure libraries can help us.

    Mehr lesen
  • Git - Gewusst wie

    Vortrag Christine Koppelt Informatica Feminale – Internationales Sommerstudium für Frauen in der Informatik

    Bei der Entwicklung von Software in Teams müssen Arbeitsstände regelmäßig zusammengeführt und miteinander abgeglichen werden. Git wurde genau dafür entwickelt und ist aus dem Arbeitsalltag einer Softwareentwicklerin nicht mehr wegzudenken.

    Im Rahmen des Kurses lernen die Teilnehmerinnen die Konzepte von Git und das Arbeiten mit dem Git-Kommandozeilenclient kennen - unter anderem werden wir uns intensiv mit den Themen Branching, Rebasing und Merging beschäftigen. Außerdem diskutieren wir etablierte Vorgehensweisen beim Einsatz von Git in Entwicklungsteams und die Teilnehmerinnen erfahren etwas über GitHub und andere Möglichkeiten Repositories zu hosten. Ziel ist es, dass ihr nach dem Kurs effizient mit Git arbeiten könnt und alltägliche und weniger alltägliche Probleme selbständig lösen könnt.

    Mehr lesen
  • Combating spam, or how I befriended the Killer Rabbit of Caerbannog

    Vortrag Jan Stępień Munich Datageeks July 2017 Folien verfügbar

    You might have received an unwanted email at some point. We all have. According to some studies, between 80 and 90 percent of all email is spam. Those of us with accounts at established email providers can rely on their hosts’ filters to keep their inboxes manageable. What if you’re hosting your email on your own, though? Off-the-shelf open source solutions are there when you need them, but that’s not where the fun is. Combining existing tools, building your own classifiers, and seeing them work in practice is far more exciting. Let me tell you a story, one with rabbits.

    Mehr lesen
  • Simple AND Secure?

    Vortrag Joy Clark EuroClojure 2017

    Clojure is great for programming simple, elegant web applications. But is it possible to actually maintain a simple Clojure application without sacrificing web security?

    We may not be security experts, but we still need to protect our application against common attacks and take care of user authentication and authorization. Security should not be an afterthought but rather a fundamental part of the application architecture. This talk will cover basic principles to follow and introduce the main libraries available in the Clojure world for developing secure web applications.

    You can find a short interview with Joy about this talk here.

    Mehr lesen
  • Mit Bounded Contexts einen tragfähigen Systemschnitt finden

    Vortrag Oliver Tigges DDD Meetup Köln/Bonn #2 Folien verfügbar

    Microservices-Architekturen und der Ansatz der Self-contained Systems (SCS) helfen, ein Gesamtsystem in kleinere, beherrschbare und unabhängige Teilsysteme aufzuteilen. Aber wie können diese Teilsysteme und ihre Grenzen identifiziert werden?

    In diesem Vortrag stelle ich vor wie das Konzept der Bounded Contexts aus dem Domain Driven Design dabei hilft, einen optimalen Systemschnitt für Microservices/SCS zu finden. Anhand eines Praxisbeispiels wird gezeigt, welche Abwägungen in einem iterativen Prozess getroffen werden müssen, um stabile und tragfähige Systemgrenzen zu finden, die Autonomie von Teams, Systemen und Services fördern.

    Mehr lesen

    Simple AND Secure? (EuroClojure Preview)

    Vortrag Joy Clark Leipzig Clojure Meetup

    Clojure is great for programming simple, elegant web applications. But is it possible to actually maintain a simple Clojure application without sacrificing web security? We may not be security experts, but we still need to protect our application against common attacks and take care of user authentication and authorization. Security should not be an afterthought but rather a fundamental part of the application architecture. This talk will cover basic principles to follow and introduce the main libraries available in the Clojure world for developing secure web applications.

    Mehr lesen

    Structuring Clojure Apps

    Vortrag Jan Stępień Leipzig Clojure Meetup Folien verfügbar

    Once you’ve got a couple of Clojure katas under your belt you start to wonder how to structure an entire application. Where does the logic go? Where do you respond to HTTP requests? Where to connect to the database and how to pass the connection to code which needs it? Let’s see what the best practices are and which Clojure libraries can help us.

    Mehr lesen
  • Strategisches Design (DDD) für Microservices

    Vortrag Michael Plöd RheinJUG Juli 2017 Folien verfügbar

    Zweifelsohne kann das Buch „Domain-Driven Design“ von Eric Evans als „Muss“ für Softwarearchitekten und Entwickler betrachtet werden. Die dort geschilderten Ideen sind heute im Kontext von Trends wie Microservices relevanter denn je. Dabei gilt es jedoch zu berücksichtigen, dass Domain-driven Design (DDD) nicht einfach nur auf Aggregate, Entitäten und Services zu reduzieren ist, und dass es viel tiefergehende Zusammenhänge zwischen DDD und Microservices wie den Bounded Context gibt.

    An dieser Stelle setzt der Vortrag an: wir werden Schritt für Schritt erkunden, wie uns die Ideen und Patterns beim Aufbau und Design von Microservices-Landschaften helfen. Des Weiteren werden wir betrachten, wie wir mithilfe von DDD eine bestehende Landschaft in Richtung von Microservices migrieren können.

    Mehr lesen
  • Domain Events und Event Storming

    Vortrag Michael Plöd Java Forum Stuttgart 2017 Folien verfügbar

    Das Thema Domain-driven Design ist derzeit in aller Munde und hat sich im Lauf der Jahre spürbar weiterentwickelt. Insbesondere das Thema Domain Events spielt hierbei eine zentrale Rolle. Mithilfe von Domain Events können Bounded Contexts sehr lose gekoppelt auf Basis fachlicher Ereignisse miteinander interagieren. Dabei öffnen Domain Events neben dem architekturellen Vorteil „lose Kopplung“ die Tür für weitere interessante Möglichkeiten. Hierzu zählen die Persistierung von Events (Event Sourcing) und eine neue Form der fachlichen Analyse, das Event Storming.

    Der Vortrag wird die Konzepte von Domain Events vorstellen, Ihnen erläutern, wie diese idealerweise für Kommunikation und Persistierung verwendet werden können. Weiterhin wird im Rahmen des Vortrags auch das Analyseverfahren Event Storming praktisch vorgestellt.

    Mehr lesen

    Bis an den Abgrund - und zurück: Aufstieg, Krise und Rettung einer (gar nicht so) hypothetischen Software

    Vortrag Gernot Starke Java Forum Stuttgart 2017

    Unser “ganz normales System” (VENOM, "very normal system“) unterstützt eCommerce-Prozesse für ziemlich komplizierte Produkte (Komplettausstattung von Kaufhäusern und Apotheken, Gartenplanung, Regal- und Möbelplanung und ähnliche abgefahrene Dinge) - inklusive kompletter Lieferung, Verzollung, Aufbau, Abnahme, Inbetriebnahme….

    Das System, über viele Jahre eher hysterisch als historisch gewachsen, wird von einer ziemlich desolaten organisierten Firma (SAMM Inc.) entwickelt und betrieben. Es drohte vor einiger Zeit, „den Bach herunter“ zu gehen. SAMM Inc. zog die Reißleine, und beauftragte ein (agiles) Team damit, die Rettung von VENOM (und SAMM) vorzubereiten und durchzuführen - „Succeed or die", hieß die Devise.

    Diese (überaus fiktive) Situation ist in Wirklichkeit völlig real. Lernen Sie „rise and fall of a system“ aus der Nähe kennen, sehen Sie die Auswirkungen desaströser Architekturarbeit sowie verkorkster Entwicklungs- und Betriebsprozesse. Und dann - erfahren Sie von Maßnahmen, die wirklich helfen könnten (oder auch nicht) - und sehen Sie (am realen Beispiel), wie methodische Verbesserung von Software(architektur) funktionieren kann.

    Disclaimer: Ähnlichkeit mit real existierenden Unternehmen ist rein zufällig.

    Mehr lesen
  • Leben, Leiden und Rettung eines IT-Systems

    Vortrag Gernot Starke Java User Group Köln Juli 2017

    Der ganz normale Wahnsinn - vom Leben, Leiden und der Rettung eines (gar nicht so) hypothetischen Systems

    VENOM (das „very normal system“) unterstützt eCommerce-Prozesse für ziemlich komplizierte Produkte (Komplettausstattung von Supermärkten, Gartenplanung, Regal- und Möbelplanung und ähnliche abgefahrene Dinge) - inklusive kompletter Lieferung, Aufbau, Abnahme, Inbetriebnahme….

    Das System ist über gute 20 Jahre historisch/hysterisch gewachsen, wird von einer zerfahrenen, ziemlich desolaten Firma (SAMM Inc.) entwickelt und betrieben und drohte vor einiger Zeit, „den Bach herunter“ zu gehen. SAMM Inc. zog die Reißleine, und beauftragte ein (agiles) Team damit, die Rettung von VENOM (und SAMM) vorzubereiten und durchzuführen - „Succeed or die", hieß die Devise.

    Diese (völlig fiktive) Situation ist in Wirklichkeit völlig real. Hören Sie über „rise and fall of the system“, sehen Sie die Auswirkungen desaströser Architekturarbeit und verkorkster Entwicklungs- und Betriebsprozesse. Diskutieren Sie mit mir, welche Maßnahmen helfen könnten (oder auch nicht) - und sehen Sie (am realen Beispiel), wie methodische Verbesserung von Software funktionieren kann.

    Disclaimer: Ähnlichkeit mit real existierenden Unternehmen ist rein zufällig.

    Mehr lesen
  • Domain Driven Design für Microservices

    Vortrag Michael Plöd DWX Developer Week 2017 Folien verfügbar

    Zweifelsohne kann das Buch “Domain Driven Design” von Eric Evans als “Muss” für Software Architekten und Entwickler betrachtet werden. Die dort geschilderten Ideen sind heute im Kontext von Trends wie Microservices relevanter denn je. Dabei gilt es jedoch zu berücksichtigen, dass Domain Driven Design nicht einfach nur auf Aggregate, Entitäten und Services zu reduzieren ist und dass es viel tiefer gehende Zusammenhänge zwischen DDD und Microservices wie den Bounded Context gibt.

    An dieser Stelle setzt der Vortrag an: Wir werden Schritt für Schritt erkunden, wie uns die Ideen und Patterns beim Aufbau und Design von Microservice Landschaften helfen. Des Weiteren werden wir betrachten, wie wir mit Hilfe von Domain Driven Design eine bestehende Landschaft in Richtung von Microservices migrieren können.

    Mehr lesen
  • Akka Cluster Management and Split Brain Resolution

    Vortrag Niko Will ScalaSwarm 2017 Folien verfügbar

    Akka is a toolkit that brings the actor model to the JVM and helps developers to build scalable, resilient and responsive applications. With location transparency and asynchronous message passing it is designed to work distributed from the ground up.

    While distributed systems help to solve some problems like availability, a new set of problems arise. For example how do we scale the cluster up or down? What happens if the network is at least partially not available? Akka provides a comprehensive set of cluster features that enable developers to monitor and manage the cluster manually or in most cases even automatically.

    In this talk I will introduce some of these features and explain what you need to be aware of. You will learn how to start a cluster correctly and add / (gracefully) remove nodes to / from a running cluster. Additionally I will show how to handle failure scenarios like network partitions by using an existing or implementing a custom split brain resolver.

    Mehr lesen
  • Many roads lead to microservices

    Vortrag Eberhard Wolff Industry Talk, AMOS course, Uni Erlangen

    Microservices solve a lot of problems with current architectures: E.g. they help with agile processes, enable Continuous Delivery and increase robustness and scaling. But what is the best way to create a Microservices architecture? That depends on the concrete scenario – and can be very different for each individual project. This talk shows the many value propositions of Microservices and how to find the best way to a Microservices architecture.

    Mehr lesen
  • Microservices: Deployment und Continuous Delivery

    Vortrag Eberhard Wolff Microservices Summit 2017

    Microservices lösen viele Probleme in der Software-Entwicklung. Aber die große Anzahl an Services macht das Deployment wesentlich aufwändiger. Dieses Tutorial zeigt die Herausforderungen rund um Deployment und die Continuous-Delivery-Pipeline für Microservices auf und zeigt mögliche Lösungen, um Microservices mit wenig Risiko zu deployen und zu testen. Neben konkreten Technologien zeigt das Tutorial auch Lösungen auf der Ebene von Architektur und Organisation.

    Mehr lesen
  • Blockchain: The Slowest (and most fascinating) Database in the World

    Vortrag Stefan Tilkov GOTO Amsterdam 2017

    As the foundation of Bitcoin’s virtual currency, the blockchain technique is now the starting point for numerous new business ideas.The usual suspects surpass each other with superlatives how “disruptive” the Blockchain based startups will be.

    In this talk, we look first at the technical foundations and then examine the advantages and disadvantages. We then identify practical scenarios and discuss how to implement them in practice.

    You can find a video of the talk here.

    Mehr lesen
  • Self-contained Systems: A Different Approach to Microservices

    Vortrag Stefan Tilkov GOTO Amsterdam 2017

    Microservices are the latest hype for software architectures. But just creating a set of small systems is by far not enough. Self-contained Systems (SCS) focus on an architecture approach based on Microservices. It is particularly useful for large systems and complex team structures. SCS allow to efficently develop software in such environments - even in the long run.

    The workshop explains Self-contained Systems, their advantages and disadvantages and the difference to Microservices.

    Mehr lesen
  • Introducing structure

    Vortrag Jan Stępień Clojure Vienna Meetup Juni 2017 Folien verfügbar

    Once you’ve got a couple of Clojure katas under your belt you start to wonder how to structure an entire application. Where does the logic go? Where do you respond to HTTP requests? Where to connect to the database and how to pass the connection to code which needs it? Let’s see what the best practices are and which Clojure libraries can help us.

    Mehr lesen
  • Introducing structure

    Vortrag Jan Stępień Clojure Meetup Munich Juni 2017 Folien verfügbar

    Once you’ve got a couple of Clojure katas under your belt you start to wonder how to structure an entire application. Where does the logic go? Where do you respond to HTTP requests? Where to connect to the database and how to pass the connection to code which needs it? Let’s see what the best practices are and which Clojure libraries can help us.

    Mehr lesen
  • Implementing loosely coupled microservices with Grails

    Vortrag Michael Plöd GR8Conf EU 2017 Folien verfügbar

    Grails 3 is a great starting point for creating microservices, and many projects are following this path. However, many microservice landscapes are still based on synchronous calls to REST resources which obviously increases coupling between those applications. This talk focusses on building loosely coupled microservices that are based on Domain Events, which are becoming more and more popular in the Domain Driven Design community. We will take a look at how Grails 3 helps us in building such systems by introducing the Grails 3 event system and by taking a look at how we can leverage Domain Events for a decoupled communication between Grails applications.

    The talk will have slides for the theory and many practical examples.

    Mehr lesen
  • Microservices with Java, Spring Boot and Spring Cloud

    Vortrag Eberhard Wolff Bucharest Technology Week 2017

    Spring Boot makes creating small Java application easy - and also facilitates operations and deployment. But Microservices need more: Because Microservices are a distributed systems, issues like Service Discovery or Load Balancing must be solved. Spring Cloud adds those capabilities to Spring Boot, using the Netflix stack, for instance. This talks covers Spring Boot and Spring Cloud, and shows how these technologies can be used to create a complete Microservices environment.

    Mehr lesen
  • Leveraging Domain Events in your Spring Boot Microservices (Workshop)

    Vortrag Michael Plöd Spring I/O 2017

    Domain Events are a part of Domain-Driven Design’s internal building blocks and they also play a central role during the implementation of loosely coupled Microservice landscapes. In this workshop we will take a deep dive into the concept of Domain Events and learn how to model and design Domain Events. We will also address how they can be used for the internal and external communication between Spring Boot applications.

    The workshop will consist of theoretical explanations using slides as well as a substantial hands-on live coding part in which you will learn how to work with Domain Events in Spring Boot. We will conclude the session by taking a short look at topics like Event Sourcing and CQRS.

    Mehr lesen
  • DDD Strategic Design with Spring Boot

    Vortrag Michael Plöd Spring I/O 2017

    One of the most valuable parts of Domain Driven Design are the concepts of Strategic Design. These concepts include Bounded Context, Context Map and the patterns that are being documented in the Context Map.

    This talk explains all of these topics mentioned above as well as practical usage scenarios such as migrating a monolithic landscape to Microservices. In order to get hands-on, I will also demonstrate the concepts surrounding Strategic Design with an application landscape of various Spring Boot Applications.

    Mehr lesen
  • Caching for Business Applications: Best Practices and Gotchas

    Vortrag Michael Plöd geeCON 2017 Folien verfügbar

    Caching is relevant for a wide range of business applications and there is a huge variety of products in the market ranging from easy to adopt local heap based caches to powerful distributed data grids. Most of these caches are being promoted with examples from applications that have the luxury of having ‘eventual consistency’ as a non-functional requirement. Most business / enterprise applications don’t have that luxury.

    This talks aims at developers and architects that want to adopt a caching solution for their business application. I will present 15 caching patterns and best practices for these kinds of applications that address the typical questions being asked in that context. These questions might be: ‘which data can I cache?’, ‘how can I handle consistency in a distributed environment?’, ‘which cache provider to choose?’ or ‘how do I integrate a cache provider in my application?’. This talk comes with many live demos, some of them are run on a distributed cache cluster on Raspberry Pis

    Mehr lesen
  • Der ganz normale Schrecken – interaktive Geschichte eines großen IT-Systems

    Vortrag Gernot Starke JAX 2017

    Erleben Sie die Geschichte von VENOM, einem großen erfolgreichen, aber auch chaotischen IT-System aus der Sicht verschiedener Beteiligten. Unsere Protagonisten sind zufriedene und erschrockene Benutzer, motivierte, engagierte und frustrierte Entwickler, scham- und rücksichtslose, effektive und chaotische Manager, Admins und Betreiber und andere.

    Die Story beginnt schon in den 1990er-Jahren, als Netscape noch das Gesicht des Internets war, bis in Zeiten resilienter, containerbasierter Microservices. VENOM stößt dabei an vielerlei Grenzen, das Management wechselt häufig die Fahrtrichtung, das Entwicklungsteam alterniert zwischen Stress, Depression und Euphorie.

    Sie lernen eine Modernisierungs- und Verbesserungsinitiative kennen, die nach diversen Reviews und Diskussionsrunden gestartet werden soll.

    Und dann sind Sie, wertes Publikum, gefragt: Kann der Plan zur Modernisierung von VENOM aufgehen? Kann VENOM an frühere Erfolge anknüpfen? Findet die Entwicklung in ruhige Fahrwasser zurück?

    Mehr lesen
  • Dokumentation am (Riesen-)Beispiel – arc42, AsciiDoc und Co. in Aktion

    Vortrag Gernot Starke, Ralf Müller JAX 2017 Folien verfügbar

    Anhand eines großen Systems zeigen Gernot und Ralf, wie Sie mit ziemlich wenig Aufwand angemessene und vernünftige Dokumentation für unterschiedliche Stakeholder produzieren – sodass Entwicklungsteams dabei auch noch Spaß haben.

    Unser Rezept: AsciiDoc mit arc42 mischen, Automatisierung mit Gradle und Maven hinzufügen und mit Diagramm- oder Modellierungstools Ihrer Wahl kombinieren. Schon sind schicke HTML- und reviewfähige PDF-Dokumente fertig. Auf Wunsch gibts DOCX und Confluence als Zugabe. Wir zeigen, wie Sie Doku genau wie Quellcode verwalten können, stakeholderspezifische Dokumente erzeugen und Diagramme automatisiert integrieren können. Einige Teile dieser Doku können Sie sogar automatisiert testen.

    Zwischendurch bekommen Sie zahlreiche Tipps, wie und wo Sie systematisch den Aufwand für Dokumentation reduzieren können, und trotzdem lesbare, verständliche und praxistaugliche Ergebnisse produzieren.

    Mehr lesen
  • Spring Boot als Beispiel für DDD Strategic Design

    Vortrag Michael Plöd JAX 2017 Folien verfügbar

    Einer der wertvollsten Bereiche von Domain-driven Design ist zweifelsohne das Strategic Design mit seinen Context-Mapping-Patterns. Allerdings wirken die meisten Beschreibungen der Patterns in textueller Form etwas abstrakt und schwer verdaulich. Im Rahmen dieses Vortrags werden die Patterns auf Basis einer einfachen Spring-Boot-basierten Anwendungslandschaft praktisch und greifbar erklärt und vorgestellt. Hierbei gehen wir unter anderem auf folgende Patterns ein: Customer/Supplier, Open Host Language, Anti-Corruption Layer, Conformist oder Separate Ways.

    Mehr lesen

    Datenarchitekturen nicht nur für Microservices

    Vortrag Eberhard Wolff JAX 2017 Folien verfügbar

    Microservices sollen keine gemeinsame Datenbank haben. Warum eigentlich? Und was ist mit der dabei entstehenden Redundanz? Viele Architekturen kranken an zu großen und inflexiblen Datentöpfen. Dieser Vortrag zeigt die Gründe für die Probleme: die Missachtung von Bounded Context und eine viel zu enge Kopplung der Datenmodelle. Ansätze wie Datenreplikation zeigen, wie solche Probleme gelöst werden können, ohne dass dabei zu große Redundanzen bei den Daten entstehen.

    Mehr lesen

    Strategisches Design (DDD) für Microservices

    Vortrag Michael Plöd JAX 2017 Folien verfügbar

    Zweifelsohne kann das Buch „Domain-Driven Design“ von Eric Evans als „Muss“ für Softwarearchitekten und Entwickler betrachtet werden. Die dort geschilderten Ideen sind heute im Kontext von Trends wie Microservices relevanter denn je. Dabei gilt es jedoch zu berücksichtigen, dass Domain-driven Design (DDD) nicht einfach nur auf Aggregate, Entitäten und Services zu reduzieren ist und dass es viel tiefergehende Zusammenhänge zwischen DDD und Microservices wie den Bounded Context gibt.

    An dieser Stelle setzt der Vortrag an: wir werden Schritt für Schritt erkunden, wie uns die Ideen und Patterns beim Aufbau und Design von Microservices-Landschaften helfen. Des Weiteren werden wir betrachten, wie wir mithilfe von DDD eine bestehende Landschaft in Richtung von Microservices migrieren können.

    Mehr lesen

    Cloud-native Java

    Vortrag Michael Plöd JAX 2017

    “It is not necessary to change. Survival is not mandatory.” W. Edwards Deming

    Work takes time to flow through an organization and ultimately be deployed to production where it captures value. It’s critical to reduce time-to-production. Software – for many organizations and industries – is a competitive advantage.

    Organizations break their larger software ambitions into smaller, independently deployable, feature-centric batches of work – microservices. In order to reduce the round-trip between stations of work, organizations collapse or consolidate as much of them as possible and automate the rest; developers and operations beget “devops”, cloud-based services and platforms (like Cloud Foundry) automate operations work and break down the need for ITIL tickets and change management boards.

    But velocity, for velocity’s sake, is dangerous. Microservices invite architectural complexity that few are prepared to address. In this talk, we’ll look at how high performance organizations like Ticketmaster, Alibaba, and Netflix make short work of that complexity with Spring Boot and Spring Cloud.

    Mehr lesen
  • Microservices-Workshop: Architektur und Technik

    Vortrag Eberhard Wolff JAX 2017

    Microservices sind in aller Munde. In diesem Workshop wollen wir nicht nur theoretisch über Microservices sprechen, sondern ein ganzes System aus Microservices diskutieren.

    Zunächst gibt es eine Einführung in Microservices-Architekturen, ihre Vor- und Nachteile sowie wesentlichen Eigenschaften. Dann geht es in die Praxis: containerloses Deployment mit Docker und Spring Boot und Koordination der Anwendungen mit Spring Cloud und dem Netflix-Stack. Am Ende können wir eine Anwendung aus mehreren Microservices betreiben und weiterentwickeln.

    Mehr lesen

    Cloud-native Java (the Workshop)

    Vortrag Michael Plöd JAX 2017

    In this workshop we’ll look at how to build cloud-native Java applications. A cloud-native application is one that is designed to fully exploit a cloud platform both in the application layer – where things decompose into microservices – and at the data layer where NoSQL offers better horizontal scaling and fitness for specific purpose. We’ll look at:

    • writing services and handling non-functional requirements like metrics and logging with Spring Boot
    • scaling out safely and building fault-tolerant systems using Spring Cloud and its support for distributed systems patterns like the circuit breaker, service registration and discovery, and centralized configuration management.
    • offloading as much operational work as possible to the platform, Cloud Foundry
    Mehr lesen
  • Serverlose IoT-Applikationen

    Vortrag Niko Will building IoT 2017 Folien verfügbar

    Softwareentwickler sehen sich heutzutage mit einer Vielzahl von Anforderungen konfrontiert. Bereits das Verstehen der Domäne für die Implementierung der Geschäftslogik kann beliebig komplex werden. Hinzu kommen nun immer mehr Themen wie Skalierung und Ausfallsicherheit. Ganz zu schweigen von Benutzerauthentifizierung und -autorisierung oder Logging, Monitoring und Betrieb der Anwendung. Im IoT-Umfeld bereiten uns zusätzlich noch die Anbindung von Geräten über unsichere und instabile Verbindungen Kopfzerbrechen.

    Andererseits bieten mittlerweile viele der großen Cloud-Plattformen zusätzlich zu Datenbanken und Messaging-Systemen auch ein reiches Portfolio an Diensten, die speziell auf die Bedürfnisse von IoT-Applikationen zugeschnitten sind. In Kombination mit serverlosen Funktionen lassen sich so bereits in einigen Tagen bis wenigen Wochen erste Konzepte praktisch erproben oder sogar komplett umsetzen. Darüber hinaus kann durch den Verzicht auf eigene Backend-Services ein Großteil der typischen Betriebsthemen entfallen.

    Dieser Vortrag zeigt am Beispiel von Amazon Web Services (AWS), wie sich Geräte schnell und sicher an eine Cloud-Plattform anbinden lassen. Außerdem lernen die Teilnehmer, wie sie durch Kombination der vorhandenen Dienste und einiger weniger serverloser Funktionen zu einer produktiv einsetzbaren IoT-Applikation kommen.

    Mehr lesen
  • Servicemanagement mit systemd

    Vortrag Christine Koppelt Augsburger Linux-Infotag 2017

    systemd ist ein System- und Service-Management-Framework für Linux, das unter anderem von Ubuntu, Debian, Arch, Fedora und Red Hat verwendet wird. Es wird beim Booten als erster Prozess gestartet und sorgt dafür, dass alle weiteren Prozesse wie Systemdienste, Systemkomponenten und dauerhaft laufende Anwendungen automatisiert gestartet, überwacht und lauffähig gehalten werden.

    Im Rahmen des Workshops lernt Ihr, wie Ihr eigene Startskripte, sog. Unit-Files, erstellen könnt und wie man damit Abhängigkeiten zu anderen Diensten, zeitgesteuerte Ausführung und Bedingungen für automatische Neustarts definieren kann. Außerdem schauen wir uns an, wie man die Logmeldungen der gestarteten Dienste mit Bordmitteln effizient auswerten kann.

    Mehr lesen
  • Kontextfrei: A new approach to testable Spark applications

    Vortrag Daniel Westheide Scalar 2017 Folien verfügbar

    Apache Spark has become the de-facto standard for writing big data processing pipelines. While the business logic of Spark applications is often at least as complex as what we have been dealing with in a pre-big data world, enabling developers to write comprehensive, fast unit test suites has not been a priority in the design of Spark. The main problem is that you cannot test your code without at least running a local SparkContext. These tests are not really unit tests, and they are too slow for pursuing a test-driven development approach. In this talk, I will introduce thekontextfrei library, which aims to liberate you from the chains of the SparkContext. I will show how it helps restoring the fast feedback loop we are taking for granted. In addition, I will explain how kontextfrei is implemented and discuss some of the design decisions made and look at alternative approaches and current limitations.

    Mehr lesen
  • Akka Cluster Management and Split Brain Resolution

    Vortrag Niko Will Scalar 2017 Folien verfügbar

    Akka is a toolkit that brings the actor model to the JVM and helps developers to build scalable, resilient and responsive applications. With location transparency and asynchronous message passing it is designed to work distributed from the ground up.

    While distributed systems help to solve some problems like availability, a new set of problems arise. For example how do we scale the cluster up or down? What happens if the network is at least partially not available? Akka provides a comprehensive set of cluster features that enable developers to monitor and manage the cluster manually or in most cases even automatically.

    In this talk I will introduce some of these features and explain what you need to be aware of. You will learn how to start a cluster correctly and add / (gracefully) remove nodes to / from a running cluster. Additionally I will show how to handle failure scenarios like network partitions by using an existing or implementing a custom split brain resolver.

    Mehr lesen
  • Self-contained Systems: Microservices-Archi­tekturen mit System

    Vortrag Eberhard Wolff Softwerkskammer Leipzig April 2017 Meetup

    Self-contained Systems (SCS) nutzen die Ideen von Microservices und teilen Systeme in stark entkoppelte Anwendungen auf. So können große, komplexe Anwendungen strukturiert werden - aber auch in vielen anderen Szenarien sind die Ansätze sinnvoll nutzbar. SCS werden bei Firmen wie Otto, Kaufhof oder Kühne+Nagel erfolgreich eingesetzt.

    Zunächst erklärt ein Vortrag die Prinzipien von SCS. Dann werden wir einige Beispiele für Frontend-Integration auf Code-Ebene nachvollziehen, um so ein Technik für die lose Kopplung von Microservices auf UI-Ebene kennenzulernen und damit einen wesentlichen Bestandteil von SCS besser zu verstehen.

    Mehr lesen
  • Schnelleinstieg in Go

    Vortrag Christoph Iserlohn, Daniel Bornkessel parallel 2017

    Obwohl noch recht jung, hat sich Go in der Softwareentwicklung fest etabliert. Viele kritische Systeme werden heutzutage in Go implementiert – Docker ist hier einer der prominenten Vertreter. Go macht vieles anders als gewohnt. Mit channels und go-routines besitzt Go moderne Nebenläufigkeitskonstrukte, die in den altbewährten Programmiersprachen so nicht zu finden sind. Auf der anderen Seite verzichtet Go auf einige Dinge, die mittlerweile als selbstverständlich angesehen werden wie Generics oder Exceptions.

    Anhand von Beispielen und praktischen Übungen vermittelt dieser Workshop die nötigen Kenntnisse, um kleinere eigene Programme in Go zu schreiben und channels und go-routines zu nutzen.

    Teilnehmer sollten folgende Soft- und Hardware mitbringen:

    • einen Laptop, auf dem Go installiert und nutzbar ist: siehe https://golang.org/doc/install für eine Anleitung
    • eine funktionierende Kommandozeile (bash, sh, PowerShell)
    • eine funktionierende Git-Installation
    • einen Editor oder eine IDE zum Programmieren

    Skills

    • Gute Kenntnisse in einer “Mainstream”-Programmiersprache wie Java, C# und C/C++.
    • Grundkenntnisse über Nebenläufigkeitskonzepte in Programmiersprachen: Prozesse, Threads, Co-Routinen usw.
    • Für die praktischen Übungen ein Notebook mit vorinstalliertem, aktuellem Go und Git sowie ein Texteditor und eine Shell.

    Lernziele

    1. kleinere Programme in Go schreiben können,
    2. die wesentlichen Merkmale von Go kennen,
    3. die Unterschiede von Go gegenüber anderen Programmiersprachen wie Java, C# usw. verstehen, vor allem in den Bereichen Nebenläufigkeit und Parallelität und
    4. besser einschätzen können, ob Go für ihr ihre Projekte geeignet ist.
    Mehr lesen

    Microservice mit Spring Boot und Spring Cloud

    Vortrag Eberhard Wolff JUG Essen März 2017

    Microservices stellen Entwickler vor neue Herausforderungen. Der Spring-Stack hält zwei Lösungen bereit: Spring Boot zur Implementierung des Microservices und Spring Cloud für den Aufbau der notwendigen Infrastruktur. Dieser Vortrag zeigt, wie die beiden Technologien praktisch funktionieren und Microservices-Architekturen mit diesem Ansatz implementiert werden können.

    Mehr lesen

    Webinar: Strategic (Domain Driven) Design with Spring Boot

    Vortrag Michael Plöd Spring Webinar

    This talk will focus on one of the most precious parts of Domain Driven Design, the concept of Strategic Design, as well as Bounded Context, the Context Map and the patterns that are being documented in the Context Map.

    An explanation of these principles as well as practical usage scenarios such as migrating a monolithic landscape to microservices is planned for discussion. And, using a hands-on approach, we will demonstrate the concepts surrounding Strategic Design with an application landscape of various Spring Boot Applications.

    Mehr lesen
  • Wait, what!? Our microservices have actual human users?

    Vortrag Stefan Tilkov EuregJUG Maas-Rhine March2017

    Microservice API styles, service lookups, datastores, scaling – all of our typical discussions about microservices seem to be centered around backend topics. But what about the user interface? How are we supposed to structure what is arguably the most important part of our applications – the one facing our users?

    In this session we’ll explore the role of the UI aspect in a microservice architecture, look at various methods of modularization, and derive a set of guidelines for avoiding monolithic frontends.

    Mehr lesen
  • Self-contained Systems oder Microservices – Hauptsache SOA

    Vortrag Oliver Tigges, Eberhard Wolff Software Architecture Summit 2017

    Die Architekturansätze von Microservices und Self-contained Systems (SCS) versprechen viele Vorteile. Aber wir stoßen immer wieder auf ähnliche Herausforderungen, wenn große IT-Systeme nach diesen Ansätzen implementiert werden sollen:

    1. Wie sieht ein guter Schnitt des Gesamtsystems mit Microservices/SCS aus? Wie helfen DDD, Bounded Contexts, explizite Qualitätsziele und eine Analyse der Geschäftsprozesse dabei, den optimalen Schnitt zu finden?
    2. Wenn ein System mit monolithischer Datenbank zerteilt wird, gibt es zwischen den Modulen keine Datenbankrelationen. Wie entsteht dennoch ein perfomantes, stabiles und flexibles System?
    3. Microservice/SCS fördern die Autonomie von Teams, Systemen und Services. Aber wer hält die Fäden zusammen und sorgt dafür, dass alles zusammen funktioniert und die Unternehmens-IT in die richtige Richtung läuft?

    In diesem Workshop geben wir zunächst einen Überblick über die Ideen, Begriffe und Grundkonzepte von Microservices und SCS. Danach möchten wir gemeinsam mit den Teilnehmern Lösungen für diese drei Fragestellungen erarbeiten und diskutieren.

    Mehr lesen
  • Architecture Fishbowl

    Vortrag Stefan Tilkov Software Architecture Summit 2017

    In einem Fishbowl verschwimmt die Grenze zwischen Sprechern und Teilnehmern: Es bietet eine großartige Möglichkeit, die Themen des Summits ohne vorbestimmte Agenda zu diskutieren. Die Sprecher starten die Diskussion und stellen dabei sicher, dass sie eine möglichst große Menge kontroverser Statements abgeben, um die Diskussion anzufeuern. Danach haben Sie die Chance, an der dynamischen Diskussion teilzunehmen und Ihre eigenen Erfahrungen und Meinungen zu teilen. Moderiert von Stefan Tilkov.

    Mehr lesen

    New School of Enterprise Architecture

    Vortrag Martin Schmidt, Wolfgang Keller Software Architecture Summit 2017

    Große Unternehmen haben heute vielfach gut optimierte Prozesse. Die sind zwar stark durchstrukturiert – sind aber nicht immer schnell änderbar und flexibel. Unternehmensarchitekten in solchen Unternehmen sind häufig mit der Erstellung und Umsetzung langfristiger Planungen beschäftigt. In Zeiten von Digitalisierung, Start-Ups und Hochgeschwindigkeitswettbewerb wird die Situation auf den Tankern der Wirtschaft jedoch in vielen Fällen immer ungemütlicher: Die staatliche Regulierung nimmt nicht ab, sondern immer noch zu. Gleichzeitig erodieren in vielen Branchen die Margen und aggressive neue – oft stark digitalisierte – Wettbewerber treten auf. Gleichzeitig steigt das Niveau von Cyber-Bedrohungen und große Internet-Monopole bedrohen den Zugang zum Kunden. Für Unternehmensarchitekten heißt das wieder mehr als in den letzten zwei Jahrzehnten aktuelle Technik beherrschen zu müssen, geschäftsorientiert zu denken und aber immer noch ein Auge auf Regulierungsthemen zu haben.

    Dieser Workshop gibt Ihnen einen kompakten Überblick über die Dinge, mit denen man sich als IT-Unternehmensarchitekt heute beschäftigen sollte und bietet Ihnen einen Einstieg in ihre eigene weitere Entwicklung – zum Nutzen Ihrer Firma und zu Ihrem eigenen Nutzen.

    Mehr lesen
  • Domain Events und Event Storming

    Vortrag Michael Plöd Software Architecture Summit 2017

    Das Thema Domain-driven Design ist derzeit in aller Munde und hat sich im Lauf der Jahre spürbar weiterentwickelt. Insbesondere das Thema Domain Events spielt hierbei eine zentrale Rolle. Mithilfe von Domain Events können Bounded Contexts sehr lose gekoppelt auf Basis fachlicher Ereignisse miteinander interagieren. Dabei öffnen Domain Events neben dem architekturellen Vorteil „lose Kopplung“ die Tür für weitere interessante Möglichkeiten. Hierzu zählen die Persistierung von Events (Event Sourcing) und eine neue Form der fachlichen Analyse, das Event Storming.

    Der Workshop wird die Konzepte von Domain Events vorstellen, Ihnen erläutern, wie diese idealerweise für Kommunikation und Persistierung verwendet werden können. Weiterhin wird im Rahmen des Vortrags auch das Analyseverfahren Event Storming praktisch vorgestellt. Der Workshop wird neben einem theoretischen Teil auch praktische Übungen beinhalten.

    Mehr lesen

    KEYNOTE: Architekturtransformationen in der Praxis

    Vortrag Gernot Starke, Stefan Tilkov Software Architecture Summit 2017

    Eigentlich wollen alle nur das Beste – und doch ist es oft so schwer, sinnvolle Veränderungen durchzusetzen. Dieses Gefühl plagt IT-Konferenzbesucher, wenn sie, frisch beflügelt von den großartigen Berichten über die Innovationsführer, wieder „nach Hause” kommen und dort mit den tollen neuen Ideen vor Wände laufen. In diesem Vortrag werfen wir einen Blick auf die typischen Probleme und diskutieren Wege, sie zu überwinden. Für das systematische Vorgehen spielen neben Technologie auch Politik und Betriebswirtschaft eine wichtige Rolle.

    Mehr lesen
  • DDD Workshop

    Vortrag Michael Plöd MAJUG März 2017

    In diesem Workshop werden wir die grundlegenden Konzepte und Ideen von Domain Driven Design und seine Evolution betrachten und kennenlernen. Dabei werden nicht nur reine Patterns betrachtet, sondern auch eruiert in wie weit DDD organisatorische, (Team-)politische und kommunikative Aspekte beeinflusst. Der Workshop bespricht dabei die grundlegenden Eigenschaften und “Attitüden”, die DDD ausmachen. Im nächsten Teil geht es detailliert um den Bereich der Internal Building Block, dem wohl bekanntesten DDD-Teil: die Entitäten, Value Objects oder Aggregates.

    Schließlich werden wir das Thema Strategic Design beleuchten und lernen in wie weit uns Bounded Contexts und Context Maps dabei helfen, bestehende Systemlandschaften oder Systeme zu analysieren und warum vor allem die Context Map mit ihren Klassifizierungen ein sehr guter Ausgangspunkt für künftige IT-Transformationen ist. Abschließend werfen wir noch kurz einen Blick auf neuere Trends im DDD-Umfeld, wie zum Beispiel Domain Events, Event Sourcing oder CQRS.

    Der Workshop wird sowohl einen theoretischen, wie auch einen praktischen Teil mit Beispielen und kurzen Übungen beinhalten.

    Mehr lesen
  • Web Applikationen mit Clojure

    Vortrag Michael Vitz rheinjug Folien verfügbar

    Clojure ist eine JVM-Sprache, die das Unmögliche möglich macht: ein tatsächlich in der Praxis von normalsterblichen Entwicklern einsetzbares Lisp.

    Neben den Grundlagen von Clojure werden Sie in an diesem Abend auch Schritt für Schritt sehen, wie man hiermit eine Web-Anwendungen entwickeln kann. Wenn Sie sich hierbei nicht von den Lisp-typischen Klammern abschrecken lassen, werden Sie schnell sehen, dass die Ausdrucksstärke von Clojure und der Einsatz einer rein funktionalen Programmiersprache für Web-Applikationen sehr gut passt.

    Mehr lesen
  • Testing with mutants

    Vortrag Jan Stępień :clojureD 2017 Folien verfügbar

    Property-based testing is mainstream now (there, I said it). The testing approach popularised by test.check enjoys wide adoption in the Clojure community. This talk is dedicated to another randomised testing technique. Mutation testing introduces subtle bugs to source code of our projects and checks that our tests catch those synthetic problems. Clojure — a homoiconic language with dynamic code reloading — should offer us an excellent foundation for building a mutation testing library. But there’s not a single one out there. Why? Let’s try to answer this question together.

    A video of this talk is now available here.

    Mehr lesen
  • The Hidden Nature of Data

    Vortrag Martin Kühl BOB 2017 Folien verfügbar

    Encapsulation is a pillar of object-oriented programming, but how important is it in the context of functional programming? Is it worth clinging to, or should we stay away? This talk will examine the tradeoffs of encapsulating internal representations versus exposing the “nature” of our data.

    Programming with immutable values and algebraic data types usually makes hiding fields behind accessors unnecessary. On the other hand, hiding functions and types is a crucial technique control our API, encouraging correct usage and affording the flexibility to change it.

    In this session we will explore constraints that encourage encapsulation, discuss how it affects our types, their algebras, and their algorithmic properties, and learn about alternatives and their benefits and drawbacks.

    Mehr lesen
  • In-Depth: Practical Microservice Modelling with DDD’s Strategic Design

    Vortrag Michael Plöd microXchg 2017

    In this highly interactive session we are going to dig deep into strategic design aspects for finding the right and suitable granularity and interaction model for Microservices. The session will cover intense discussions surrounding Bounded Contexts, the meaning of given models in Bounded Contexts, Domain Events and Context Mapping, including the given patterns such as Shared Kernel, Customer / Supplier, Anticorruption Layer or Separate Ways (just to name a few).

    The in-depth session will be based on a code based (Spring Boot) demo application landscape and will include analog as well as digital labs. This session will consist of approximately 40% presentation and 60% labs and audience participation.

    Mehr lesen
  • Testing with mutants

    Vortrag Jan Stępień lambda Days 2017

    Property-based testing is mainstream now in a number of functional languages (there, I’ve said it). This talk is dedicated to another randomised testing technique. Unlike property-based testing, which validates correctness of implementation of our programmes, mutation testing audits our tests suites. It introduces subtle faults to source code of our projects and verifies that our tests catch those synthetic problems. Clojure, a homoiconic language with dynamic code reloading, should offer us an excellent foundation for building a mutation testing library. But there’s not a single one out there. Why? Let’s try to answer this question together.

    A video of this talk is now available here.

    Mehr lesen
  • Web Applications in Clojure

    Vortrag Joy Clark Clojure Meetup Munich Februar 2017 Folien verfügbar

    Clojure, as a Lisp dialect running on the JVM, is a purely functional language that also takes advantage of the great library support available in the Java world.

    As a functional language, it provides great abstractions for developing web applications, particularly because of how it handles HTTP, which is a fundamentally stateless protocol. In this talk, I will explain the fundamental concepts behind Clojure web applications and how the Clojure libraries harness the power of the existing Java infrastructure in order to provide state of the art server technology.

    Mehr lesen
  • Wie wichtig ist SW-Architektur noch für agile Projekte?

    Vortrag Gernot Starke Agile Nacht Stuttgart

    Erfahrungsbericht: Analyse, Verbesserung und Dokumentation eines (gar nicht so) hypothetischen Systems im agilen Umfeld

    Ein eCommerce-System für ziemlich komplizierte Produkte (Komplettausstattung von Supermärkten, Gartenplanung, Regal- und Möbelplanung und ähnliche abgefahrene Dinge) - inklusive kompletter Lieferung, Aufbau, Abnahme, Inbetriebnahme… das ist VENOM (very normal system).

    Das System ist historisch/hysterisch gewachsen, wird von einer zerfahrenen, ziemlich desolaten Firma (SAMM Inc.) entwickelt und betrieben und drohte vor einiger Zeit, „den Bach herunter“ zu gehen. SAMM Inc. zog die Reißleine, und beauftragte ein (agiles) Team damit, die Rettung von VENOM (und SAMM) vorzubereiten und durchzuführen - „Succeed or die", hieß die Devise.

    Diese (völlig fiktive) Situation ist in Wirklichkeit völlig real. Hören Sie über „rise and fall of the system“, sehen Sie die Auswirkungen desaströser Architekturarbeit und verkorkster Entwicklungs- und Betriebsprozesse. Diskutieren Sie mit mir, welche Maßnahmen helfen könnten (oder auch nicht) - und sehen Sie (am realen Beispiel), wie Dokumentation (arc42, was sonst) auch in hochgradig agilem Umfeld funktioniert.

    Disclaimer: Ähnlichkeit mit real existierenden Unternehmen ist rein zufällig.

    Mehr lesen
  • Self-contained Systems: Ein anderer Ansatz für Microservices

    Vortrag Eberhard Wolff OOP 2017

    Self-contained Systems nutzen die Ideen von Microservices und teilen Systeme in stark entkoppelte Anwendungen auf. So können große, komplexe Anwendungen strukturiert werden - aber auch in vielen anderen Szenarien sind die Ansätze sinnvoll nutzbar. SCS werden bei Firmen wie Otto, Kaufhof oder Kühne+Nagel erfolgreich eingesetzt.

    Der Workshop erklärt zunächst SCS und zeigt die Unterschiede zu Microservices sowie am praktischen Beispiel technische Aspekte wie Frontend-Integration. Schließlich entwerfen wir eine technische und fachliche Architektur für ein SCS-System.

    Zielpublikum: Architekten, Software-Entwickler, technische Projektleiter Voraussetzungen: grundlegendes Wissen über Architektur und Software-Entwicklung Schwierigkeitsgrad: Anfänger

    Mehr lesen
  • Microservices sind ganz anders als man denkt!

    Vortrag Eberhard Wolff OOP 2017

    „Microservices sind SOA - nur richtig“, so hört man oft. Schließlich sollen Systeme wie bei SOA in Dienste aufgeteilt werden. Das scheint auch zunächst zu stimmen - erst auf den zweiten Blick wird klar, welche Details bei Microservices anders sind. Mittlerweile liegen außerdem genügend Erfahrungen über die wesentlichen Herausforderungen bei Microservices vor. So zeigt der Vortrag, welche Details bei Microservices in der Praxis wirklich relevant sind.

    Zielpublikum: Architekten, Entwickler, Projektleiter Voraussetzungen: Kenntnisse in Software Design sowie Agiler Entwicklung Schwierigkeitsgrad: Fortgeschritten

    Mehr lesen
  • Architekturmodernisierung mit SCS und Microservices

    Vortrag Alexander Heusingfeld, Michael Vitz OOP 2017 Folien verfügbar

    Dieser Vortrag adressiert ein klassisches Dilemma der IT: eine große, monolithische Anwendung, kritisch und wichtig, und innerlich ungeheuer schwer und aufwendig zu warten. Um auf fachliche Änderungen und dynamische Märkte schneller reagieren zu können, müssen wir dieses Altsystem modularisieren und strukturell sowie konzeptionell modernisieren – dabei aber kontinuierlich (hoch) verfügbar halten. Ganz nebenbei verfügen wir natürlich nur über ein eingeschränktes Budget.

    Wir zeigen Ihnen anhand etablierter Praktiken und Patterns (aus dem Fundus von aim42.org) typische Möglichkeiten auf, solche Projekte anzugehen. So können Sie Stück für Stück, gerade so, wie es das Projektbudget zulässt, die Architektur des Gesamtsystems modernisieren, ohne ein Big-Bang-Release zu fürchten. Hierbei wollen wir auch die Frage beantworten, mit welchen Themen Sie sich neben „Wie teile ich mein System auf“ außerdem beschäftigen müssen, und wie wir die Vorteile einer Microservice-Architektur nutzen können, ohne uns gleich allen ihren Herausforderungen auf einmal stellen zu müssen.

    Zielpublikum: Architekten, Entwickler, Projektleiter Voraussetzungen: Basiswissen Software-Architektur und verteilte Systeme Schwierigkeitsgrad: Anfänger

    Mehr lesen

    Die Jagd läuft – Digitalisierung im Unternehmen

    Vortrag Phillip Ghadir, Gernot Starke OOP 2017

    Seit einiger Zeit beschäftigen bimodale IT, Two-Speed Architecture und Digitalisierung das IT-Management vieler Unternehmen. Wir möchten diese Begriffe erklären und in den Kontext aktueller disruptiver Innovationen einordnen. Damit zeigen wir sowohl aus technischer wie auch IT-Management-Perspektive auf, wie und warum Themen wie Docker, Continuous-Deployment/Delivery sowie Ambient Computing essenzielle strategische Herausforderungen meistern helfen.

    In diesem Vortrag beschäftigen wir uns mit den geänderten Rahmenbedingungen in der heutigen Zeit, in denen Mitarbeiter, Interessenten und Kunden jederzeit leistungsstarke, mobile, Akku-betriebene Multi-Core-Systeme mit sich führen und trotzdem unter starren Unternehmensprozessen und IT-Dinosaurier-System leiden müssen. Dabei gibt es heute für Software weniger Grenzen als jemals zuvor!

    Während Systemstabilität früher eines der zentralen Qualitätsmerkmale war, werden heute eher Anpassbarkeit, Flexibilität und time-to-market gefordert. Solche Einflussfaktoren steigern die Erwartungshaltung an die IT - und verändern damit deren Spielregeln gewaltig: Disruptive digitale Innovationen werden zur Notwendigkeit von IT-Management und -Entwicklung.

    Auf der Suche nach neuen Geschäftsmodellen darf sich IT daher nicht nur mit dem Aufrechterhalten des Status quo begnügen, sondern muss proaktiv solche Änderungen einleiten und begleiten. Im Vortrag beleuchten wir aktuelle Trends aus der Sicht von IT-Architekten, beispielsweise die bimodale IT, Two-Speed Architecture sowie Digitalisierung. Dazu geben wir praktische Hilfestellung zu deren Einsatz und der Bewältigung möglicher Risiken.

    Zielpublikum: IT-Manager, Software-/Systemarchitekten Voraussetzungen: Projekterfahrung Schwierigkeitsgrad: Fortgeschritten

    Mehr lesen
  • Clojure-Web-Applikationen für Beginner

    Vortrag Michael Vitz OOP 2017 Folien verfügbar

    Clojure ist eine JVM-Sprache, die das Unmögliche möglich macht: ein tatsächlich in der Praxis von normalsterblichen Entwicklern einsetzbares Lisp.

    Neben den Grundlagen von Clojure werden Sie in dieser Session auch lernen, wie man hiermit Web-Anwendungen umsetzen kann. Wenn Sie sich hierbei nicht von den Lisp-typischen Klammern abschrecken lassen, werden Sie schnell sehen, dass der Einsatz einer rein funktionalen Programmiersprache sehr gut zum statuslosen Ansatz von HTTP passt.

    Zielpublikum: Entwickler Voraussetzungen: Grundlagen der funktionalen Programmierung und Webentwicklung Schwierigkeitsgrad: Anfänger

    Mehr lesen

    Mutation Testing in Continuous Delivery Pipelines

    Vortrag Jan Stępień Continuous Delivery Meetup München Folien verfügbar

    Mutation testing introduces subtle bugs to source code of our projects and checks that our tests catch those synthetic problems. High computational cost of this technique have prevented it from being widely used in our standard programming toolchain. Can we try to sneak it in through the backdoor of our continuous delivery pipelines? Let’s try to answer this question together.

    Mehr lesen

    Microservices: Redundanz = Wartbarkeit!

    Vortrag Eberhard Wolff Software Architektur München Meetup Januar 2017

    Microservices sind nicht nur ein Hype: Sie stellen einige grundlegende Annahmen der Software-Architekturen in Frage. Soll man Redundanzen wirklich vermeiden? Ist eine saubere Architektur wirklich der Schlüssel zu langfristiger Wartbarkeit? Dieser Vortrag handelt davon, wie Microservices mit unorthodoxen Ansätzen eine produktive Software-Entwicklung erlauben und wie wir Architektur auch jenseits von Microservices neu denken müssen.

    Mehr lesen
  • Strategic Design aus Domain Driven Design mit Spring Boot

    Vortrag Michael Plöd JUG Nürnberg Januar 2017 Meetup Folien verfügbar

    Einer der wertvollsten Bereiche von Domain Driven Design ist zweifelsohne das Strategic Design mit seinen Context Mapping Patterns. Allerdings wirken die meisten Beschreibungen der Patterns in textueller Form etwas abstrakt und schwer verdaulich. Im Rahmen dieses Vortrags werden die Patterns auf Basis einer einfachen Spring Boot basierten Anwendungslandschaft praktisch und greifbar erklärt und vorgestellt. Hierbei gehen wir unter anderem auf folgende Patterns ein: Customer / Supplier, Open Host Language, Anticorruption Layer, Conformist oder Separate Ways

    Mehr lesen
  • Caching with Spring - Advanced Topics and Best Practices

    Vortrag Michael Plöd Spring Community Meetup Munich January 2017

    Caching is relevant for a wide range of business applications and there is a huge variety of products in the market, ranging from easy to adopt local heap based caches to powerful distributed data grids. This talk addresses advanced usage of Spring’s caching abstractions such as integrating a cache provider that is not integrated in the default Spring Package.

    In addition, I will also give an overview of the JCache specification and its adoption in the Spring ecosystem. Finally, the presentation will address several best practices for integrating various caching solutions into enterprise grade applications that don’t have the luxury of having „eventual consistency“ as a non-functional requirement.

    Mehr lesen

    Don’t Fear the Implicits

    Vortrag Daniel Westheide Scala Mini Meetup Berlin

    Developers who are new to Scala often shy away from coming into contact with implicits, and by extension, understanding typeclasses. In big organizations that have been adopting Scala at scale, you sometimes even come across hard rules that put a ban on the use of implicits because that language feature is considered to be too advanced and not understood by a lot of developers. On the other hand, implicits and typeclasses are used heavily not only by a lot of the most important Scala frameworks and libraries, but also in the standard library. Given the fact that it is so hard to evade them when writing real world Scala code, I would like to encourage developers adopting Scala to overcome their fear of implicits and instead embrace the typeclass pattern.

    In this talk, as an intermediate Scala developer, you will learn everything you really need to know about typeclasses: What they are good for and how they compare to what you are familiar with from object-oriented languages, when you should and should not use them, how the pattern can be encoded in Scala and how to write your own typeclasses, how to provide instances of typeclasses for your own or existing types, and how to do all of this with minimal boilerplate. Throughout the talk, you will see numerous examples of typeclasses used in the Scala ecosystem and the standard library, and you’ll see that you don’t need to know anything about category theory to benefit from embracing typeclasses.

    Mehr lesen