Much of the attention for microservice architectures tends to focus on the technical aspects. But when you look into the details of organisations that have benefited from this approach you realise that there is more to getting the most out of microservices than lots of shinny new technology. In this talk, Sam will show how organisational structures and team responsibilities may need to change if you want to get the most out of adopting a microservice architecture. Looking at traditional IT structures and comparing them with the modern autonomous delivery teams, he’ll explore how to get the organisation and architecture working well together, and also look at how you can start to apply these ideas inside your own company.
Softwareentwickler stehen unter dem Anspruch, stets mit den neuesten Architekturen und Technologien mitzuhalten und unter Zeitdruck nachhaltige Lösungen zu liefern. Dabei fokussieren wir häufig so sehr auf technische Werkzeuge und Methoden, dass wir das eigentliche Ziel aus den Augen verlieren: Die tatsächlichen Geschäftsprobleme des Kunden zu lösen. Mit Domain Driven Design lenken wir unseren Fokus zuerst auf ein Verständnis der Domäne, und bekommen Methoden an die Hand, um selbst in komplexen Domänen das Modell im Einklang mit dem Business zu pflegen. Durch den Schutz der Domäne von technischen Einflüssen und den Einsatz kollaborativer Lern- und Modellierungsmethoden schaffen wir wesentlich nachhaltiger Mehrwert für unsere Kunden.
In diesem programmiersprachenagnostischen Workshop werden wir anhand einer echten Problemdomäne ein Modell erforschen, uns für eine Architektur entscheiden und Implementierungsbeispiele betrachten. Es gibt keine einfachen Fragen und keine vorgefertigte Lösung, euer Einfallsreichtum ist gefragt. Für den Kurs ist Grundwissen in objektorientierter Programmierung oder funktionaler Programmierung vorausgesetzt. Vorwissen über DDD ist nicht nötig, darf aber gerne die Fragestellungen bereichern.
You’ve probably seen plenty of “boxes and arrows” diagrams when looking at microservice architectures, but what’s behind those lines? In this half-day course, Sam Newman, author of Building Microservices, will explore the nature of service-to-service calls and collaboration
The array of technology choices in this space is vast, so one of the first things Sam will share will be a model for thinking of service-to-sevice collaboration. From there we’ll explore some of the technology choices that fit into this model, including looking at newer interaction models enabled by technology Kafka and service meshes. Finally, we’ll discuss how to implement business processes through Sagas - how to we manage all those individual service calls and make them part of something more.
Damit größere Systeme oder Systemlandschaften über einen längeren Zeitraum hohe Qualität ausstrahlen, sind sowohl technische als auch fachliche Änderungen unausweichlich. Die gesündesten mir bekannten Ansätze kümmern sich stetig um diese Änderungen und betrauen möglichst viele Entwickler mit der Weiterentwicklung der Architektur. Konzepte und Technologien werden lokal und unabhängig getestet, bevor sie entweder verworfen werden, lokal als Optimierung bestehen bleiben oder als breiter anwendbares Konzept in die Landschaft wachsen. Durch den harten Test des Lebens (bzw. durch den kontinuierlichen Kontakt von Entwicklern mit wichtigen Qualitätsmerkmalen) entstehen wertvolle Beiträge zu einer Architektur, die sich stetig weiterentwickelt. Evolutionärer Architektur.
In diesem Workshop stelle ich den Zyklus evolutionärer Architekturentwicklung vor. Von Lernfenstern mit Experimenten und erlaubten Abweichungen vom „Standard“, über weich definierte Regeln und geförderte Innovation bis hin zur eingeschränkten Anwendbarkeit von überholten Konzepten. Beispiele aus realen Entwicklungsvorhaben verdeutlichen die Konzepte.
Fortschritte bei Algorithmen und Hardware haben neuronalen Netzen in den vergangenen Jahren neue Einsatzfelder eröffnet. Dieser Workshop richtet sich an Architekten, die einen Überblick über die Grundlagen, Einsatzmöglichkeiten und Frameworks für die Implementierung maschinellen Lernens mit neuronalen Netzen erhalten möchten.
Es werden Anwendungsbeispiele aus den Bereichen Bilderkennung, Zeitreihenanalyse und Spachverarbeitung vorgestellt. Der Teilnehmer erhält eine Einführung in verbreitete ML-Frameworks TensorFlow, PyTorch und Caffe.
Im Rahmen dieses Workshops werden wir zusammen auf Basis einer nicht-trivialen Fallstudie den Bereich des Tactical Designs von DDD kennenlernen und vertieft behandeln. Fokus wird hierbei insbesondere auf das Thema Aggregates gelegt. Aggregates sind ein probates Mittel, um innerhalb eines Bounded Contexts für eine losere Kopplung einzelner fachlicher Teilbereiche zu sorgen. Weiterhin wird der Workshop behandeln, wie sich Aggregate in verschiedene Architekturstile eingliedern lassen, aber auch in welchen Fällen sie gegebenenfalls nicht gut geeignet sind. Zum Ende des Workshops wird noch darauf eingegangen, welche Rollen die so genannten Internal Building Blocks im Kontext von Monolithen oder unterschiedlichen Microservice-Stilen spielen können.
Gesetzt den Fall, Sie halten Cross-Plattform SPAs (Single Page Applications) für eine gute Idee, könnte diese Night Session in der Tat interessant für Sie werden. Lassen Sie uns über das Web als Plattform reden und darüber, wie wir JavaScript-basierte Browseranwendungen unter Umständen noch "besser" machen können. Die Web- und Browserplattformen haben die Art und Weise verändert, wie wir Anwendungen erstellen können, und diese Plattformen haben sich in den letzten 5 Jahren erheblich weiterentwickelt. Für SPAs, die im Browser laufen, stehen mehr und mehr native Funktionen zur Verfügung - eine großartige Basis für moderne Applikationen gemäß der Idee von Progressive Web Apps (PWA). Zudem haben wir mit dem zunehmenden Reifegrad von WebAssembly (WASM) als Standard allmählich leistungsstarke Tools in unserer Hand, um die nächste Generation von webbasierten Anwendungen zumindest mal anzudenken. In dieser Night Session wird Christian Weyer sowohl über PWAs als auch über die Basis und Möglichkeiten von WebAssembly als Bytecode für alle gängigen modernen Browser sprechen. Erfahren Sie, wie Sie WASM zum Ausführen von C/C++, Java oder C#/.NET-Code im Browser ohne Plug-in nutzen können – sei es aus Performance- oder Wiederverwendungsgründen. Dies kann sowohl bei Greenfield- als auch bei Brownfield-Projekten ein interessanter Ansatz sein. Lehnen Sie sich zurück und schauen Sie zu, welche Möglichkeiten PWAs und WebAssembly dem Web verleihen könnten.
Beim Bauen monolithischer Systeme nutzen Entwicklerteams eine Reihe typischer Muster, um die Interaktion verschiedener Systemteile zu implementieren. Behält man diese Interaktionsmuster bei, während man ein System in verschiedene aufteilt, ergeben sich oft große Komplexität und architektonische Nachteile, die oft die ursprüngliche Idee, die hinter der Aufteilung stand, konterkarieren. Der Workshop betrachtet ein konkretes Beispiel von Modulinteraktion in einem monolithischen System und identifiziert die Problemstellungen die sich ergeben, wenn man dieses System in exakt dem gleichen Interaktionsstil aufteilt. Danach wird eine alternative Implementierungsstrategie für das monolithische System diskutiert, die die Modularität des Ursprungssystems stark verbessert und im Falle einer Aufteilung in unabhängige Teilsysteme zu einer besseren Architektur führt. Die verwendeten Codebeispiele sind in Java implementiert und basieren auf dem Komponentenmodell des Spring Frameworks, lassen sich aber ohne Weiteres in alternative Technologiestacks übertragen.
Aus dem strategischen Design von DDD ist eine Context Map mit Bounded Contexts und deren Abhängigkeiten entstanden. Doch wie können nun diese Bounded Contexts konkret basierend auf den taktischen Mustern von DDD in Code umgesetzt werden? Wie immer gibt es auch hier nicht die eine Allerweltslösung, aber dafür eine Reihe von interessanten Optionen, allen voran die Onion Architecture und Stereotypen.
Basierend auf der praktischen Erfahrung aus mehreren DDD-Projekten wird in diesem Workshop aufgezeigt, wie die Umsetzung von Fachlichkeit möglichst gut getrennt von technischen Aspekten wie Persistenz, Transaktionen oder Security erfolgen kann, wie diese technischen Aspekte als “Implementationsdetails” ergänzt werden können und welchen Einfluss diese Art der Umsetzung z.B. auf die Code-Organisation oder das Testing haben kann. Darüber hinaus wird betrachtet, wie Domain Events benutzt werden können, um innerhalb eines Bounded Context und über Bounded Contexts hinweg fachlich “hochwertig” zu kommunizieren und wie dies technisch umgesetzt werden kann. In einem Mix aus Präsentation und Demo werden diese Ideen konkret am Beispiel eines Systems aus der Bike-Sharing-Domäne gezeigt.
Unwartbares Code-Chaos allerorten - und gleichzeitig muss alles immer schneller, größer, komplexer und zuverlässiger werden. Wir haben uns angewöhnt, zur Lösung dieser Herausforderungen stets nach dem nächsten Patentrezept am Horizont (oder bei Stack Overflow) Ausschau zu erhalten. IT bewegt sich schnell, da können doch nur neue Ideen helfen. Altes Wissen kann da nichts ausrichten - oder doch?
In dieser Keynote probieren wir einmal einen ganz anderen Ansatz: Wir werden einige zeitlose Architektur-Weisheiten ausgraben, indem wir unsere Schaufel an einigen klassischen Computer Science Artikeln ansetzen werden. Wir werden die Kernideen dieser Artikel freilegen und sie auf die Herausforderungen heutiger IT-Systeme anwenden. Seid bereit für einige überraschende Wiederentdeckungen und unerwartete Einsichten!
Zahlreiche Softwareprojekte scheitern nicht nur wegen der gewählten Technologien, sondern vor allem an einem Mangel an interdisziplinärer Kommunikation. Entwickler und Fachleute sprechen verschiedene Sprachen und verstehen einander nicht. In den vergangenen Jahren hat sich Domain-Driven Design (DDD) zunehmend als Vorgehensweise etabliert, das Problem zu lösen. Doch wie funktioniert DDD, und welchen Bezug hat es zu Event-Sourcing und CQRS? Die drei Konzepte werden häufig in einen Topf geworfen, sind tatsächlich aber unabhängig voneinander – unter gewissen Umständen können sie einander aber ergänzen. In dem Workshop entwirren Sie gemeinsam mit Golo Roden das Geflecht. Außerdem zeigt er Ihnen, wie man auf der Basis von DDD, Event-Sourcing und CQRS eine Anwendung für die Cloud mit JavaScript entwickeln kann.
Microservice-Architekturen wie die ISA (Independent Systems Architecture) und SCS (Self-contained Systems) müssen eine Reihe von technischen Herausforderungen lösen. Dazu zählen Deployment,
Service Discovery, Resilience und Load Balancing. In diesem Workshop zeigen wir, warum Kubernetes eine ideale Lösung für diese Punkte darstellt und gehen auf zusätzliche Technologien für asynchrone Kommunikation und UI-Integration ein. So zeigt der Workshop nicht nur theoretische Architektur-Prinzipien, sondern auch deren ganz praktische Umsetzung.
Chaos engineering is the practice of conducting thoughtful, planned experiments designed to reveal weaknesses in our systems. This hands-on workshop will share how you can get started practicing Chaos Engineering. Ana Medina will cover the tools and practices needed to implement Chaos Engineering in your organization. Even if you’re already using chaos engineering, you’ll learn to identify new ways to use chaos engineering within your engineering organization and discover how other companies are using chaos engineering - and the positive results they have had using chaos to create reliable distributed systems.
Am Dienstag bietet der Themenabend eine sehr gute Gelegenheit wichtige Softwarearchitekturthemen mit den Trainern in entspannter Atmosphäre zu diskutieren. An speziellen "Thementischen" können Teilnehmer – zu Freibier und nichtalkoholischen Getränken – die Experten jedes Themengebietes befragen oder mit anderen Teilnehmern diskutieren. Hier kann von den Teilnehmern auch unverbindlich und individuell ein eigenes Thema vorgeschlagen werden.
Fast jedes Softwaresystem wird mit guten Vorsätzen, aber unter schwierigen Bedingungen entwickelt. Die typische Schwierigkeiten, die im Lebens eines Softwaresystems auftreten, sind: Deadlines, die uns zwingen Hacks zu programmieren, unterschiedliche Qualifikationen im Entwicklungsteam, die zu Code in verschiedener Qualität führen, und auch alter Code, der unordentlich und zu einem großen Knäuel verwoben daherkommt. All dieser schlechte Code wird die Entwicklungskosten in Zukunft in die Höhe treiben und führt dazu, dass wir das Softwaresystem nicht mehr gerne anfassen. Wir haben Legacy!
In diesem Workshop erlernen Sie Techniken und Konzepte aus Domain-Driven Design, die helfen ein Legacy-System wieder auf den Pfad der Tugend zu bringen. Wir diskutieren, wie Legacy-Systeme mithilfe von Bounded Contexts und Microservices fachlich zerlegt werden können und wie die Building Blocks von DDD Schritt für Schritt in Legacy-Systeme eingeführt werden können.
Anforderungsanalyse ist so alt wie die Softwarebranche selbst, dennoch hat sie oft Schwierigkeiten auf beiden Seiten das Verständnis herzustellen, das nötig ist für ein erfolgreiches Softwareprojekt. Besonders im agilen Umfeld, in dem sich Anforderungen schnell wandeln können, ist es wichtig immer wieder neu zu einem gemeinsamen Verständnis zu kommen - um nicht nur eine gute Software-Architektur zu bauen, sondern darüber hinaus eine, die dem Kunden entspricht.
Dieser Workshop zeigt dazu neue Wege der Anforderungsanalyse auf, um spielerisch Wünsche, Vorstellungen und Erwartungen so zu erfassen, dass ein sinnvolles und im besten Fall iteratives Vorgehen daraus abgeleitet werden kann. Dazu werden anhand von Beispielen verschiedene Techniken und Methoden gemeinsam erarbeitet und auf praktische Einsatzmöglichkeiten hin untersucht.
Moderne Web-Frontends erfordern genauso schwierige Architekturentscheidungen wie das Backend – und die Entscheidungen haben genauso weitreichende Konsequenzen. Auch die Herausforderungen sind ähnlich: Wartbarkeit und parallele Arbeit in weitgehend unabhängigen Teams müssen ermöglicht werden. Hinzu kommen Web-spezifische Anforderungen wie die Lauffähigkeit in den diversen Browsern, die Größe auszuliefernder Artefakte oder Fehlerbehandlung.
Dieser Workshop behandelt komponentenorientierte Modularisierungskonzepte von HTML, CSS und JavaScript. Dazu gehören die Atomic-Design-Methodik, verschiedene Modularisierungsansätze wie BEM (Block Element Modifier) sowie erprobte Werkzeuge der Frontend-Gemeinde wie CSS Präprozessoren, JavaScript Transpiler oder CSS Prefixer. Darüber hinaus stellt der Workshop verschiedene Architekturmuster gegenüber, etwa die Abwägung zwischen Server- und Client-lastigen Anwendungen. Zum Schluss behandeln wir das Thema Frontend in verteilten Systemen wie Microservice-Architekturen und stellen Styleguides sowie Self-contained Systems vor.
Vertikalisierung, Omnichannel, Digital Business, agile Programmierung, Apps - und mittendrin ein 136 Jahre altes Einzelhandelsunternehmen, das man nicht erwartet hätte. Das Traditionsunternehmen Breuninger ist grundsätzlich nicht besonders bekannt dafür, ein großer Player im IT-Business zu sein, verbindet man das Unternehmen doch eher mit exquisiter Bekleidung und vielleicht noch mit der Rolle als Herrenausstatter des VFB. Wie das alles trotzdem perfekt zusammenpasst, werden euch Benedikt Stemmildt, Lead Architekt und Katja Burkert, Head of Software Engineering, in einer packenden Keynote näherbringen. Dabei sprechen Bene und Katja über die Herausforderungen und Chancen einer vertikalen Architektur, „sexy“ Code und warum Vertikalisierung in der Softwarearchitektur bitter nötig ist.
#cloud #youbuildityourunit #self-contained-systems #microservices #microfrontends #fullstack #dontpanic"
In diesem Workshop beschäftigen wir uns mit der Architektur und den technischen Grundlagen des Blockchain-Ansatzes. Der Schwerpunkt liegt dabei darauf, die Technik zu durchdringen und am Beispiel von verschiedenen konkreten Implementierungen (inkl. der üblichen Verdächtigen Bitcoin und Ethereum) deren Anwendung zu demonstrieren. Schließlich sehen wir uns mögliche Anwendungsfälle für öffentliche und nicht-öffentliche Blockchains an. Anders formuliert: Was Sie schon immer über Blockchains wissen wollten, aber noch nie zu fragen wagten – oder was Ihnen noch nie ordentlich beantwortet wurde.
Fast jedes Softwaresystem wird mit guten Vorsätzen, aber unter schwierigen Bedingungen entwickelt. Die typische Schwierigkeiten, die im Lebens eines Softwaresystems auftreten, sind: Deadlines, die uns zwingen Hacks zu programmieren, unterschiedliche Qualifikationen im Entwicklungsteam, die zu Code in verschiedener Qualität führen, und auch alter Code, der unordentlich und zu einem großen Knäuel verwoben daherkommt. All dieser schlechte Code wird die Entwicklungskosten in Zukunft in die Höhe treiben und führt dazu, dass wir das Softwaresystem nicht mehr gerne anfassen. Wir haben Legacy!
In diesem Workshop erlernen Sie Techniken und Konzepte aus Domain-Driven Design, die helfen ein Legacy-System wieder auf den Pfad der Tugend zu bringen. Wir diskutieren, wie Legacy-Systeme mithilfe von Bounded Contexts und Microservices fachlich zerlegt werden können und wie die Building Blocks von DDD Schritt für Schritt in Legacy-Systeme eingeführt werden können.
Man nehme ein bisschen BaaS (Backend as a Service), dazu noch ein wenig FaaS (Function as a Service) und fertig ist die Serverless Cloud Application. Was sich in der Theorie so einfach anhört, bringt in der Praxis die eine oder andere Herausforderung mit sich. Die versprochenen Benefits, wie Time-to-Market, Auto-Scaling, automatisches Failover oder Kostenreduzierung via „Pay per Use“ gibt es leider nicht umsonst. Eine passende Architektur muss her. Im Rahmen des Workshops werden wir uns verschiedene Anwendungsszenarien anschauen und für passende Architekturansätze für diese entwerfen. Wir werden dabei natürlich auch dem einen oder anderen Stolperstein begegnen. Aber das kann uns nicht aufhalten.