You're seeing from to in
  • Continuous Integration und Delivery von Microservices mit GitLab CI

    Talk 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.

    Read more
  • Go, Go, Go: Schnelleinstieg in die Programmiersprache Go

    Talk 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
    Read more

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

    Talk 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
    Read more
  • Schlank und fit dank Kubernetes!

    Talk 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
    Read more

    Modularisierung: Monolithen gegen

    Talk 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
    Read more
  • Hände waschen, Zähne putzen: (manchmal) vergessene Grundlagen von Software-Engineering

    Talk 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.
    Read more

    VENOM: Leiden und Rettung eines großen Systems

    Talk 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 …

    Read more
  • Domain-driven Design Architektur Kata

    Talk 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
    Read more
  • Monolithen – besser als ihr Ruf

    Talk 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.

    Read more
  • Transklusion – Kitt für gut geschnittene Webanwendungen

    Talk 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.

    Read more
  • Sicherheit in Microservice-Umgebungen

    Talk 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.

    Read more

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

    Talk 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.

    Read more

    Schnelleinstieg in Go

    Talk 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.

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

    Talk 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.

    Read more
  • Pragmatischer Einstieg in Clojure

    Talk 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.

    Read more
  • Java9 – Features abseits von Jigsaw und JShell

    Talk 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.

    Read more

    Bis an den Abgrund - und zurück!

    Talk 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.

    Read more
  • Continuous Delivery mit Microservices

    Talk 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.

    Read more
  • What’s in a Name: Evaluate

    Blog Post Gernot Starke

    The term evaluation is often used in the context of system and architecture reviews. In my opinion, this term is often misleading and such activities should be named differently.

    Read more
  • Ant’s Community - Looking Back and Current State

    Talk Stefan Bodewig FOSS Backstage Slides available

    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.

    Read more
  • Domain-driven Design – Tipps aus der Praxis. Interview mit Michael Plöd

    Link Michael Plöd

    Domain-driven Design bietet eine Reihe von Lösungsansätzen, die nur dann funktionieren, wenn sich Entwickler und Fachexperten auf eine Zusammenarbeit einlassen. Doch wie kann eine solche Bereitschaft zur Zusammenarbeit erreicht werden? In diesem Interview geht Michael Plöd der Frage nach, wie sich DDD im Spannungsfeld zwischen Business und IT etablieren lässt.

  • Mutation Testing in Continuous Delivery Pipelines

    Talk Jan Stępień Continuous Lifecycle 2017 Slides available

    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.

    Read more

    Reactive Systems & Extensions

    Talk 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
    Read more
  • Datenbankzentrische Anwendungen mit Spring Boot und jOOQ

    Talk Michael Simons Java Usergroup Münster, November 2017 Slides available

    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.

    Read more

    Die Grenzen von Continuous Delivery

    Talk 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.

    Read more
  • Unendliches Vertrauen

    Article Eberhard Wolff

    Continuous Delivery steht für die ständige Auslieferung von Software in Produktion – ein Konzept, das mittlerweile mehr als fünf Jahre alt ist. Zeit ein Fazit zu ziehen und auf die Erfahrungen aus der Praxis zu schauen.

    Read more

    Microservices mit Spring Cloud und Spring Boot

    Talk 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.

    Read more
  • Am Rande des Abgrunds – die VENOM-Story. Ein Interview mit Gernot Starke

    Link Gernot Starke

    Wie sieht ein ganz normales System eigentlich aus? Wenn sich technische Schulden immer höher türmen, wie schaffen wir es, nicht von ihnen erschlagen zu werden? Dr. Gernot Starke liefert Antworten im Interview auf der W-JAX 2017.

  • Introducing structure in Clojure

    Talk Jan Stępień Codemotion 2017 Slides available

    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.

    Read more
  • Code Retreat – Best Practices ganz praktisch

    Talk 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.

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

    Talk 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.

    Read more

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

    Talk 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.

    Read more
  • Beyond Microservices – ein Blick hinter den Hype

    Talk 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.

    Read more

    Wie etabliert man DDD im Spannungsfeld zwischen Business und IT?

    Talk Michael Plöd, Carola Lilienthal W-JAX 2017 Slides available

    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.

    Read more

    Spring Boot Microservices mit Domain Events

    Talk 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.

    Read more

    Microservices: Patterns und Antipatterns

    Talk Stefan Tilkov W-JAX 2017 Slides available

    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.

    Read more

    Asynchrone Microservices mit Kafka und REST / Atom

    Talk 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.

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

    Talk 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.

    Read more

    Conway’s Law & die ewige Suche nach der „richtigen“ Architektur

    Link Stefan Tilkov

    Microservices sind oft eine gute Wahl, allerdings nicht das Allheilmittel für sämtliche Probleme in der Softwareentwicklung. Wichtiger ist es, eine Architektur zu bauen, die auch für die Zukunft noch Optionen zur Evolution bietet. In diesem Interview mit jaxenter.de spricht Stefan Tilkov über die Wichtigkeit von aufeinander abgestimmten Organisationen, Architekturen und Prozessen in der Softwarearchitektur.

  • Strategisches Design (DDD) für Microservices

    Talk 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.

    Read more
  • Kotlin

    Podcast Lucas Dohmen, Jörg Müller

    In dieser Folge befragt Lucas Dohmen Jörg Müller zum Thema Kotlin. Jörg erklärt, woher die Sprache kommt und wieso es gerade für Java-EntwicklerInnen interessant ist, sich diese anzuschauen. Im Gespräch gehen wir auf viele Features von Kotlin ein, z.B. die Interoperabilität mit Java, das entsprechende Ökosystem und vieles mehr. Read more
  • OAuth2 und OpenID Connect

    Talk 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.

    Read more

    Sicherheit in Microservice-Umgebungen

    Talk 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.

    Read more
  • Java9 – Features abseits von Jigsaw und JShell

    Talk Michael Vitz JCON 2017 Slides available

    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.

    Read more
  • Modularisierte UIs für Microservices abseits von SPAs

    Talk Michael Vitz JCON 2017 Slides available

    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.

    Read more
  • Cognicast, Episode 133, Joy Clark

    Audio Joy Clark Cognicast

    Episode 133 of the Cognicast features our colleague Joy Clark. In this episode, she discusses security, sketchnoting and other interesting things.

  • Die Magie hinter Spring-Boot-Startern

    Talk Michael Simons Java User Group Darmstadt Oktober 2017 Slides available

    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.

    Read more
  • Command Line Interfaces in Java

    Article Michael Vitz

    Die meisten neuen Anwendungen stellen eine Web- oder grafische Benutzungsoberfläche für die Interaktion mit dem Benutzer bereit. Doch gerade für Anwendungen, die Teil eines Batch-Jobs sind, automatisiert aufgerufen werden oder für sogenannte Powernutzer gemacht sind, bietet es sich an, eine Oberfläche für die Kommandozeile anzubieten. Dieser Artikel zeigt die Bestandteile einer solchen Anwendung und wie man diese in Java benutzt.

    Read more
  • Java 9 – Features abseits von Jigsaw und JShell

    Talk Michael Vitz JUG Berlin-Brandenburg Oktober 2017 Slides available

    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.

    Read more
  • Architekturen und Alternativen

    Talk 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.

    Read more
  • Java 9 Release: „Für mich sind die Erweiterungen der bestehenden APIs die wichtigsten Features“

    Link Michael Vitz

    In der Interview-Reihe von jaxenter.com mit verschiedenen Java-Experten zum Release von Java 9 war unser Kollege Michael Vitz zu Gast. Im Gespräch geht es um die Features, die ihm in Java noch fehlen, und um die neue Veröffentlichungsstrategie der Programmiersprache. Er skizziert außerdem, welche Probleme die mangelnde Aufgeschlossenheit gegenüber Updates bei Unternehmen verursachen kann.

  • Die ewige Suche nach der „richtigen“ Architektur

    Link Stefan Tilkov

    In diesem Interview spricht Stefan Tilkov über die Wichtigkeit von aufeinander abgestimmten Organisationen, Architekturen und Prozessen in der Softwarearchitektur.

  • Enemy of the State

    Talk 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.

    Read more

    From Brownfield to DevOps

    Talk 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.

    Read more
  • Beyond Microservices

    Talk 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.

    Read more
  • Logging und Metriken in verteilten Systemen

    Article Michael Vitz

    Aufgrund des aktuellen Trends rund um Microservices entsteht in vielen Projekten ein verteiltes System. Eine Herausforderung von verteilten Systemen ist deren Überwachung und das Nachvollziehen, was zur Laufzeit vor sich geht. Dieser Artikel gibt Ihnen einen Überblick, wie dies mit Logging und Metriken gewährleistet werden kann.

    Read more

    Elm in the wild: A Sandwich Delivery Game

    Blog Post Matthias Putz

    New languages often look shiny and cool in their playground examples. But bringing them out into the wild and having to code more than just the examples in the tutorials, often reveals the true value of these new languages. So, in order to evaluate the shininess of Elm, a language compiled to JavaScript and used for building web front ends, we decided to use it for a scoped project: We programmed the Sandwich Delivery Game for the “Smart City” exhibition in Basel, Switzerland.

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

    Talk Andreas Krüger, Jörg Müller AWS Tech Community Days Slides available

    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.

    Read more
  • Domain-Driven Design

    Podcast Lucas Dohmen, Michael Plöd

    In dieser Folge des innoQ Podcasts spricht Lucas Dohmen mit Michael Plöd über Domain-Driven Design. Was ist Domain-Driven Design? Wie passt es zusammen mit anderen Ansätzen wie Agile, DevOps oder Microservices? Was ist die Ubiquitous Language und welche Rolle spielt sie in DDD? Was ist das Strategic Design und was bedeuten die Begriffe Bounded Context und Context Map? Und was ist das Technical Design und welche Begriffe begegnen einem dort? Read more
  • Java9 – Features abseits von Jigsaw und JShell

    Talk Michael Vitz BED-Con 2017 Slides available

    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.

    Read more

    Die Grenzen von Continuous Delivery

    Talk 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.

    Read more

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

    Talk Jan Stępień BED-Con 2017 Slides available

    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.

    Read more
  • Serverlose IoT-Applikationen

    Talk Niko Will BED-Con 2017 Slides available

    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.

    Read more

    Modularisierte UIs für Microservices abseits von SPAs

    Talk Michael Vitz BED-Con 2017 Slides available

    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.

    Read more

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

    Talk 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.

    Read more
  • Keynote: Architektur, Organisation, Prozesse – und Menschen

    Talk Stefan Tilkov Software Architecture Summit Berlin 2017 Slides available

    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.

    Read more

    Beyond Microservices

    Talk 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.

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

    Talk 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.

    Read more
  • Automatisiertes Testen mit Lognachrichten

    Article Matthias Putz

    Software-Systeme sind heute verteilt: Zahlreichen Microservices auf diversen Servern von verschiedenen Entwickler-Teams kommunizieren nicht mehr nur untereinander sondern auch mit, eher unzähligen, kleinen Systemen aus dem Internet der Dinge. Meist werden die notwendigen Integrationstests aufgrund der inhärenten Komplexität bei der Umsetzung und Ausführung manuell durchgeführt. Wie jedes System mit Hilfe der ohnehin vorhanden Lognachrichten einfach für automatisierte Integrationstests fit gemacht werden kann, soll im Folgenden beschrieben werden.

    Read more

    Hitchhikers Guide to Architecture Documentation

    Talk 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.

    Read more
  • Self-contained Systems: Microservices-Archi­tekturen mit System

    Talk 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.

    Read more
  • Modularisierung in Groß und Klein

    Talk Stefan Tilkov Java Forum Nord 2017 Slides available

    (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.

    Read more
  • ROCA-Compliant Table Sorting

    Blog Post Philipp Neugebauer

    The article presents an easy way to enable table column sorting without JavaScript. In addition to the avoided complexity, the solution is also compliant to ROCA.

    Read more

    Transklusion – Kitt für gut geschnittene Webanwendungen

    Talk Franziska Dessart Herbstcampus 2017 Slides available

    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?
    Read more
  • Microservices – Umsetzungen nicht nur mit Java

    Talk 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?
    Read more
  • Entwicklung im Feierabendmodus

    Podcast Lucas Dohmen, Robert Glaser

    In dieser Episode spricht Lucas Dohmen erneut mit Robert Glaser über den Reisekosten Gorilla. Dieses mal geht es aber um die technologische Perspektive: Wie wählt man den richtigen Tech-Stack für ein Projekt, was vor allem Abends nach der Arbeit im Feierabendmodus entwickelt wird? Welche Technologien kamen zum Einsatz? Warum wird auf AWS gehosted? Wieso ein Monolith und keine Microservices? Wie arbeitet man asynchron und verteilt? Read more
  • Property-based testing: You won’t look at your tests the same way ever again

    Talk Jan Stępień Lightweight Java User Group München August 2017 Slides available

    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.

    Read more
  • Introducing structure

    Talk Jan Stępień Functional Programming Wroclaw #16 Slides available

    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.

    Read more
  • Der Reisekosten-Gorilla

    Podcast Lucas Dohmen, Robert Glaser, Stefan Tilkov

    Vier innoQ-Mitarbeiter entwickeln eine Lösung zur Reisekostenabrechnung für Unternehmen. Robert Glaser und Stefan Tilkov beantworten Lucas Dohmen alle Fragen zum Reisekosten-Gorilla. In dieser Folge erläutern wir außerdem, welche Rolle innoQ dabei spielt und wie Mitarbeiter mit Hilfe des Mitarbeiterinnovationsprogramms ihre Ideen neben ihrem Job umsetzen können. Read more
  • Git - Gewusst wie

    Talk 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.

    Read more
  • Microservices – der aktuelle Stand

    Article Eberhard Wolff

    Microservices sind in aller Munde. Gerade bei Software-Entwicklung machen solche Hypes misstrauisch. Schließlich steckt hinter einem Hype oft wenig Substanz. Es ist also Zeit ein erstes Fazit zu ziehen.

    Read more
  • Warum wollen Sie Microservices einführen?

    Article Alexander Heusingfeld

    Mit diesem Artikel möchte ich Ihnen die Frage stellen, warum Sie eigentlich Microservices einführen wollen. Denn es ist immens wichtig, sich der Gründe und Ziele bewusst zu sein. Leider habe ich zu oft erlebt, wie die glänzenden, neuen Technologien die eigentlichen Ziele des Unternehmens in Vergessenheit geraten lassen und zum Selbstzweck werden.

    Read more
  • Topconf Düsseldorf 2017

    News

    Vom 4. - 6. Oktober 2017 trifft sich die Softwareindustrie bei der international besetzten Konferenz Topconf Düsseldorf. An drei vollgepackten Tagen gibt es Workshops und Vorträge mit über 50 hochkarätigen Rednern. In 9 verschiedenen Tracks bietet die Konferenz ein breites Themenspektrum von “Hidden Challenges” über “Modern Languages” oder “Dealing with Data” hin zu “Disruption”. Das gesamte Programm finden Sie hier. Read more
  • Combating spam, or how I befriended the Killer Rabbit of Caerbannog

    Talk Jan Stępień Munich Datageeks July 2017 Slides available

    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.

    Read more
  • Datenarchitekturen – nicht nur für Microservices

    Article Eberhard Wolff

    Microservices werfen wichtige Fragen für Software-Architektur auf. Besonders wichtig ist es, wie die Microservices mit Daten umgehen. Diese Konzepte lassen sich für viel mehr nutzen als nur für Microservices und werfen grundlegende Fragen über Modularisierung auf.

    Read more
  • Berufseinsteiger und Mentoring in der IT

    Podcast Joy Clark, Lucas Dohmen

    Lucas Dohmen und Joy Clark geben Berufseinsteigern Tipps für den leichteren Start in die IT. Aber auch erfahrene EntwicklerInnen können hier lernen, wie sie Neulinge beim Berufseinstieg besser unterstützen. Unsere Themen sind zum Beispiel: Alte, langweilige Technologien vs. neu und shiny? Wie profitierst Du von Meetups und Sketchnotes? Was ist der "richtige" erste Arbeitgeber? Das Gefühl, ein Tintenfisch zu sein. Außerdem geht es ums "Das ist doch ganz einfach", Meinungsvielfalt, Mentoring und Fehler machen. Read more
  • Simple AND Secure?

    Talk 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.

    Read more
  • Mit Bounded Contexts einen tragfähigen Systemschnitt finden

    Talk Oliver Tigges DDD Meetup Köln/Bonn #2 Slides available

    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.

    Read more

    Simple AND Secure? (EuroClojure Preview)

    Talk 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.

    Read more

    Structuring Clojure Apps

    Talk Jan Stępień Leipzig Clojure Meetup Slides available

    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.

    Read more
  • Strategisches Design (DDD) für Microservices

    Talk Michael Plöd RheinJUG Juli 2017 Slides available

    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.

    Read more
  • Domain Events und Event Storming

    Talk Michael Plöd Java Forum Stuttgart 2017 Slides available

    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.

    Read more

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

    Talk 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.

    Read more
  • Advanced Scala – Teil 2

    Podcast Stefan Tilkov, Daniel Westheide

    In dieser Folge setzen Daniel Westheide und Stefan Tilkov ihre Unterhaltung über fortgeschrittene Konzepte der Programmiersprache Scala fort. Diesmal geht es vor allem um Type Level Programming: logische Programmierung im Scala-Typsystem und generische Programmierung mit der Library Shapeless, aber auch um einen Vergleich zu Clojure, der anderen großen funktionalen Sprache auf der JVM. Read more
  • Leben, Leiden und Rettung eines IT-Systems

    Talk 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.

    Read more
  • Tooling für JavaScript-Frontends

    Article Michael Vitz

    Nahezu jede Webanwendung besitzt einen Anteil an JavaScript im Frontend. Im Vergleich zu früher haben sich jedoch viele Dinge geändert. So sind heute zahlreiche Tools üblich, die den Entwickler unterstützen. Dieser Artikel gibt einen Überblick über aktuell genutzte Entwicklungswerkzeuge für die Entwicklung von JavaScript-Frontends.

    Read more
  • Innovation Tokens – Gegen Informatikerromantik und Technologieüberflutung

    Article Alexander Heusingfeld

    Zu oft werden in Softwareprojekten zu viele neue Dinge gleichzeitig ausprobiert, ohne dass der Business Value erkennbar wäre- und vor allem, ohne die Risiken vorher abzuschätzen. Eine Möglichkeit, die unnötige Technologieüberflutung zu vermeiden, sind Innovation Tokens. Mit diesen lassen sich Innovationen in geregeltere Bahnen lenken und bieten eine Grundlage für weniger emotionale Technologiediskussionen.

    Read more

    Domain Driven Design für Microservices

    Talk Michael Plöd DWX Developer Week 2017 Slides available

    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.

    Read more
  • Stateful Apps mit Kubernetes

    Blog Post Christopher Schmidt

    Moderne Microservice-Architekturen lassen sich gut durch Container und Container Manager in Produktion bringen. Durch sie werden die aktuellen Anforderungen an Skalierbarkeit und Verfügbarkeit einfacher realisierbar – zumindest dann, wenn einzelne Container keine persistente Daten haben müssen. Aber auch dann ist klar: jedes System benötigt an irgendeiner Stelle Persistenz.

    Read more
  • Akka Cluster Management and Split Brain Resolution

    Talk Niko Will ScalaSwarm 2017 Slides available

    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.

    Read more
  • Many roads lead to microservices

    Talk 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.

    Read more
  • Konferenzsommer: Developer Week und Java Forum Stuttgart

    News

    In den nächsten Wochen sind wir auf zwei Konferenzen zu Gast. Vom 26.–29. Juni findet in Nürnberg die Developer Week statt. Das Event auf dem Nürnberger Messegelände bietet Workshops, Vorträge und eine Fachmesse für Softwareentwickler und IT-Entscheider. Read more

    Microservices: Deployment und Continuous Delivery

    Talk 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.

    Read more
  • Blockchain: The Slowest (and most fascinating) Database in the World

    Talk 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.

    Read more

    Advanced Scala

    Podcast Daniel Westheide, Stefan Tilkov

    In dieser Folge unterhalten sich Daniel Westheide und Stefan Tilkov über einige fortgeschrittene Konzepte der Programmiersprache Scala. Was sollte man bei der Verwendung von Case Classes beachten? Welche Fallstricke gibt es beim Pattern Matching? Und was sind eigentlich Type Classes? Read more
  • Self-contained Systems: A Different Approach to Microservices

    Talk 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.

    Read more
  • Introducing structure

    Talk Jan Stępień Clojure Vienna Meetup Juni 2017 Slides available

    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.

    Read more
  • Warum ein Container Manager das bessere Microservice Framework ist

    Article Christopher Schmidt

    Überall schießen Microservice Frameworks wie Pilze aus dem Boden – sei es für Java, sei es für NodeJS. Dabei sind Container Manager, unabhängig von jedem Framework, viel besser geeignet, Microservice Architekturen in Produktion zu bringen.

    Read more
  • Introducing structure

    Talk Jan Stępień Clojure Meetup Munich Juni 2017 Slides available

    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.

    Read more
  • Implementing loosely coupled microservices with Grails

    Talk Michael Plöd GR8Conf EU 2017 Slides available

    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.

    Read more
  • Microservices with Java, Spring Boot and Spring Cloud

    Talk 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.

    Read more
  • Self-Contained Systems – Teil 2

    Podcast Stefan Tilkov, Eberhard Wolff

    In der zweiten Folge des Podcasts zum Thema "Self-contained Systems (SCS)" mit Eberhard Wolff und Stefan Tilkov geht es um die Motivation für SCS, um die sinnvollen und weniger sinnvollen Einsatzszenarien und die Auswirkungen auf die Evolution der Architektur insgesamt. Außerdem diskutieren die beiden Mikro- und Makro-Architektur sowie den Geltungsbereich bestimmter Regeln in diesen Perspektiven. Schließlich diskutieren sie Sinn und Unsinn von Frontend-Monolithen und die Herausforderungen von UI-Integration, die Historie des Begriffs "SCS" und die Möglichkeiten zur Mitwirkung an der Weiterentwicklung der Definition. Read more
  • Remain resilient, fail fast

    Blog Post Jan Stępień

    Keep your systems resilient to broken connections and unreliable networks. Unless it’s start-up time.

    Read more
  • Leveraging Domain Events in your Spring Boot Microservices (Workshop)

    Talk 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.

    Read more
  • DDD Strategic Design with Spring Boot

    Talk 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.

    Read more
  • Caching for Business Applications: Best Practices and Gotchas

    Talk Michael Plöd geeCON 2017 Slides available

    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

    Read more
  • Marrying Rails, Turbolinks and JavaScript Custom Elements

    Blog Post Robert Glaser

    Rails 5.1 just arrived and brought with it a curated setup for webpack. Think what you want about webpack, but it’s the new default for JavaScript module loading and bundling in Rails and therefore here to stay. So here’s a quick post on how to get the new JavaScript goodness up and running with your existing Turbolinks setup.

    Read more

    Continuous Delivery im Expertencheck, Teil 2

    Link Eberhard Wolff

    Der Einfluss von Continuous Delivery reicht nicht nur bis in die Produktion, sondern auch in den Designprozess. jaxenter.de hat sechs Continuous-Delivery-Experten gefragt, welche Auswirkungen CD auf die Softwarearchitektur hat. Außerdem geben sie Tipps, mit welchen Tools man die CD-Toolchain am besten bändigen kann.

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

    Talk 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?

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

    Talk Gernot Starke, Ralf Müller JAX 2017 Slides available

    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.

    Read more
  • Spring Boot als Beispiel für DDD Strategic Design

    Talk Michael Plöd JAX 2017 Slides available

    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.

    Read more

    Datenarchitekturen nicht nur für Microservices

    Talk Eberhard Wolff JAX 2017 Slides available

    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.

    Read more

    Strategisches Design (DDD) für Microservices

    Talk Michael Plöd JAX 2017 Slides available

    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.

    Read more

    Cloud-native Java

    Talk 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.

    Read more
  • Microservices-Workshop: Architektur und Technik

    Talk 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.

    Read more

    Cloud-native Java (the Workshop)

    Talk 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
    Read more
  • Continuous Delivery im Expertencheck

    Link Eberhard Wolff

    Continuous Delivery (CD) verspricht schnellere Release-Zyklen und eine bessere Softwarequalität. Oft sieht das Ergebnis aber ganz anders aus. Eberhard Wolff und fünf weitere Continuous-Delivery-Experten erklären auf jaxenter.de, welche Hindernisse auf jeden Fall aus dem Weg geräumt werden müssen, damit CD erfolgreich umgesetzt werden kann.

  • Serverlose IoT-Applikationen

    Talk Niko Will building IoT 2017 Slides available

    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.

    Read more
  • Self-Contained Systems – Teil 1

    Podcast Stefan Tilkov, Eberhard Wolff

    Self-contained Systems sind ein Mittel zur Modularisierung von Systemen. Sie übernehmen viele gute Ideen des Microservices-Konzepts. In dieser Episode geht darum, was Self-contained Systems eigentlich ausmacht und welche Vorteile dieser Ansatz hat. Außerdem sprechen Eberhard und Stefan über die Dinge, auf die man bei der Umsetzung achten muss. Read more
  • Rendering Self-Contained Custom Elements

    Blog Post Frederik Dohr

    This is a response to Paul Kinlan’s post on creating custom elements, explaining how JSX can be used for declarative templating.

    Read more

    Cloud for Breakfast: innoQ at AWS Tech Talks

    News

    From 26 April to 2 May, Amazon Web Services is offering a series of “Tech Breakfast” talks with a focus on Microservices. All events include an introduction to “Microservices on AWS” with Sascha Möllering (AWS) and a talk by our colleagues Jerry Preissler and Alexander Heusingfeld. In this session, they will take a closer look at “Pragmatic Software Engineering – when theory meets real life”. Read more
  • Servicemanagement mit systemd

    Talk 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.

    Read more
  • heise SoftwareArchitekTOUR Podcast, Episode 55: Pro und Contra von Web Components

    Link Falk Hoppe, Stefan Tilkov

    Falk Hoppe war zu Gast beim heise SoftwareArchitekTOUR-Podcast, um über Vor- und Nachteile von Web Components zu diskutieren, dem Web-Standard für die Entwicklung portabler, Framework-unabhängiger Browser-Komponenten. Nach einer Vorstellung der Bestandteile (HTML Templates, Custom Elements, Shadow DOM und HTML Imports) geht es vor allem um die Praxistauglichkeit und die Relevanz in Zeiten mächtiger Single-Page-App-(SPA)-Ansätze.

  • Building Component-Based Front Ends with Rails

    Blog Post Frederik Dohr, Lucas Dohmen

    Our latest Ruby on Rails front-end project strongly emphasizes a component-based approach. In this post, we briefly explain how a tiny helper not only helped us render UI components, but also resulted in better components thanks to well-defined contracts and effortless composition.

    Read more
  • Event Sourcing und CQRS – Teil 2

    Podcast Niko Will, Lucas Dohmen

    In dieser Folge unterhalten sich Niko Will und Lucas Dohmen zum zweiten Mal über Event Sourcing und Command Query Responsibility Segregation, kurz CQRS. Nachdem wir in Teil 1 über die Vor- und Nachteile sowie einige technische Details gesprochen haben, geht es dieses Mal mehr um die Besonderheiten auf Ebene der Architektur. Wie fügen sich diese Patterns in eine verteilte Architektur ein? Auf was muss ich bei der Implementierung achten? Wie erreiche ich eventual consistency in Event-getriebenen Architekturen? Read more
  • Kontextfrei: A new approach to testable Spark applications

    Talk Daniel Westheide Scalar 2017 Slides available

    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.

    Read more
  • Akka Cluster Management and Split Brain Resolution

    Talk Niko Will Scalar 2017 Slides available

    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.

    Read more
  • Self-contained Systems: Microservices-Archi­tekturen mit System

    Talk 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.

    Read more
  • Docker Compose – Komplette Systeme mit Docker managen

    Article Michael Vitz

    Der Einstieg in Docker ist einfach. Schnell hat man gelernt, mit Dockerfiles Images zu erzeugen und die ersten Container laufen bereits. Dann wird es wirklich spannend. Wie manage ich mehrere Container, die zusammen eine ganze Umgebung bilden? Dieser Artikel liefert Ihnen die Antwort auf diese Frage.

    Read more
  • Schnelleinstieg in Go

    Talk 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.
    Read more

    Microservice mit Spring Boot und Spring Cloud

    Talk 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.

    Read more

    Webinar: Strategic (Domain Driven) Design with Spring Boot

    Talk 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.

    Read more
  • JAX 2017 mit Michael Plöd, Gernot Starke und Eberhard Wolff

    News

    Vom 8. bis 12. Mai findet in Mainz die JAX 2017 statt. Ein besonderer Fokus der beliebten Konferenz liegt auf Java Core- und Enterprise-Technologien, Microservices, dem Spring-Ökosystem, JavaScript, Continuous Delivery und DevOps. Im umfangreichen Programm von über 200 Vorträgen und Workshops ist innoQ mit sieben Sessions vertreten. Read more
  • Wait, what!? Our microservices have actual human users?

    Talk 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.

    Read more
  • Event Sourcing und CQRS – Teil 1

    Podcast Niko Will, Lucas Dohmen

    In dieser Folge unterhalten sich Niko Will und Lucas Dohmen über Event Sourcing und Command Query Responsibility Segregation, kurz CQRS. Wozu kann man diese Patterns verwenden? Was sind Vor- und Nachteile gegenüber anderen Ansätzen? Warum sind sie besonders in verteilten Anwendungen wie in Microservice Architekturen oder Self-Contained Systems (SCS) interessant? Read more
  • Design Patterns: Noch nie so wertvoll wie heute?

    Blog Post Frank Buschmann

    In einem Gastbeitrag diskutiert Frank Buschmann, Co-Autor der Buchreihe “The "Pattern-Oriented Software Architecture”, warum Patterns zur Zeit eine Renaissance erleben.

    Read more
  • How Browsers Load and Process JavaScript

    Blog Post Frederik Dohr

    This is a rundown of how browsers process JavaScript references within HTML.

    Read more
  • Self-contained Systems oder Microservices – Hauptsache SOA

    Talk 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.

    Read more
  • Architecture Fishbowl

    Talk 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.

    Read more

    New School of Enterprise Architecture

    Talk 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.

    Read more
  • The Power of the HTML Form

    Blog Post Joy Clark

    The HTML form is a powerful tool for telling a server what you want to do. But does everybody know how it works? With the multifarious JavaScript frameworks currently available today, software developers in the industry today often do not know how to create a web application without JavaScript. Is there an alternative? The web has been around for ages. What did people do before JavaScript?

    Read more

    Domain Events und Event Storming

    Talk 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.

    Read more

    KEYNOTE: Architekturtransformationen in der Praxis

    Talk 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.

    Read more
  • DDD Workshop

    Talk 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.

    Read more
  • Serverless

    Blog Post Niko Will

    Um den Begriff serverless gibt es immer noch hitzige Diskussionen. Einige halten ihn für einen Hoax und setzen ihn mit “useless” gleich, andere schwören darauf, dass serverless bald alle anderen Architekturstile ablösen wird.

    Read more
  • Web Applikationen mit Clojure

    Talk Michael Vitz rheinjug Slides available

    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.

    Read more
  • Prolog

    Podcast Joy Clark, Lucas Dohmen

    In dieser Folge unterhalten sich Joy Clark und Lucas Dohmen über logische Programmierung und über die Programmiersprache Prolog. Was ist logische Programmierung? Wo spielt es seine Stärken aus? Read more
  • Testing with mutants

    Talk Jan Stępień :clojureD 2017 Slides available

    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.

    Read more
  • Implementierung einer einfachen Zustandsmaschine (state machine) in Java

    Blog Post Florian Miess

    Eine simple Zustandsmaschine (state machine) in Java

    Read more

    The Hidden Nature of Data

    Talk Martin Kühl BOB 2017 Slides available

    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.

    Read more
  • In-Depth: Practical Microservice Modelling with DDD’s Strategic Design

    Talk 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.

    Read more
  • Testing with mutants

    Talk 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.

    Read more
  • Lokale Datenanalyse mit Data Frames

    Article Michael Vitz, Michael Krämer

    Der Wunsch, aus Geschäftsdaten Erkenntnisse gewinnen zu wollen, ist in der Breite der Unternehmen angekommen. Häufig werden dabei technologische Aspekte wie Machine-Learning-Algorithmen und Cluster-Lösungen als Schlüssel betrachtet, um viele Fragen quasi automatisch zu beantworten. Doch muss es für einen Einstieg in dieses Thema immer direkt ein Big-Data-Framework oder ein Cluster für Machine Learning sein? Dieser Artikel zeigt Ihnen, wie Sie ganz einfach lokal auf Ihrem Rechner die ersten Schritte im Data-Science-Umfeld gehen können und dabei einen Überblick über die Vorgehensweise erhalten.

    Read more

    Web Applications in Clojure

    Talk Joy Clark Clojure Meetup Munich Februar 2017 Slides available

    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.

    Read more
  • Wie wichtig ist SW-Architektur noch für agile Projekte?

    Talk 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.

    Read more

    Self-contained Systems und Frontend-Integration – Teil 2

    Podcast Falk Hoppe, Till Schulte-Coerne, Eberhard Wolff

    Im zweiten Teil des Podcasts über Self-contained Systems (SCS) und Frontend-Integration geht es um Alternativen zu Single Page Apps (SPAs) und darum, wie Entwickler ganz konkret erste Schritte hin zu einer Frontend-Integration und Self-contained Systems gehen können. Read more
  • Self-contained Systems: Ein anderer Ansatz für Microservices

    Talk 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

    Read more
  • Microservices sind ganz anders als man denkt!

    Talk 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

    Read more
  • Architekturmodernisierung mit SCS und Microservices

    Talk Alexander Heusingfeld, Michael Vitz OOP 2017 Slides available

    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

    Read more

    Die Jagd läuft – Digitalisierung im Unternehmen

    Talk 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

    Read more
  • Clojure-Web-Applikationen für Beginner

    Talk Michael Vitz OOP 2017 Slides available

    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

    Read more

    Mutation Testing in Continuous Delivery Pipelines

    Talk Jan Stępień Continuous Delivery Meetup München Slides available

    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.

    Read more

    Microservices: Redundanz = Wartbarkeit!

    Talk 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.

    Read more
  • heise Developer Continuous Architecture Blog, „Meine Datenbank gehört mir!”

    Link Eberhard Wolff

    Datenbanken gemeinsam zu nutzen erscheint sinnvoll – schließlich sind Daten das neue Öl. Das widerspricht aber einer wesentlichen Grundlage für moderne Softwareentwicklung – der Modularisierung. Die neueste Kolumne von Eberhard Wolff für den heise Developer Blog.

  • arc42 - die Siebte

    Blog Post Gernot Starke

    Das bewährte arc42 Template ist gerade in Version 7 erschienen - mit deutlichen Erweiterungen im Ökosystem. Grundsätzlich bleibt arc42 V7 kompatibel mit den Vorgängerversionen, ist insgesamt noch kompakter und pragmatischer geworden.

    Read more

    Strategic Design aus Domain Driven Design mit Spring Boot

    Talk Michael Plöd JUG Nürnberg Januar 2017 Meetup Slides available

    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

    Read more
  • UI Engineering Podcast, S01E06, Interview mit Falk Hoppe

    Link Falk Hoppe

    Falk Hoppe war zu Gast bei UI Engineering Podcast. Er unterhält sich mit den beiden Gastgebern des Podcasts, Jan Persiel und Dennis Reimann, über Styleguides und Pattern Libraries sowie verschiedene Tools und deren Einsatz.

  • Meetups in Süddeutschland

    News

    In den kommenden 14 Tagen finden in München, Nürnberg und Stuttgart einige Meetups mit innoQ Beteiligung statt. Die Teilnahme ist bei allen Events kostenlos, allerdings muss man sich gegebenenfalls vorher anmelden. Read more
  • The Empathic Programmer

    Link Daniel Westheide

    In an article published on his personal blog, Daniel Westheide shares his take on empathy, and lack thereof, in the tech community and at the workplace, and how it relates to inclusion and diversity.

  • Self-contained Systems und Frontend-Integration – Teil 1

    Podcast Falk Hoppe, Till Schulte-Coerne, Eberhard Wolff

    Self-contained Systems (SCS) stellen einen Ansatz zur Modularisierung von Systemen dar. Sie übernehmen viele gute Ideen des Microservices-Konzepts. Eine wichtiges Element ist die Frontend-Integration auf der UI-Ebene als Alternative zur Integration im Backend. Darum geht es in zwei Podcast-Episoden. In dieser ersten Episode stellen Falk Hoppe und Till Schulte-Coerne im Gespräch mit Eberhard Wolff das SCS-Konzept vor. Sie diskutieren zudem die Vor- und Nachteile der Frontend-Integration sowie Single-Page Apps (SPA) als eine mögliche Implementierung des Frontends. Read more
  • Caching with Spring - Advanced Topics and Best Practices

    Talk 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.

    Read more

    Don’t Fear the Implicits

    Talk 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.

    Read more
  • Software Engineering Daily Podcast, „Self-Contained Systems“ with Eberhard Wolff

    Audio Eberhard Wolff Software Engineering Daily

    Self-contained Systems (SCS) is an architectural approach that separates the functionality of a system into many independent systems. Each self-contained system is an autonomous web application, and is owned by one team. Communication with other self-contained systems or 3rd party systems is asynchronous where possible.

    As Eberhard Wolff explains in this episode, self-contained systems is not the same thing as microservices, but they are not mutually exclusive. Organizations often adopt a mix of architectural ideas, and it is worth understanding these different models so you can decide which of them to apply to your own projects.

  • Simplicity - Fighting Complexity At All Costs

    Blog Post Joy Clark

    My colleague recently wrote an excellent post discussing the functional and object-oriented paradigms. As someone who comes from a functional programming background, I definitely agreed with one thing: We need to stop building arbitrary walls that prevent us from learning from and helping each other.

    Read more