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 die eigene Umsetzung sein. Die Teilnehmer können anschließend Vor- und Nachteile abwägen und die Implementierung von Microservices mit diesen Ansätzen starten.
Will man richtig coole Web-Anwendungen entwickeln, kommt es auf darauf an, den geeigneten Technologiemix zu beherrschen. Erfahren Sie daher live in diesem Workshop, wie sich unter Verwendung von Angular, TypeScript, Spring Boot und Spring Data moderne Anwendungen entwickeln lassen, die Ihre Kunden begeistern werden!
In diesem Hands-on-Workshop werden ausgewählte __________ jeweils mithilfe von Folien zunächst eingeführt und im Anschluss durch praktische Übungen vertieft. Dabei werfen wir einen Blick auf Sprach- und Syntaxerweiterungen, beispielsweise einige hilfreiche Funktionalitäten in Streams und Optionals, aber auch Ergänzungen wie das Process API und bei der Unterstützung von HTTP/2. Zudem machen wir uns mit der JShell vertraut. Selbstverständlich dürfen die Modularisierung und Project Jigsaw als Themen nicht fehlen. Neben einem fundierten Einstieg werden die Beispiele schrittweise komplizierter. Schließlich wird auf das Management von Abhängigkeiten, die Realisierung von Services sowie die Möglichkeiten zur schrittweisen Migration eingegangen.
Die Teilnehmer erhalten einen Überblick über die mit Java 9 eingeführten Neuerungen und wichtige Erweiterungen aus Java 10 sowie Java 11. Dadurch können sie besser einschätzen, was sie später bei einem Umstieg auf die jeweilige Java-Version erwarten wird. Abgerundet wird der Workshop durch viele Übungen, einige Livedemos, ein paar Tipps und Tricks sowie verschiedene nützliche Handouts.
In diesem Hands-on-Workshop greifen wir gemeinsam aus der Sicht eines Pentesters eine Trainingsanwendung an. Sie lernen anhand zahlreicher Praxisübungen den Umgang mit professionellen Securitywerkzeugen (unter der Pentester-Distribution "Kali Linux") sowie die allgemeine Vorgehensweise von Pentestern bei Angriffen auf Webanwendungen. Selbstverständlich werden wir uns auch um Abwehrmaßnahmen zur Absicherung der gefundenen Lücken kümmern, im Vordergrund steht jedoch der gezielte Umgang mit professionellen Angriffswerkzeugen zur (teilautomatischen) Durchführung einer Sicherheitsanalyse. Nach dem Workshop verfügen Sie über praktische Erfahrungen zur Angriffsdurchführung auf Webanwendungen und Backends, die Sie im Rahmen Ihrer eigenen Softwareentwicklung umsetzen können, um die Sicherheit Ihrer Projekte nachhaltig zu erhöhen. Abgerundet wird jede Übung durch die passenden Tricks und Kniffe der Profis in der Verwendung der jeweilig offensiven Angriffswerkzeuge.
Dieser Workshop bietet eine praxisorientierte und nah am Quelltext orientierte Einführung in das Akka-Framework. Akka, das für die Programmiersprachen Scala und Java vorliegt, bietet Entwicklern völlig andere Architekturen als wir dies von Spring oder Java EE gewohnt sind und eröffnet Horizonte für moderne reaktive Anwendungen.
Das Node.js-Framework hat JavaScript erfolgreich auf dem Server etabliert und stellt eine ernsthafte Alternative für viele Anwendungen dar. Erleben Sie in diesem Workshop, wie man Schritt für Schritt eine Applikation mit Node.js aufbaut, die von der Authentifizierung über Logging und Datenbankverbindungen bis hin zu Webschnittstellen viele der gängigen Anforderungen erfüllt.
Kotlin nimmt Fahrt auf: Immer mehr Projekte und Entwickler entscheiden sich für die elegante Sprache, die eine kompakte und lesbare Syntax bietet, ohne Abstriche in Typsicherheit und Java-Interoperabilität zu machen. Dieser Workshop zeigt Ihnen alles, was Sie brauchen, um mit Kotlin in Ihren Java-Projekten starten zu können. Nach einem kurzen Einstieg in die Grundlagen von Kotlin liegt der Fokus des Workshops auf den innovativen Sprachfeatures. Anhand einer kleinen Spring-Boot-Anwendung zeigen wir, wie Programmieren ohne NullPointerExceptions und unnötige Casts aussieht. Wir diskutieren, wie Sie mit Extension-Funktionen auf Util-Klassen und Vererbung verzichten können. Anhand der Kotlin-Erweiterungen in Spring lernen Sie, wie man mit Lambdas eigene kleine DSLs entwickeln kann. Als Ausblick gibt es einen kurzen Einstieg in Co-Routinen - eine leichtgewichtige Alternative zu Threads.
In this 6-hour training, we want to focus on the motivation for Apache Kafka, the distributed streaming platform, as well as have a deeper look into its architecture and ecosystem, which includes the extended functionalities of Confluent Platform. You will learn more about the components that make a Kafka Cluster and about specific Kafka features, such as Brokers, Topics, Partitions, and Consumer Groups.
Begrüßung und Einführung in den Agile Day.
Improvisationstheater trainiert agile Soft Skills und damit die Fähigkeit, den (fr)agilen Projektalltag zu bewältigen. Die erwerbbaren Kernkompetenzen sind übertragbar und werden in agilen Teams gebraucht. Dieser Vortrag ist eine unterhaltsam-informative Kombination aus Fachvortrag, IT-Kabarett und Improtheatershow, angereichert mit typischen Szenen aus dem Alltag agiler Softwareentwicklungsprojekte. Die Scrum-Werte gelten tatsächlich auch für Impro-Teams: 1. Sagt ja! (Offenheit) 2. Riskiert etwas und trefft Entscheidungen! (Mut) 3. Lasst euch gegenseitig gut aussehen! (Respekt) 4. Haltet den Kurs! (Fokus) 5. Legt los, ohne vorher die Hände einzucremen! (Commitment). Werden zukünftige agile Teams nicht nur nach BDD/TDD/FDD arbeiten, sondern auch nach IDA, damit sie flexibler, innovativer und kooperativer sind? Durch interaktive Übungen mit dem Publikum wird Improtheater als Trainingsfeld für Agilität erlebbar.
In Zeiten von Millennials und Digital Natives stehtdie Work-Life-Balance vor klassischem Status- und Hierarchiedenken. Doch während Zufriedenheit und Glück kommen und gehen (können), streben die meisten nach etwas Bedeutungsvollem. Was aber motiviert den Einzelnen und wie gewährleistet der Arbeitgeber, dass diese Individuen auch als Team funktionieren?
Dieser Vortrag stellt verschiedene Mitarbeitertypen vor und wie man diese am besten persönlich und fachlich weiterentwickeln kann. Darüber hinaus werden mögliche Konfliktpotenziale angesprochen, wie man toxische Teammitglieder erkennt und am besten mit ihnen umgeht.
Agil arbeiten kann jeder? Reicht es zu wissen, wie Scrum, Kanban und Konsorten funktionieren, oder braucht es doch mehr dazu? Um wirklich agil zu arbeiten, werden Freiräume benötigt: Homeoffice, flexible Arbeitszeiten oder auch Rückzugsorte am Arbeitsplatz, um alleine oder in kleinen Gruppen für ein paar Stunden konzentriert arbeiten zu können. Wände müssen mit Haftnotitzen, Flipcharts oder Postern beklebt werden können und Zimmerpflanzen oder Plakate des Lieblingsfilms schaffen eine Wohlfühlatmosphäre. Förderung der Kreativität am Arbeitsplatz wird großgeschrieben. Diese und weitere Anforderungen wie „Own Laptop“, die Freiheit, als Team selbst Entscheidungen treffen zu können, das Vorleben eines Agile Mindsets und was insbesondere das Management tun kann, erläutert Christian Schneiker, Agile Coach bei Cegeka Deutschland, in seinem Vortrag. Dabei gibt er konkrete Beispiele, wie er in seiner Rolle als Coach Unternehmen geholfen hat, eine agile Arbeitsatmosphäre zu schaffen und die Teams in ihrer täglichen Arbeit zu unterstützen.
„Müssen wir jetzt auch noch Codereviews machen?“ „Müssen nicht, Ihr dürft!“. Team und Qualität profitieren davon, wenn Codereviews fest in den Entwicklungsprozess integriert sind. Codereviews bieten einfach zu viele Vorteile, um diese Technik im Alltag zu ignorieren. Meist fehlt die zündende Idee, wie einfach sie auf die Straße zu bringen sind. Wir räumen mit gängigen Klischees auf. Codereviews dürfen Spaß machen und wir werden sehen, wie das geht. Weder Code, Qualität noch das Team müssen auf der Strecke bleiben. Warum also warten?! Los gehts!
Jeder, der schon einmal ein Projekt aufgesetzt hat, kennt die Frage: "Was kostet der Spaß?" Das gilt genauso für agile Projekte. Da die Anforderungen an das zu entwickelnde Produkt in der Regel zu Beginn nicht vollständig bekannt sind und sich die Anforderungen während des Projekts verändern werden, ist eine Aussage bezüglich der zu erwartenden Kosten häufig schwierig. Und kaum ist die Frage nach den Projektkosten geklärt, kommt oft schon die nächste: "Wie hoch sind die Releasekosten?" Um sein Produkt (weiter-)entwickeln zu können, braucht ein Product Owner Geld und Mitarbeiter. In den meisten Unternehmen bedeutet das heute, ein Budget zu benennen und dieses freigegeben zu bekommen. Daher ist es für den Product Owner wichtig, schnell und mit vertretbarem Aufwand zu einer Budgetabschätzung zu kommen, um überhaupt die Chance zu erhalten, Teams und Nutzer inspirieren zu können. Im Rahmen des Vortrags lernen Sie Ansätze und Praxiserfahrungen kennen, die dabei helfen können, Antworten auf die ungeliebte Budgetfrage zu finden.
Zum Abschluss des Agile Days bietet sich Gelegenheit, mit den Sprechern des Agile Days zu diskutieren und die wichtigsten Fragestellungen, die sich im Laufe des Tages ergeben haben, zu vertiefen. Besonders wichtig dabei: Die abschließende Diskussion bietet allen Teilnehmern Gelegenheit für Diskussionsbeiträge und Feedback.
Sebastian Meyen, Program Chair, begrüßt die Teilnehmer der W-JAX 2018, führt in das Programm ein und gibt wichtige Hinweise zum Ablauf der Konferenz.
Production hates you. The machines, the networks, the very users you hope to provide a service hate you. This is reality, and it makes production a hostile battle ground. In this talk, Russ Miles, CEO of ChaosIQ, will talk about how to turn this pain to your advantage. Following on from his popular “Why don’t we learn?” talk it is now the time for the sequel.
Through a sequence of case studies, personal stories and code examples (as well as guitar!?) Russ will share with you how sociotechnical systems like your DevOps teams improve through stress, turning this pain to their advantage through learning loops so that it is no longer about “how do we avoid the pain” but rather “how do I embrace and thrive on more”.
Monolithen oder Microservices - das ist die Frage. Dieser definitive und völlig objektive Shoot-out zeigt anhand verschiedener Kriterien wie Migration, Wartbarkeit, Nachhaltigkeit, Änderbarkeit und Komplexität, ob Microservices oder Monolith die passende Architektur für das nächste Projekt sind.
Machine-Learning-Star Andrej Karpathy beschreibt neuronale Netzwerke als Software 2.0. Also die neue Art zu Software zu entwickeln, die die klassische Art nicht ersetzen, sondern ergänzen wird. Passend dazu zeige ich in diesem Talk, wo uns als Softwareentwickler Machine Learning begegnet, wo sich der Ansatz von Machine Learning grundsätzlich von dem der Softwareentwicklung unterscheidet und wo es Parallelen gibt. Wir werden dabei die unterschiedlichen Arten des Machine Learnings diskutieren, was diese auszeichnet, wie sie sich unterscheiden und welche Anwendungspotentiale in ihnen stecken. Dabei wird kein Wissen über Machine Learning vorausgesetzt.
Im Domain-driven Design ist es sehr wichtig, ein gutes Domänenmodell zu haben. Allerdings wird nirgendwo so wirklich erklärt, wie man zu solch einem guten Modell kommen kann. Hier schafft Event Storming Abhilfe. Das ist eine Technik, mit der man seine Domäne Schritt für Schritt erforschen, erweitern und verfeinern kann - und das innerhalb eines einzigen Tages! Gleichzeitig wird noch jede Menge Domänenwissen von den Domänenexperten zu den restlichen Projektbeteiligten transportiert und von allen gemeinsam hinterfragt und vertieft. Beim Modellieren lassen sich sehr einfach und schnell verschiedene Szenarien ausprobieren, man kann mehrere Varianten gegeneinanderstellen und vergleichen, um so die beste Lösung zu finden - und das ganz ohne eine Zeile Code zu schreiben. Trotzdem sind die Modelle sehr nah am Code und an der Logik. Dabei werden keine langweiligen UML-Diagramme gezeichnet, sondern mit Post-Its an einer riesigen Modellierungsfläche gearbeitet, sodass alle involviert sind. Der Vortrag möchte einen Vorgeschmack davon geben, wie Event Storming in der Praxis aussieht.
Die 2016 gegründete und inzwischen in der Eclipse Foundation beheimatete Initiative MicroProfile ist angetreten, die Lücke zwischen dem Enterprise-Java-Standard (Java EE a.k.a. Jakarta EE) und den Praxisanforderungen Microservices-basierter Architekturen zu schließen. Das bestehende Momentum der JEE-Community als Hebel nutzen und organisch um den Bedarf der Microservices-Community ergänzen, so der Plan. Und dieser Plan scheint aufzugehen. In nur wenigen Monaten ist es gelungen, eine Reihe sinnvoller Microservices-relevanter APIs mit bestehenden Java EE 7/8 APIs zu kombinieren und diese in regelmäßigen MicroProfile-Releases zu veröffentlichen. Egal ob Health Check, Metrics, Fault Tolerance, JWT Propagation, Configuration, Tracing oder Open API, MicroProfile scheint die richtigen Antworten – sprich APIs – im Gepäck zu haben. Die Session zeigt den aktuellen Stand von MicroProfile und demonstriert dessen Mehrwert anhand praktischer Beispiele.
Viele Product Owner und Teams kämpfen mit ihren wild gewachsenen Backlogs, die ihnen zunehmend die Reaktionsfähigkeit rauben. Meist nutzen sie Tools wie JIRA, um der unübersichtlichen Menge an Einträgen Herr zu werden. Doch Tools verschleiern die Probleme oft nur: Immer wieder sondiert man in der stetig wachsenden Liste die relevanten Einträge von Karteileichen, seitenlang beschriebene und kommentierte Tickets erscheinen so "wertvoll", dass man sie nicht löscht und Konsolidieren zu aufwendig ist.
Der Vortrag zeigt Probleme, Lösungsansätze, Tipps und Erfahrungen aus der Praxis, die bei einer effizienten Backlog-Pflege unterstützen. Im Fokus stehen konkrete Techniken, die uns beim Starten sowie beim Fortschreiben zu einem sauberen, übersichtlichen Backlog verhelfen. Wir sehen, wie wir das üblicherweise flache Backlog mithilfe offensichtlicher Kriterien strukturieren. Wir betrachten Aktivitäten wie das Akzeptieren, das Verfeinern, das Sortieren sowie das Selektieren explizit und gelangen so zu einfachen Pflegeregeln.
Das Open-Source-Projekt Fn wurde unter der Apache-2.0-Lizenz auf GitHub veröffentlicht und es siedelt sich im Bereich der Container-Native-Serverless-Plattform an. In der Kategorie Function as a Service (FaaS) ist die Lauffähigkeit von Fn für Laptop und Server oder mit jeder Cloud-Umgebung gegeben. Mit Fn werden verschiedene Programmiersprachen unterstützt, für Java-Entwickler steht das spezielle Java Functions Developer Kit (FDK) auf Basis des JDK 9 zur Verfügung und andere Programmiersprachen wie Go, Ruby, Python, PHP, Rust und Node.js werden ebenfalls durch FDKs unterstützt.
Fn unterstützt das AWS-Lambda-Format, sodass Importe ebenfalls nutzbar sind. Bei Fn läuft jede Funktion in einer eigenständigen VM, jeweils mit einem eigenen Docker-Container im gemeinsamen Pool. Durch den Fn-Hot-Functions-Mechanismus wird die schnelle Ausführung von neuen Funktionen nach Bedarf gewährleistet. Im Vortrag werden die Projektbestandteile Fn Server, das Java FDK und Fn Flow vorgestellt und demonstriert.
Der Trend hin zu Docker ist nach wie vor ungebrochen. Infrastructure as Code ist aus der IT-Welt nicht mehr wegzudenken und wird zunehmend integraler Bestandteil der Softwareentwicklung. Im Rahmen des Vortrags werden die Grundlagen zu Docker praxisnah vermittelt, sowie u. a. auf Themen wie Netzwerke, Data Volumes und Multi-Container-Applikationen eingegangen. Abschließend wird der exemplarische Einsatz von Docker in der Webentwicklung sowie die möglichen Fallstricke bei der Nutzung von Docker Stack anhand einer Microservices-Architektur gezeigt.
DevOps ist sicher nicht nur ein Hype, sondern fordert ein, was schon lange überfällig war. Wenn es aber schon lange überfällig ist, wo liegen die Gründe dafür, dass es bisher nicht verbreitet eingesetzt wird? Wie immer gibt es nicht nur den einen Grund, trotzdem lassen sich aus der Praxis Schlüsselfaktoren identifizieren. Profitieren Sie von den Erfahrungen der T-Systems bei Aufbau und Nutzung von DevOps in Private- und Public-Cloud-Umgebungen und erfahren Sie mehr über die für DevOps notwendigen Eigenschaften von Anwendungen, Infrastruktur und Toolchain und wie diese möglichst einfach hergestellt werden.
Your application might have the following issues:
The way to approach this is to think of State Management. Redux as an architectural pattern offers us a way to make sure that data flows in one direction. It also introduces immutable changes which makes the code more predictable. There are different implementations of Redux though, so let's look at the leading implementation NGRX but also contrast it to NGXS.
This talk will help you understand the problem but also what solutions are out there and their pros and cons.
Data Science ist in aller Munde, wenn es darum geht, aus Geschäftsdaten neue Einsichten zu gewinnen. Warum nutzen wir als Softwareentwickler Data Science nicht auch für die Analyse unserer eigenen Daten? In dieser Session stelle ich Vorgehen und Best Practices von Data Scientists vor. Wir sehen uns die dazugehörigen Werkzeuge an, mit denen sich auch Probleme in der Softwareentwicklung zielgerichtet analysieren und kommunizieren lassen. Im Live-Coding mit Jupyter, Pandas, jQAssistant, Neo4j und Co. zeige ich, welche neuen Einsichten sich aus Datenquellen wie Git-Repositories, Logfiles, Qualitätsberichten oder auch direkt aus Java-Programmcode gewinnen lassen. Wir suchen nach defektem Code, erschließen No-Go-Areas in Anwendungen und priorisieren Aufräumarbeiten.
Verantwortungsbewusste Entwicklungsteams (und/oder Softwarearchitekten) versuchen kontinuierlich, Chancen und Risiken frühzeitig zu erkennen und geeignete Maßnahmen einzuleiten. In diesem Vortrag zeige ich Ihnen mit einem Augenzwinkern, wie das in der Praxis funktioniert. Sie lernen einige typische Verhaltensmuster (gute und schlechte) kennen, die Ihnen praxisgerechte Wege zu besseren Softwarearchitekturen und produktiverer Zusammenarbeit im Team aufzeigen – wirkungsvoll, zeitlos und
technologieneutral.
Serverless heißt, sich nicht mehr um die darunter liegende Infrastruktur kümmern zu müssen. Doch muss ich mich auch nicht mehr um die Sicherheit meiner Anwendungen kümmern? Oder muss ich mich erst recht und noch verstärkt damit beschäftigen? Berechtigungen auf und für Ressourcen, Verschlüsselung von Daten, Netzwerk-Layern, Intrusion Detection, Thread Modelling, Meltdown und Spectre - Themen, die gerade in Cloud-Umgebungen einen besonders sensiblen Umgang erfordern. Welche Möglichkeiten uns in der Cloud zur Verfügung stehen und welche Pflichten wir haben, um uns sicher nicht mehr mit der Verwaltung unserer Infrastruktur auseinandersetzen zu müssen und dennoch ruhig schlafen können, darüber reden wir in diesem Talk.
Der Einstieg in Kotlin fällt den meisten Java-Entwicklern nicht schwer. Die neue Syntax für Klassen, Funktionen und Properties ist schnell verinnerlicht. Andere Sprachfeatures wie Lambdas with Receiver, Delegated Properties und Reified erschließen sich nicht ganz so einfach. Mit diesen und weiteren Innovationen ist es möglich, die eigenen Basisfunktionalitäten so umzusetzen, dass der fachliche Code kompakt und elegant aussieht. Dieser Vortrag zeigt anhand von vielen Codebeispielen, welche erweiterten syntaktischen Möglichkeiten Kotlin bietet und wie man diese sinnvoll einsetzt.
Verteile Anwendungen wie Microservices verlagern einen Teil der Komplexität in das Zusammenspiel der Services untereinander. Ein solches Service Mesh, das bis zu dreistellige (oder mehr) Laufzeitinstanzen haben kann, wird sehr schwierig zu beherrschen. Man muss sich mit Fragen auseinander setzen wie zum Beispiel: Welcher Service wird von welchem Service in welcher Version bei welchem Request-Inhalt wie oft aufgerufen? Wie kann man das Zusammenspiel testen und wie werden einzelne Services durch neue ersetzt?
Diese und andere Fragestellungen werden in der Session beleuchtet. Dabei werden auch Werkzeuge vorgestellt, die das Leben mit dem Service Mesh vereinfachen sollen.
Firstly, we will focus on paradigms and use cases for Hadoop systems and how they have evolved over the last few years. Originally designed for batch processing only, they have evolved into a much more general platform for solving real-time use cases. Such platforms are often prerequisites for further data analysis.
The second part of the talk will be dedicated to predictive modelling. The big data in many domains (especially banking and telecommunications) mostly consist of very large transaction datasets. Each transaction (payment, call, text, message, etc.) is a small piece of evidence of the existence of a hidden link between the subjects on both sides of the transaction. By processing data carefully, we can aggregate this evidence and find those links. Where there are links, there is a network - a network built on implicitly expressed preferences. In our research program, we focus on mining business knowledge from such networks.
Auf Webtechnologien basierende Anwendungen sind oft noch mit dem Vorurteil behaftet, der darunter liegende Quellcode würde sich hinsichtlich Lesbarkeit, Design und Testabdeckung qualitativ auf einem eher niedrigen Level befinden. Qualitativ hochwertiger Quellcode ist jedoch technologieunabhängig und kann durch entsprechende Vorgehensweisen erreicht werden. Eine bewährte Methodik, gut strukturierten und getesteten Code zu entwickeln, ist die testgetriebene Entwicklung (TDD). Angular bietet alle dafür notwendigen Werkzeuge bereits von Haus aus an. Wir demonstrieren anhand eines praktischen Beispiels und Live-Codings die testgetriebene Entwicklung einer Angular-App und wie dabei Akzeptanzkriterien iterativ spezifiziert und implementiert werden. Dabei gehen wir auch auf die verschiedenen Ebenen der Testpyramide ein, wie Unittests, Integrationstests und End-to-end-Tests.
Microservices architecture has many benefits but it comes at a cost. Running microservices and monitoring what’s going on is tedious. That’s why MicroProfile adopts monitoring as a first class concept. In this session, learn how MicroProfile runtimes collect metrics and how to seamlessly collect them with tools like Prometheus and Grafana. Learn how MicroProfile makes it easy to connect information about interrelated service calls, how to gather the information and analyze system bottlenecks, how to deploy and scale MicroProfile applications with Kubernetes and how to react to their health status to detect and automatically recover from failures.
The first lines of code of the online shop that powered Lidl.de were written ten years ago. Since then, we grew from one collocated single development team to over twenty development teams working from four different countries. We made it to the top 10 of e-commerce platforms in Germany and started splitting our backend services in order to scale. But that is not enough and in order to keep growing, we are propagating the microservice evolution to the frontend to keep up with innovation, and enable truly autonomous end-to-end teams. This talk will explore what Micro Frontends are, how Lidl Digital is implementing the architecture in the replatforming called Mindshift and what challenges we had along the way.
Stream processing affects a wide range of industries today: capturing sensor data, connecting microservices, processing the workloads of internet giants, and giving us a real-time alternative to batch analytics. While these use cases are exciting and valuable, they are only a taste of what is to come. In this talk, we’ll look at streaming platforms from a number of different points of view and explore where the field is going next with support for global applications that span regions and clouds, patterns that evolve from event storage and the interplay between stream processing and serverless ecosystems.
Angular ist ein vielversprechendes Framework, aber wie verwendet man es optimal? Welche Fallstricke gilt es zu vermeiden, damit auch in der Produktion alles reibungslos läuft? Dieser Vortrag basiert auf den Praxiserfahrungen aus rund zwei Jahren Entwicklung mit Angular: Vom Design bis zum produktiven Betrieb mehrerer Systeme. Neben Tipps zum API-Design geht es um Integration von Komponenten von Drittanbietern, Komponentenschnitt und Diagnose der Anwendung. Dieser Vortrag richtet sich an Softwareentwickler und Architekten, die an Best Practices und wertvollen Tipps und Tricks für eigene Projekte mit Angular interessiert sind.
Für zukunftssichere, datenlastige Systeme führt heute kein Weg mehr an Themen wie NoSQL, Stream Processing, Spark, Hadoop oder Kafka vorbei. Doch wie lassen sich die Tools aus dem Big-Data-Ökosystem zu einer leistungsfähigen Datenarchitektur integrieren? Welche Rolle spielen dabei meine bestehende Oracle-Datenbank und mein Data Warehouse? Dieser Vortrag gibt einen Überblick über die Möglichkeiten von Big-Data-Technologien, den möglichen Integrationsszenarien zwischen Ihrem Data Warehouse und Hadoop und stellt Streamingarchitekturen vor. Zuletzt werden zehn klassische Stolpersteine in der Architektur von Big-Data-Anwendungen aufgezeigt.
Dieses Jahr feiert die Open-Source-Bewegung ihren 20. Geburtstag. Die englischsprachige Wikipedia beschreibt Open-Source-Entwicklung als kollaborative Softwareentwicklung unter Einbeziehung mehrerer unabhängiger Teilnehmer. In den vergangenen Jahrzehnten haben sich OSS-Projekte entwickelt, die erfolgreich Firmen-, Organisations-, Zeitzonen- und geographische Grenzen überwinden. Insbesondere die, die selbst in OSS-Projekten aktiv sind, bringen Kollaborationsmuster, die sich in OSS Projekten bewährt haben, immer wieder auch in ihre In-house-Entwicklungsteams ein. Nicht selten stellen sie damit eine Ergänzung zu klassischen agilen Methoden her, insbesondere da, wo es um die Themen Skalierung, Miteinander und minimale Dokumentation geht. Im vergangenen Jahr hat die Europace AG, ein FinTech aus Berlin, InnerSource als Pilot eingesetzt, und zwar in enger Zusammenarbeit mit http://innersourcecommons.org, einer internationalen, organisationsübergreifenden Initiative mit dem Ziel, InnerSource-Muster, die bewährten OSS-Methoden für Softwareentwicklung, Zusammenarbeit und Transparenz zur Verbesserung von Qualität, Geschwindigkeit und Developer Joy, in Unternehmen zu bringen. Dieser Vortrag wird seine Zuhörer mitnehmen auf eine Reise von einer vagen Vorstellung von InnerSource über eine Organisation, die OSS-Kollaborationsmuster auch intern anwendet, bis hin zu einer Organisation, in der Entwickler zunehmend selbst Upstream in Open-Source-Projekten aktiv werden.
Reaktive Programming ist in der Enterprise-Java-Welt angekommen. Frameworks wie Akka und RxJava waren da Vorreiter, mit dem Reactive-Web-Framework von Spring 5 mit Project Reactor ist ein weiteres prominentes dazugekommen. Aber was steckt eigentlich hinter Reactive Programming? Wann ergibt der Einsatz Sinn und wie kann ich es in bestehende Anwendungen integrieren? Die Session gibt eine kurze Einführung in das Programmiermodell, zeigt, was in Java 9 standardisiert wurde und stellt verschiedene Möglichkeiten vor, auch in älteren Anwendungen, die z. B. auf Java EE (6/7/8) basieren, Teile reactive umzusetzen. Außerdem wird ein Ausblick auf die (reactive) Zukunft gegeben. Dabei wird z. B. ein Überblick über den aktuellen Stand der Diskussion um ein reactive API in JAX-RS und einen reactive JDBC-Treiber gegeben.
Die schöne neue Welt von Agile, DevOps, InnerSource und den damit verbundenen Werkzeugen erschließt sich Entwicklern oft aus anderen Gründen als der Projektleitung oder dem Management. Wie kann man teamübergreifend feststellen, welche Maßnahmen tatsächlich ökonomisch Sinn ergeben? Unser Vortrag stellt Argumentationshilfen und Metriken vor, auf die sich Programmierer und Management in mehreren deutschen Großunternehmen bei der Erfolgsevaluierung geeinigt haben. Außerdem räumen wir mit den größten Berührungsängsten zu InnerSource, dem Einsatz von Open-Source-Entwicklungsprozessen im Unternehmensumfeld, auf.
Die Erstellung neuer Machine-Learning-Modelle ist nicht trivial, nicht für Entwickler und in einigen Fällen selbst nicht für Data Scientists. Um AI in Applikationen zu nutzen, muss man Modelle aber nicht unbedingt komplett selbst erstellen. Mittlerweile werden kognitive Services wie Spracherkennung und Natural Language Understanding von verschiedenen Cloud-Providern angeboten, die auch ohne Machine Learning Skills angepasst werden können. Darüber hinaus gibt es Marktplätze mit vordefinierten Modellen, die als Startpunkt für individuelle Bedürfnisse benutzt werden können.
In diesem Vortrag wird anhand eines Bilderkennungsbeispiels gezeigt, wie man mit vordefinierten neuronalen Netzen und Transfer Learning einfach eigene Modelle erstellen kann. Anschließend werden verschiedene Deployment-Varianten gezeigt, wie zum Beispiel das Deployment der Modelle auf Kubernetes und IBM Watson Studio, sodass Applikationen über REST APIs Prognosen machen können. Im letzten Teil dieses Vortrages wird dann demonstriert, wie Modelle auf mobilen Endgeräten und Browsern mit TensorFlow Lite und TensorFlow.js effizient verwendet werden können.
Während der Entwicklung wird kaum Aufwand für die Implementierung von fachlichen Metriken oder Monitoring vorgesehen. Meistens können doch mit wenig Aufwand gut aussehende, animierte Diagramme, Tabellen und Dashboards nachträglich generiert werden. Leider lassen sich nur selten, auch mit dem Einsatz von Magie und KI, aussagekräftige, fachliche Metriken erstellen.
In diesem Vortrag werden Applikationsserver, Java EE und MicroProfile Monitoring/Metriken/Alerts mit wenig Aufwand, kaum Code aber mit möglichst viel Mehrwert für die Monitorierbarkeit, Betreibbarkeit und Wartbarkeit der Anwendung live, on-stage implementiert. Integration mit Prometheus, Grafana und Co. inklusive.
Fragen der Teilnehmer sind jederzeit willkommen.
Continuous Delivery in Unternehmen geht mit vielen Herausforderungen einher, die sich direkt auf den Erfolg Ihres Unternehmens auswirken. Langsame manuelle Prozesse, Schwierigkeiten bei der Verwaltung des wachsenden IT-Portfolios, mangelnde Transparenz und Kontrolle, die Einhaltung gesetzlicher Auflagen und sich ändernde Complianceanforderungen. Auch die Stärkung der Kommunikation zwischen den Delivery-Teams erfordern eine Ebene, die die Teams und Technologien an eine Zusammenarbeit heranführt, um schneller bessere Apps zu erstellen. In diesem Vortrag erhalten Sie einen Überblick über die typischen Herausforderungen und Hindernisse im heutigen, sich schnell verändernden Geschäft und wie Sie Continuous Delivery von der alten Welt ihrer Legacy-Applikationen bis hin zu modernen Applikationsarchitekturen wie Microservices etablieren können.
The way we design, develop, and run applications on Cloud Native platforms like Kubernetes differs significantly from the traditional approach. When working with Kubernetes, there are fewer concerns for developers to think about, but at the same time, there are new patterns and practices for solving every-day challenges. In this talk, we will look at a collection of common patterns for developing Cloud Native applications. These patterns encapsulate proven solutions to common problems and help you to prevent reinventing the wheel. After a short introduction into the Kubernetes platform we will look at the following pattern categories: Foundational Patterns that build the basis of the Kubernetes platform, Behavioral Patterns that describe concepts for different types of applications, Structural Patterns that are for structuring your Cloud Native application, Configuration Patterns that provide various approaches to application configuration. In the end, you will have a solid overview how common problems can be solved when developing Cloud Native applications for Kubernetes.
Die aktuellen Releases von JAX-RS und CDI bieten einige interessante Neuerungen für API-Entwickler, wie etwa Unterstützung für HTTP PATCH, Server-sent-Events oder asynchrone CDI-Events. In Kombination mit dem neuen JSON-B geht die Implementierung von APIs noch leichter von der Hand. Auch das neue, reaktive Client-API von JAX-RS stellt ein interessantes neues Feature dar. In dieser Live-Coding-Session wird eine prototypische Anwendung entwickelt, die den Einsatz der neuen Features veranschaulicht.
Unveränderliche Datenstrukturen sind ein wichtiges Werkzeug der funktionalen Programmierung. Aber auch abseits dessen können Immutables ungemein nützlich sein: Richtig angewandt erhöhen sie die Verständlichkeit des Codes, da Entwickler nicht mehr auf die mühsame Suche gehen müssen, an welcher Stelle ein Objekt möglicherweise ungewollt verändert wurde. Darüber hinaus sind Immutables inherent Threadsafe und können auch hier die Nachvollziehbarkeit des Codes erhöhen. Da Java als Sprache aber keine besondere Unterstützung für Immutables mitbringt, müssen Entwickler auf Patterns und Bibliotheken zurückgreifen, um in den Genuss von unveränderlichen Datenstrukturen zu kommen. Denn natürlich müssen auch in funktionalen Programmen letztlich Veränderungen der Daten abgebildet werden, und dafür bedarf es geeigneter Unterstützung. In diesem Vortrag möchte ich neben einer grundsätzlichen Einführung in die Thematik auch einige dieser Techniken vorstellen und ihre Vor- und Nachteile besprechen.
Start-ups sind agiler und innovativer. Wir müssen wie ein Start-up denken und arbeiten. Haben Sie das auch schon gehört? Wir reden von Product Owner und Product Backlog und haben immer noch Projekte. Den Produktgedanken in den Mittelpunkt stellen, geht das? Wie schafft man einen Mindset Change vom Projekt zum Produkt? Man nehme ein paar Mitarbeiter, eine Menge Motivation und kombiniere beides zu innovativen Lösungen. Das geht nicht? Und wenn man es doch macht? Wie entstehen mit Design Thinking, Scrum und weiteren agilen Methoden innovative Produkte? Warum steht das Produkt im Mittelpunkt und nicht das Projekt, und warum bedingt das DevOps? In diesem Vortrag versuchen wir Antworten auf diese Fragen zu geben.
In diesem Vortrag zeigen Ralf und Gernot anhand eines (kleinen aber) realen Projekts, wie Sie Schritt für Schritt den Docs-as-Code-Ansatz verwirklichen können. Von Anforderungs- und Architekturdokumentation bis hin zu Developer-Guidelines ist alles einfach, pragmatisch und zum direkten Konsum („wiederverwenden“) geeignet. Sie erleben (live), wie Sie mehrere Dokumentationsartefakte kombinieren können, für verschiedene, zielgruppenunterschiedliche Ausgaben generieren und plattformübergreifend nebenbei noch eine Website für Ihre Doku zaubern können. Neben diversen Good Practices zeigen Ralf und Gernot auch die Probleme und Grenzen einiger Ansätze auf. Format: Viel Demo, wenige Slides, Github-Repository zum selbst ausprobieren.
Sind Sie müde, tausend Zeilen Code auf das nächste gehypte JavaScript-Framework zu migrieren? Verstrickt in technologische Abhängigkeiten und ständig mit der Wartung von Legacy-Code beschäftigt? Warum nicht auch im Frontend vom Microservice-Ansatz profitieren, den schon so viele erfolgreich in ihren Backend-Systemen anwenden?
1976 sang ABBA "Breaking up is never easy, I know" im Hinblick auf das Ende einer Beziehung. Aber auch einen über viele Jahre gewachsenen Frontend-Monolithen zu splitten ist keine leichte Aufgabe.
Um diese Herausforderung dennoch erfolgreich zu meistern, wird die Session Ihnen verschiedene Ansätze vorstellen und auf ihr Potential hin untersuchen. Hierbei legen wir besonderes Augenmerk auf die Technologieunäbhägigkeit und behalten stets den Benutzer im Auge. Gängige Hindernisse räumen wir gemeinsam aus dem Weg, um so eine langlebige und zukunftssichere Frontend-Architektur auf die Beine zu stellen.
How can you leverage the flexibility and extreme scale in the public cloud combined with your Apache Kafka ecosystem to build scalable, mission-critical machine learning infrastructures, which span multiple public clouds or bridge your on-premise data centre to cloud? This talk will discuss and demonstrate how you can leverage technologies such as TensorFlow with your Kafka deployments to build such a machine learning infrastructure for ingesting, preprocessing, training, deploying, and monitoring analytic models.
The discussed architecture will include capabilities like scalable data preprocessing for training and predictions, combination of different Deep Learning frameworks, data replication between data centres, intelligent real time microservices running on Kubernetes, and local deployment of analytic models for offline predictions.
Rechner an, Browser auf und…touch down! In diesem Talk werfen wir einen Blick auf die Frontend-Technologien Angular, TypeScript und Material Design und diskutieren Möglichkeiten und Grenzen des Interaktionsdesigns. Dabei werden wir konkret und berichten aus unseren Praxiserfahrungen bei der Entwicklung von kartenbasierten Webanwendungen, die für Multitouch-Tische konzipiert wurden. Lasst Euch davon überzeugen, dass sich Web im wahrsten Sinne des Wortes nach Rich Client anfühlen kann.
Wir haben eine API-Plattform in der Cloud gebaut, die verschiedene Kanäle bedient, wie beispielsweise Mobile Apps und Webportale. Wir wollen darüber sprechen, warum wir uns entschlossen haben, die Anwendung „Serverless“ auf Basis von AWS zu implementieren, welche Herausforderungen wir dabei meistern mussten und welche Vorteile wir dadurch erzielen. Wir werden die allgemeine Architektur, den Technologiestack und den Build-Prozess vorstellen. Außerdem werden wir darüber sprechen, wie ein Lock-in mit der Wertschöpfung für den Kunden und den Endanwender in Einklang gebracht werden kann.
Die schönste Software bringt nichts, wenn neue Benutzer sie nicht verstehen oder (speziell im Web) gleich wieder abspringen. Mit explizitem User Onboarding steigert Ihr die Wahrscheinlichkeit, dass neue User Erfolg bei der Adoption Eures Produktes haben. User sind sehr unterschiedlich: Manche müssen erst das Problem genau verstehen, andere sind schon tief drin und möchten gleich die Features der Software sehen. Wieder andere möchten erst einmal in Aktion gehen und kleine Erfolge sehen, bevor sie sich tiefer mit der App auseinandersetzen. Wir müssen alle am richtigen Punkt abholen und uns den Weg merken, den sie bisher mit unserer App gegangen sind. Matthias Bohlen geht in dieser Session mit Euch systematisch durch die Schritte, die neue User brauchen, um den Job machen zu können, den sie mit der Software erledigen wollen. Er zeigt Euch seine Methodik "Stateful Onboarding", um einen User auf dem Weg vom Newbie zum Gewinner zu begleiten. Matthias zeigt dabei auch Sourcecode-Snippets eines realen SaaS-Startups (mit Backend in Java und Frontend in Typescript/React), sodass Ihr sehen könnt, wie Software mit Stateful Onboarding geschrieben wird.
Dieser Talk zeigt die sieben größten Probleme bei der Verankerung von Security in agilen Projekten auf. Basierend auf Erfahrungswerten aus der Securityberatung erfahren Sie aus erster Hand, auf welche erwarteten (und unerwarteten) Hürden Sie treffen können. Hierbei handelt es sich um technische, organisatorische, prozessorientierte sowie Skill-bezogene Themen, mit denen sich Teams bei der nachhaltigen Verbesserung der Sicherheit in ihren Projekten konfrontiert sehen. Als inhaltlichen Takeaway erhalten Sie jeweils passgenaue Lösungsmuster, die ebenso für Großunternehmen wie auch für spezialisierte Dienstleister anwendbar und effektiv sind.
Der Deutschen liebstes Kind ist nicht etwa der Hund oder das Auto, sondern ganz eindeutig der Tatort am Sonntagabend. Wenn man die App waipu.tv entwickelt, mit der die Kund*innen fernsehen und Aufnahmen machen können, ist diese Erkenntnis von entscheidender Bedeutung. Denn wie stellt man es an, dass sowohl das Backend als auch die Entwickler*innen während dieser Lastspitzen nicht ins Schwitzen kommen? Der Vortrag zeigt einige Best Practices aus dem realen Leben und könnte dabei Spuren von Microservices, DevOps, AWS, Monitoring, GitLab CI, Terraform etc. enthalten.
Seit dem Release von Java 9 hat Oracle ein Rapid-Release-Modell für neue Java-Versionen etabliert. Im halbjährlichen Rhythmus kommen jetzt neue Featurereleases. Um nicht im Supportwahnsinn zu versinken, wird Oracle nur noch bestimmte Versionen langfristig unterstützen. Das erste dieser LTS-Releases ist Java 11, welches Java 8 als letztes klassisches Release mit langfristiger Unterstützung beerbt hat. Es ist also an der Zeit, dass wir Java-Entwickler uns einen Überblick über die Neuerungen der vergangenen drei Major-Releases verschaffen. Lässt man das Modulsystem (JPMS/Jigsaw) außer Acht, haben die Java-Versionen 9 bis 11 nämlich noch viele andere, spannende Änderungen mitgebracht. Neben den Sprachänderungen wie "Local Variable Type Inference" möchten wir einen genauen Blick auf die vielen kleinen Erweiterungen der JDK-Klassenbibliothek werfen.
Moderne Webanwendungen werden meist als als Single-Page-Anwendung mit JavaScript oder TypeScript gebaut, um für Anwenderinnen und Anwender das bestmögliche Verhalten zu erreichen. Gerade bei größeren und langlebigen Single-Page-Anwendungen hat es aber einen Reiz, das Frontend in kleinere Teile aufzuspalten, die von unterschiedlichen Teams autonom entwickelt werden können. In diesem Vortrag wollen wir die aus unserer Sicht zentralen Szenarien für solche Micro Frontends herausarbeiten. Wir wollen noch nicht zu viel verraten und es spannend halten, aber ein Königswegs ist weiterhin nicht in Sicht. Deswegen schauen wir uns verschiedene Varianten an und prüfen, inwiefern sie sich umsetzen lassen und worin jeweils deren Vor- und Nachteile bestehen.
Cloud Native Development mit Microservices bietet völlig neue Möglichkeiten und Freiheiten, Applikationen zu entwickeln. Mit einer wachsenden Zahl an Services steigen jedoch die Komplexität der Applikationsarchitektur und die Anforderungen an das DevOps-Team. Fragen, die dabei zwangsläufig aufkommen, sind: Wie behalte ich den Überblick über alle Services? Wie gestalte ich meine Applikation fehlertolerant? Wie gewährleiste ich die Sicherheit meiner Services? Wie kann ich fortgeschrittene Deployment-Techniken nutzen, um Zero-Downtime-Updates einzuspielen? Wie verteile ich meine Applikation transparent über mehrere On-Premise und Public Cloud Instanzen?
Diese Punkte und mehr adressiert das Open-Source-Projekt Istio Service Mesh für Kubernetes/OpenShift und stellt damit einen neuen Container Platform Layer für Cloud Native Development dar.
In bürokratisch organisierten Projekten ist die Fachlichkeit schwer zu erkennen. Module, Indirektionen, opionale Erweiterungspunkte, Abstraktionen und Kapselungen verschleiern effektiv die Domäne der Anwendung und erhöhen gleichzeitig die Komplexität des Codes.
In diesem Vortrag wird Adam Bien eine Java EE/MicroProfile-Anwendung implementieren und dabei auf die Organisation des Codes, Packagestruktur, Namenskonventionen, Abhängigkeitsverwaltung und Zyklenbildung eingehen. KISS und YAGNI included. Fragen der Teilnehmer sind jederzeit willkommen
If you have ever used the angular-cli you have been using Schematics.
Schematics is a workflow tool that given a blueprint can apply a transform to your project.
What do we mean by transform? A transform can be an action to for example generate a component, a service or maybe a code update, Schematics is very flexible.
The mission of this talk is to make you understand what schematics is, how it works and how you can build your own schematics for your Angular project.
Die Open-Source-Methoden haben sich in der Softwareentwicklung mehr oder weniger durchgesetzt. Doch das stellt neue Herausforderungen an die Organisation, alte Hierarchien funktionieren nur leidlich in diesem Kontext. Wie man den maximalen Benefit findet wollen wir hier erklären. Ob man es die Open Organisation nennt, wie es der CEO von Red Hat in seinem gleichnamigen Buch tut, ob man es als Social Architecture bezeichnet, wie es Pieter Hintjens tut - es geht darum zu verstehen, wie der Open-Source-Ansatz am produktivsten umgesetzt werden kann.
Wie schütze ich meinen Java-Bytecode vor unerwünschten Manipulationen, Reverse Engineering und Dekompilierung? Diese Frage stellen sich mittlerweile immer mehr Java-Entwickler, denn die JVM-Spezifikation liefert alle nötigen Informationen, um Java-Bytecode in den ursprünglichen Sourcecode zurückzuentwickeln. Kennen Sie JD-GUI, JAD oder auch andere Java Decompiler? Erfahren Sie, wie Sie diesen Tools effektiv entgegenwirken.
Alle schwärmen von der Cloud, aber wie bekomme ich meine alten Applikationen in diese schöne neue Welt? Diese Session beschreibt die Migration anhand einer fünf Jahre alten Webanwendung. Diese wurde mit Wicket realisiert ist und läuft auf einem Jetty 6. Wir werden diese Anwendung Schritt für Schritt "containerisieren" und auf einen Kubernetes-Cluster in der Cloud migrieren. Dabei werden wir sehen, wie diese Migration mit wenig Aufwand vonstatten geht und welche Vorteile sich daraus für Entwicklung und Betrieb ergeben. Am Ende werden wir gelernt haben, dass eine "Containerisierung" nicht nur für Anwendungen von der grünen Wiese sinnvoll ist, sondern dadurch auch Altlasten geschickt verpackt werden können.
SQL ist die einzige erfolgreiche, etablierte und generell anwendbare Programmiersprache der vierten Generation (4GL) und sie ist der Wahnsinn! Mit moderner, kostenbasierter Optimierung können relationale Datenbanken endlich ihr Versprechen einhalten, ein ausdrucksstarkes, deklaratives Programmiermodell auf sich ständig verändernden produktiven Datenständen ohne Performanceeinbußen umzusetzen. Tausendzeilige, komplexe SQL-Befehle können in weit unter einer Millisekunde gegen Milliarden Reihen starke Tabellen laufen, wenn Datenbankentwickler sich mit der SQL-Sprache auskennen - und das Beste ist: Es ist gar nicht so schwierig! In diesem Vortrag zeige ich wie SQL-Datenbanken jegliche von Hand geschriebenen Algorithmen mühelos übertreffen. Oder in anderen Worten: Wie SQL, eine logische Programmiersprache, die beste Sprache für Businesslogik ist.
Dieses Lab bietet einen Rahmen dafür, reaktive Programmierung mit Akka live auszuprobieren – egal ob mit Java oder Scala. Auf Wunsch gibt es konkrete Anregungen und Aufgabenstellungen, vor allem aber die Möglichkeit, mit Features und Architekturideen herumzuspielen, und dabei live auszuprobieren, wie sich widerstandsfähige, elastisch skalierbare Systeme auf Actor-Basis anfühlen.
Am besten Softwareprojekt der Welt mitarbeiten, egal, wo man sich gerade befindet? Architektur- und Designentscheidungen treffen, obwohl man gerade nicht zusammen vor einem Whiteboard mit Filzstiften steht? Knifflige Probleme im Produktionsbetrieb ad hoc zusammen lösen, obwohl man sich nicht mal schnell was über den Tisch zurufen kann? Daily, Review, Retro - von zu Hause aus? Nichts verpassen, obwohl man sich nicht in einem Büro mit anderen Kollegen aufhält? Arbeit erledigt bekommen, obwohl einem der Chef nicht über die Schulter gucken kann? Dieser Talk stellt den Remote-First-Ansatz in unserem Projekt vor, mit dem wir offenbar einen Weg gefunden haben, all diese Fragen mit "ja" beantworten zu können.
Spendiert man jedem Microservice seine eigene Datenbank (Database-per-Service-Pattern), läuft man irgendwann unweigerlich in das Problem verteilter Businesstransaktionen. Die gute alte DB-Transaktion fällt per Definition aus dem Rennen. Als Alternative zur Sicherstellung Service-übergreifender Datenkonsistenz bietet sich u. a. eine Realisierung auf Basis mehrerer lokaler, technischer Transaktionen an, auch Saga-Patterns genannt. Die Session führt in Theorie des Saga-Patterns ein und zeigt an verschiedenen Beispielen dessen praktische Verwendung.
Quantum Mechanics focus on the study of the structure and behavior of subatomic particles, and our world is actually ruled by atomic and subatomic elements which have waves and particles by nature. What does this mean? Well, this might sound interesting (or weird). So in this talk, we will try to learn and clear up these concepts. Join me in this journey and let's dive together into what is Quantum Mechanics and what izt has done for us so far. We will also explore Quantum Computing and its current state.
Es gibt kaum eine Branche, die weiter von der Digitalisierung entfernt zu sein scheint als die Juristerei. So wird seit Jahren um eine digitale Zustellung von Schriftsätzen gekämpft; die technische Lösung dafür – ein signierter E-Mail-Service – funktioniert seit September 2018 nach jahrelangem, peinlichem Ringen. Auf der anderen Seite drängen hochinnovative Unternehmen auf den Markt und schicken sich an, mit AI, KI und ganz viel Know-how die Damen und Herren in der Robe zu ersetzen. Mit Erfolg? Der Vortrag klärt Grundsatzfragen, stellt Ansätze vor und zeigt, wo sich Legal Technology befindet und hinbewegt.
Vergleicht man verschiedene Ansätze, Bounded Contexte zu implementieren, ist eine modulare aber monolithische Applikation oft eine pragmatische Alternative zu Microservices, die viele neue Herausforderungen und Komplexität eines verteilten Systems erzeugen. Dennoch degenerieren die Modularität und Wart- bzw. Erweiterbarkeit monolithischer Applikation über deren Lebenszyklus signifikant.
Der Vortrag identifiziert oft beobachte Phänomene in unstrukturierten Monolithen und diskutiert Ansätze zur Codeorganisation, Komponentenstruktur, dem Paketdesign, Transaktionen und der Nutzung von Events, um die Interaktion zwischen Bounded Contexts zu implementieren. Wir betrachten dann unterstützende Technologien und Features von Spring Boot und dessen Ökosystem, um architektonische Konzepte in modularen, monolithischen Applikationen zu implementieren, um definierte Architektur über die Zeit zu erhalten und eine spätere Aufteilung auf mehrere Systeme vorzubereiten.
Bei aller herrschenden Euphorie über clientseitige JavaScript-Entwicklung mit Unterstützung diverser Frameworks wagt man es kaum laut zu sagen: Die Effizienz sowohl während der Entwicklung als auch während der Wartung ist dürftig. Leidtragende sind insbesondere Geschäftsanwendungen mit einer hohen Anzahl an Dialogen unterschiedlichster Komplexität, mit hohen Anforderungen an eine langfristige Lauffähigkeit und mit einer meist überschaubar großen Entwicklungsmannschaft, die das stemmen darf. In diesem Vortrag werden die Effizienzprobleme einerseits dargestellt und analysiert; andererseits werden konkrete Lösungswege aufgezeigt, die innerhalb der CaptainCasa-Community entwickelt und erfolgreich umgesetzt wurden. Der Vortrag ist gespickt mit einer Menge von Live-Beispielen – schließlich geht’s um ein UI-Thema!
Beim Bauen von Softwaresystemen werden tolle Technologien, Programmiersprachen und Tools eingesetzt. Das ist gut und richtig und außerdem macht es viel Spaß. Dabei verlieren wir immer mal wieder aus den Augen, dass das Entscheidende für den Erfolg unserer Software nicht die Technik ist, sondern der Business Value, den wir für unsere Anwender erzeugen. Haben wir die Anforderungen der Anwender fachlich sinnvoll umgesetzt? Haben wir unsere Software so strukturiert, dass sie ohne viele Umbauarbeiten um neue Funktionalität erweitert werden kann? Skaliert unsere Software, wenn mehr und mehr Anwender anfangen sie zu benutzen? In diesem Vortrag widmen wir uns den verschiedenen Ursachen und Missverständnissen, die unseren Fokus immer wieder vom Business Value weg zur Technik lenken, obwohl wir eigentlich wissen sollten, dass das kontraproduktiv ist.
Auf Basis der Java Virtual Machine hat sich in den letzten zwanzig Jahren eine große Zahl an alternativen Programmiersprachen mit eigener Syntax entwickelt. Sie werden zu JVM-Bytecode kompiliert und können damit auf der ausgereiften und vielfach optimierten JVM ausgeführt werden. In diesem Vortrag wollen wir zwei populäre derartige Sprachen betrachten und miteinander vergleichen: Groovy und Kotlin. Apache Groovy entstand bereits 2003 mit dem Ziel, eine elegantere Syntax mit dynamischen Elementen zu verbinden. Kotlin wurde 2011 erstmalig vorgestellt, im Jahr 2016 erschien die Version 1.0. Die Sprache wird federführend vom Toolhersteller JetBrains entwickelt und addressiert ebenfalls typische Java-Probleme. Beide Sprachen haben viele Features, die über die Möglichkeiten von Java hinausgehen. Hier gibt es erstaunlich viele Gemeinsamkeiten, aber durchaus auch signifikante Unterschiede. Im Einzelnen wollen wir folgende Themen betrachten: Typisierung und Typinferenz; Nullsicherheit; Exceptions; Delegation, Vererbung und Extensions; Properties und Data-Klassen; benannte und Default-Argumente; Collections-Syntax; Operator-Overloading; funktionale Programmierung, insbesondere Higher Order-Functions. Beim Vergleich werden wir immer wieder einen Blick in Richtung der Muttersprache Java werfen. Ziel des Vortrags ist, anhand der angebotenen Sprachkonstrukte zwischen beiden Sprachen abwägen zu können. Vielleicht lohnt es sich ja, eine der beiden im nächsten Projekt einzusetzen.
MongoDB 3.6 hat bereits neue Funktionen wie Change Streams und Sessions bereitgestellt, die Sie und Ihre Anwendung fit für die Zukunft machen. Jetzt bringen Sie MongoDB-4.0-Transkationen auf das nächste Level. In dieser Session erfahren Sie alles zu MongoDB-Sitzungen, Streams, wiederholbaren Schreibvorgängen, reaktivem Zugriff und natürlich Transaktionen. Best Practices, Stolpersteine und nicht zu vergessen Spring Data Support mit Spring Managed Transactions.
Container sind mittlerweile etabliert und sowas wie "Industrie-Standard". Serverless ist der direkte Konkurrent und alle reden irgendwie von "Cloud-Native". Ist Serverless die nächste Evolutionsstufe von Containern und löst diese bald wieder ab? Und wie passt Cloud-Native in den Serverless-Kontext? Zudem gibt es zahlreiche containerbasierte Frameworks, die sich ihrerseits wieder "Serverless" nennen. Ist das wirklich so, oder muss ich dafür nicht doch eine ganze Serverfarm betreiben? Wir werden kontrovers diskutieren - vielleicht aber auch Gemeinsamkeiten feststellen. Es geht nicht unbedingt darum, welche Technologie "besser" ist. Beide Ansätze haben ihre Vor- und Nachteile, und diese muss man kennen, um sie zielführend einsetzen zu können!
Have you ever thought that you needed to be a programmer to do stream processing and build streaming data pipelines? Think again! Apache Kafka is a distributed, scalable, and fault-tolerant streaming platform, providing low-latency pub-sub messaging coupled with native storage and stream processing capabilities. Integrating Kafka with RDBMS, NoSQL, and object stores is simple with Kafka Connect, which is part of Apache Kafka. KSQL is the open-source SQL streaming engine for Apache Kafka and makes it possible to build stream processing applications at scale, written using a familiar SQL interface.
In this talk, we’ll explain the architectural reasoning for Apache Kafka and the benefits of real-time integration, and we’ll build a streaming data pipeline using nothing but our bare hands, Kafka Connect, and KSQL.
Gasp as we filter events in real time! Be amazed at how we can enrich streams of data with data from RDBMS! Be astonished at the power of streaming aggregates for anomaly detection!
Im Alltag einer nativen App-Entwicklung wird oft die Frage gestellt, wie mit ständigen Anforderungsänderungen umgegangen werden soll. Wie kann die Abwärtskompatibilität über Versionen hinweg sichergestellt werden? Wie kann man dennoch weiter neue Features integrieren? In dieser Session wird der Weg vorgestellt, der für Check24 gefunden wurde. Mit ein bisschen Spring Statemachine und einer gehörigen Portion flexibler Datenstrukturen werden die Fragen geklärt.
Heutzutage hört man bei jeder Veranstaltung das Wort DevOps und innerhalb des Themas ebenso oft Time2Market, FailFast und Co. Aber was bedeutet das konkret für einen Entwickler oder eine Enterprise Firma und wieso ist gerade ein richtig definierter und schlanker Time2Market unerlässlich für eine erfolgreiche Agile Transformation?
Accenture wird diese Fragestellung anhand eines konkreten Kundenbeispiels erklären und live auf der Bühne eine CI/CD-Pipeline initialisieren und konfigurieren, die den geschilderten Herausforderungen gewachsen ist und sogar bald unter https://github.com/LivingDevOps/LiDOP Open Source verfügbar sein wird.
Deep Learning ist aktuell "heiß" - viel Hype, viele überzogene Erwartungen, aber auch eine ganze Reihe beeindruckende Erfolgsgeschichten. Und da einige KI-Experten bereits vorhersagen, dass Deep Learning die "Software 2.0" werden wird, ist es ein guter Zeitpunkt, sich das Thema einmal näher anzuschauen.
In dieser Session werden wir Ihnen einen breiten Überblick über Deep Learning geben. Wir beginnen mit einer grundsätzlichen Einordnung des Themas, etwas Geschichte und einigen theoretischen Grundlagen, die wir verwenden, um eine kleine Deep-Learning-Taxonomie zu erstellen.
Danach untersuchen wir das Ökosystem:
* Welche Tools und Bibliotheken gibt es?
* Was sind ihre Stärken und Schwächen?
* Wie fühlen sie sich an und wann sollte man was einsetzen?
* Wie schwer ist es, einen Einstieg in die Entwicklung zu finden?
* Was sind die typischen Fallen auf dem Weg?
Diese und noch mehr Fragen adressieren wir auf unserer Reise durch das Deep-Learning-Ökosystem.
Nach der Session werden Sie ein viel besseres Verständnis bzgl. des Warum, Was und Wie von Deep Learning haben, und Sie werden eine Idee haben, ob und wie Sie es in Ihre eigene Arbeit integrieren wollen.
Spring Framework 5.1 refines Spring's functional and reactive API style on a JDK 8 baseline and embraces JDK 11 for a smooth upgrade to the next long-term support generation of the JVM. This talk illustrates the benefits of a JDK 8 baseline and the compatibility challenges on JDK 11, providing upgrade advice for Spring applications on the classpath and the module path.
In fast jeder Anwendung gibt es Aufgaben, die besser in separate Threads ausgelagert werden. So lassen sich Abläufe beschleunigen und parallelisieren sowie Wartezeiten oder Blockaden vermeiden. Während vor allem die Entwicklung mehrstufiger Logik, also mehrerer voneinander abhängiger asynchroner Aktionen, früher kompliziert war und viele Zeilen nicht-fachlichen Codes benötigte, vereinfacht der Einsatz von CompletableFuture diese Aufgabe erheblich. Zudem ist im resultierenden Code die fachliche Logik nun leichter erkennbar. In diesem paxisnahen Vortrag werden eingangs Gründe und Einsatzgebiete für Asynchronität diskutiert und anschließend der Einsatz von CompletableFuture ausführlich erläutert.
Anstatt über Microservices, NoSQL-Lösungen oder Container-Management zu reden, werden in diesem Vortrag Bestandteile des Standard Java API vorgestellt. Diese Java-Features helfen jedem Entwickler, eine wartbare und zukunftssichere Anwendung zu entwickeln – egal ob mit Spring, JavaFX oder JavaEE. Verschiedene Sprachfeatures und Konzepte der Standard Java APIs werden im Vortrag genauer unter die Lupe genommen und deren sinnvoller Einsatz anhand von Beispielen gezeigt. Hierdurch werden im Vortrag unter anderem folgende Fragen beantwortet: Wie funktionieren eigentlich Annotations? Wie entwickle ich Plug-in-Funktionalität ohne auf OSGI zurückgreifen zu müssen? Wie gehe ich am besten mit NullPointerExceptions um? Wie schreibe ich nebenläufigen Code, der trotzdem wartbar ist?
Mit Version 16 von React erhielt das Framework eine komplett überarbeitete Architektur, die den Namen Fiber trägt. Während diese neue Architektur zunächst nur die Interna von React betraf, wurden auf der Basis dieser Architektur mittlerweile viele interessante Features entwickelt, die in eigenen React-Anwendungen eingesetzt werden können. So gibt es bereits eine neue Context API, Portals und Fragments. In Aussicht gestellt sind außerdem Features, die asynchrones Rendering betreffen (Suspense und Time Slicing genannt) und die für ein noch besseres Erlebnis für die Nutzerinnen und Nutzer von React-Anwendungen sorgen sollen. In diesem Talk möchte ich Ihnen zeigen, was sich hinter diesen neuen Begriffen und Konzepten verbirgt, wie man sie einsetzt und dabei auch klären, für welche Anwendungsfälle sie besonders geeignet sind.
Docker-Container haben von Tag eins sowohl aus dem Start-up- als auch aus dem Enterprise-Umfeld hohen Zuspruch erhalten. Heute starten AWS-Kunden mehrere hundert Millionen neue Container - jede Woche. In dieser Session werden wir den aktuellen Stand der Entwicklung von Containeranwendungen und Trends betrachten. Darüber hinaus werfen wir einen Blick auf unterschiedliche Möglichkeiten, containerbasierte Anwendungen für Web Services und Batch in AWS auszurollen. Dazu zeigen wir, wie der Rollout in CI/CD-Prozessen implementiert werden kann.
Native-Cloud-Softwareentwicklung ist ein effizienter und erprobter Ansatz zur Entwicklung robuster und hoch-skalierbarer Anwendungen. Durch die Aufteilung in handliche Bausteine (Microservices) sind diese gleichzeitig auch leicht veränder- und erweiterbar. Die Frage ist nun, wie man zu einem "Cloud Native"-Ansatz kommt, wenn man eine komplexe Java-EE-Anwendung und deren Code als Basis wiederverwenden möchte. Wie plant man die Migration, wenn die Anwendung täglich mehrere Millionen Requests bearbeitet und von über einer Million Nutzer verwendet wird?
Die digitale Transformation findet nicht auf der "grünen Wiese" statt, daher müssen Wege gefunden werden, Anwendungen mit dieser Komplexität möglichst reibungslos zu migrieren.
Diese Präsentation gibt Einblick in eine Cloud-Migration einer WebSphere-basierten Java-EE-Anwendung mit typischen Backend-Anbindungen wie DB2 und MQ. Für das hier vorgestellte Migrationsszenario wurde Kubernetes ausgewählt und eingesetzt. Die existierende migrierte Anwendung ist eine Backend-Kompenente eines Kunden aus der Automobilindustrie.
Dass wir in einem Projekt zuerst die Software erstellen und danach die Spezifikation, kommt selten vor. Und wenn es vorkommt, geben wir es nicht zu, sondern erzählen die Geschichte von strukturierter, planmäßiger Vorgehensweise.
Und wenn wir es absichtlich tun? Wenn wir dadurch ein erstaunliches Tempo bei der Realisierung von Funktionalität erreichen? Wenn wir fachliche Annahmen sehr früh validieren können?
Dann ... sind Anwender so begeistert, dass sie die Testinstanz produktiv nutzen. Dann werden echte Produktdaten erfasst und der Geschäftsprozess um mehr als eine Größenordnung beschleunigt. Dann steigen die Anwenderzahlen, weil die Umsetzungsgeschwindigkeit von Anpassungen revolutionär ist.
Dann ... wird ein robuster Betrieb wichtig mit Logging, Monitoring und Zero-Downtime-Deployments. Dann rückt all das in den Fokus, was ein Prototyp nicht ist. Dann müssen wir aus dem Prototyp schrittweise ein Produktivsystem machen, ohne die bisherigen Vorteile zu verlieren.
Wir geben Ihnen einen ehrlichen Einblick in ein Projekt, dessen Dynamik uns überrascht hat. In dem vieles brillant lief, aber bei weitem nicht alles. Wir erzählen von der Transformation des Projekts und des Teams sowohl bei uns als auch bei unserem Auftraggeber.
Wir erzählen Ihnen, warum es manchmal wirklich besser ist, mit Coden zu beginnen!
Most non-trivial software systems suffer from significant levels of technical and architectural debt. This leads to exponentially increasing cost of change, which is not sustainable for a longer period of time. The single best thing you can do to counter this problem is to carefully manage and control the dependencies among the different elements and components of a software system. This session will first look at the major reasons why so many systems end up in an unmaintainable state and then look at different strategies for better code-organization. We will first consider module systems like Java 9 or OSGi. Then we will look at a new innovative domain specific language to describe software architecture that allows to define an enforceable architectural blueprint for any software system. As a takeaway, you will understand the limitations of module systems used for architectural purposes.
Das Konzept des Data Lake ist heute in aller Munde. Die Idee, alle im Unternehmen anfallenden Daten an einer zentralen Stelle abzuspeichern und verfügbar zu machen, klingt fürs Erste natürlich sehr interessant. Der Data Lake kann sich jedoch schnell vom klaren, schönen Bergsee in einen riesigen Tümpel verwandeln, insbesondere dann, wenn man ihm unbedarft sämtliche Quellendatenformate anvertraut, die heute in den Unternehmen gängig sind, wie z. B. XML, JSON, CSV oder unstrukturierte Textdaten. Wer hat hier nach geraumer Zeit noch die Übersicht, welche Daten welches Format haben und wie sich diese über verschiedene Versionen weiterentwickelt haben? Jeder, der sich aus dem Data Lake bedienen will, muss sich immer wieder dieselben Fragen stellen: Welche Informationen werden zur Verfügung gestellt, welche Datentypen haben sie und wie hat sich der Inhalt über die Zeit verändert? Abhilfe schaffen können Datenserialisierungsframeworks wie z. B. Apache Avro und Google Protocol Buffer (protobuf), die eine plattformunabhängige Datenmodellierung und -speicherung ermöglichen. Dieser Vortrag geht auf die Möglichkeiten von Avro und Protobuf ein und zeigt, wie man diese im Kontext eines Data Lakes einsetzen und welche Vorteile man damit erzielen kann. Die Unterstützung von Avro und protobuf durch Big-Data- und Fast-Data-Plattformen ist dabei ebenfalls ein Thema.
Over the last decade a lot has happened in the world of Java and testing, but JUnit 4 hasn’t kept up. Now JUnit 5 is here to help shape the future of testing on the JVM with a focus on Java 8 language features, extensibility, and a modern programming API for testing in Java. Moreover, JUnit isn’t just a Java testing framework anymore. Third parties are already developing test engines for Scala, Groovy, Kotlin, etc. that run on the new JUnit Platform. In this session, core JUnit 5 committer Marc Philipp will take the audience on an example-driven tour of the new Jupiter programming model and show how to migrate existing JUnit 4 based tests. Then, we will discuss the inspiration for JUnit 5, look more closely at its architecture, and discuss compatibility with JUnit 4. Next, we will explore the Jupiter extension model, learn about the extension points it provides, and see how custom extensions for conditional tests, method parameter resolution, lifecycle callbacks, etc. are authored and registered. To round off the session, we will look at the roadmap of what’s still to come.
Nicht erst seit dem Hype um Microservices ist Schnittstellendesign ein essenzieller Bestandteil von Softwareentwicklung. Doch jede noch so gut definierte Schnittstelle kann an einen Punkt kommen, an dem sie weiterentwickelt werden muss; sei es nur, weil sich die Anforderungen geändert haben. Kommt man an diesen Punkt, stellt sich die Frage: Muss ich meine Schnittstelle versionieren? Wenn ja, wie gehe ich vor? Wie müssen sich die Clients der Schnittstelle verhalten, um nicht plötzlich (nach einem neuen Release des Servers) eine böse Überraschung zu erleben? Die Weiterentwicklung einer Schnittstelle wird leider initial häufig nicht bedacht. Hoher Wartungsaufwand für die Bedienung alter und neuer Schnittstellen sind die Folge. Wie kann ich das verhindern? Wie muss ich bei der Weiterentwicklung vorgehen, um alte Clients nicht inkompatibel werden zu lassen und dennoch nicht in der Versionierungshölle zu landen? Diese und weitere Fragen werden in dieser Session beantwortet. Dabei werden die Konzepte nicht nur in der Theorie beleuchtet. Anhand von Beispielen zeige ich, wie Abwärtskompatibilität in der Praxis realisiert werden kann, ohne sich im Support alter Versionen zu verlieren.
Over the last year or so, much has been happening around Java, JVM, and the Java ecosystem. In this talk, hear how the Java application stack, the related open source technologies, and the Java ecosystem are changing to meet the demands of clouds. Learn what has happened so far and what more there is to come. Whether improved memory footprint, new operating modes, different deployment models, or even new hardware - the future of Java in clouds is demanding more of developers and IT teams alike. This talk will help you understand the economic and technical forces driving the evolution of Java and will show you a future that's even more amazing than you might imagine. Out with the old and in with the new. Are you ready?
In diesem Vortrag wird die Open-Source-Identity- und Access-Management-Lösung Keycloak aus dem Hause Red Hat vorgestellt und gezeigt, wie man in Spring-Anwendungen von zentralen Authentifizierungs- und Autorisierungsmechanismen profitieren kann.
Keycloak bietet Single Sign-on auf der Basis von Standardprotokollen wie OpenID Connect 1.0, OAuth 2.0 und SAML V2, das sich einfach in eigene Anwendungen integrieren lässt. Keycloak bietet bereits von Haus aus zahlreiche Features, wie beispielsweise eine zentrale Benutzerverwaltung, eine Benutzerregistrierung, 2-Faktor-Authentifizierung, Unterstützung für externe Identity-Provider wie Google, Facebook oder Twitter und umfangreiche Möglichkeiten, das User Interface an eigene Bedürfnisse anzupassen. Darüber hinaus lassen sich auch zahlreiche Verzeichnisdienste auf Basis von LDAP oder Kerberos sehr einfach anbinden und nicht zuletzt besteht die Möglichkeit, über eigene Erweiterungen beliebige Benutzerdatenbanken anzubinden.
Nach einer kurzen Einführung zu Keycloak beginnen wir mit einer Tour durch die Verwaltungsoberfläche. Anschließend betrachten wir die Protokolle OAuth 2.0 und OpenID Connect im Kontext von Single Sign-on. Nachdem diese Grundlagen gelegt sind, werden die Integrationsmöglichkeiten mit Spring-Anwendungen und Keycloak am Beispiel von ausgewählten Szenarien vorgestellt. Zum Abschluss wird eine erweiterbare Identity- und Acces-Management-Infrastruktur demonstriert.
Testen von provisionierten, einzelnen Servern ist heutzutage Stand der Technik, viele ausgereifte Tools sind verfügbar (z. B. rspec, dda-ServerSpec, Goss). Sobald der Blick aber auf größere Serververbünde, Netzwerke oder ganze Clouds fällt, wird Testen aber immer noch sehr mühsam. Fragen wie "Sind DNS-Einträge korrekt gesetzt?", "Sind die benötigten Netze erreichbar?" oder "Funktioniert unsere Firewall richtig?" sind im großen Maßstab nicht mehr einfach zu beantworten. Mit dda-serverspec ermöglichen wir diese Art von Tests. TestFirst ist damit auch auf der Ebene von komplexen Netzwerkverbünden möglich. Der Vortrag zeigt, wie Testsonden in unterschiedliche Netze installiert werden können, wie eine Erwartungshaltung formuliert werden kann und wie ein Test-Lifecycle mit Entwicklungsphase und späterer continuierlicher Testphase aussehen kann.
Wann ist Feature X fertig? Was wird es kosten? Wie viele Features kann das Team bis zum Weihnachtsrelease schaffen? Diese und ähnliche Fragen werden immer noch von Produktmanagement und Stakeholdern an die Entwicklungsteams gestellt, auch oder gerade denen, die agil unterwegs sind. Um hierzu zufriedenstellende Antworten liefern zu können, haben wir verschiedene Schätzmethoden eingesetzt: von Story Points über Personentage bis T-Shirt-Größen. Leider mit mäßigem Erfolg. Doch dann sind wir auf die #NoEstimates-Bewegung gestoßen und haben sie ausprobiert. In dieser Session gibt der Speaker eine kurze Einführung in #NoEstimates und teilt seine Erfahrungen damit.
Together with other Java EE leaders, Oracle announced in 2017 that they will open source Java EE at the Eclipse Foundation under the name of Jakarta EE. With the creation of both Eclipse MicroProfile and Eclipse OpenJ9 projects, the Eclipse Foundation has become the place to be for Enterprise Java technologies.
It will really be a landscape change for you whether you're a Java developer or architect, using Java EE full profile or the web profile or even Spring(Boot). All the Java EE technologies and processes will become truly open source, including: the reference implementations (Glassfish will be released as Eclipse GlassFish, Jersey as Eclipse Jersey, ...); the Technology Compatibility Kits (TCK) and Compatibility Test Suites (CTS) will certify compliance of implementations (WildFly, OpenLiberty, TomEE, ...) against future Jakarta EE releases; and the 40+ specifications will now be managed in the open.
Come and learn how you can join the community, building the future of Cloud Native Java.
This presentation introduces fluent API and how the API generation process can be automated using annotation processors. When looking at annotations, the talk also looks at what has changed in Java 8 and how the Java 9 interface extension and Java 10 "var" declaration is changing the fluent API generation and use.
Nein, weh tut es nicht, aber aktuell stammen die fünf weltweit wertvollsten Unternehmen aus den USA und ihre Gemeinsamkeit ist, dass sie ein stark ausgeprägtes plattformbasiertes Geschäftsmodell haben. Sie wollen verstehen, wieso Apple, Microsoft, Google, Facebook und Co. so erfolgreich sind? Dann kommen Sie vorbei. Sie lernen Neues über virale Effekte, Netzwerkeffekte auf der Supply- und Demand-Seite sowie über die verschiedenen Rollen auf der Plattform. Ich entschlüssele Launchstrategien - untermauert mit prominenten Beispielen - und gebe Hinweise, unter welchen Rahmenbedingungen ein plattformbasiertes Geschäft erfolgreich werden kann. Auch werde ich unterschiedliche Governance-Aspekte mit den jeweiligen Konsequenzen für Ihr plattformbasiertes Geschäft aufzeigen. Angereichert wird diese Session durch eine hohe Praxisrelevanz und Erfahrungen aus meinem Projektalltag.
So mancher Entwickler empfindet die Einschränkungen, die einem die Same-Origin Policy (SOP) der Browser auferlegt, als lästig und umgeht diese durch den hastigen Einsatz von Cross-Origin Resource Sharing (CORS). Doch worauf wirkt sich die SOP genau aus und wie sollten die CORS-Header sinnvoll verwendet werden? Zusätzliche Sicherheit versprechen die Direktiven der Content Security Policy (CSP), die im Gegensatz zur SOP jedoch explizit aktiviert werden muss. Doch welche Direktiven gibt es, wie sind sie einzusetzen und worauf wirken sie sich aus? Aktuelle Browser unterstützen noch einige weitere Security-Header. Doch welche davon sind heute noch relevant und wie sollte man sie verwenden? Auf diese und weitere Fragen liefert dieser Talk Antworten. Anhand praxisnaher Beispiele wird verdeutlicht, wie durch den gezielten Einsatz dieser Sicherheitsmechanismen einigen Bedrohungen begegnet werden kann.
Die Anforderungen an moderne Enterprise-Anwendungen sind hoch. Die einfache Persistierung von Eingabedaten ist schon lange nicht mehr ausreichend. Eine Volltextsuche und die Auditierung der Datenbestände sind inzwischen selbstverständlich und Forderungen nach mehrmandantenfähigen Systemen keine Seltenheit mehr. Für all diese Anforderungen bieten Hibernate und die dazugehörigen Erweiterungen Hibernate Search und Hibernate Envers bereits gute Lösungen, die im Rahmen dieses Vortrags kurz vorgestellt werden
Paradoxically, the best way to ensure that your systems won’t break is by deliberately breaking them. Lucky for us, breakage is inevitable. All we have to do is to accept outages for what they are: opportunities to learn. A gift from fate that helps improve the quality of our system in a very real and measurable way. In this talk, Kees Jan shares some of his experience and enthusiasm for production incidents, high risk migrations, and system outages. He gently guides you through the though process that enables you to accept breakage, via assuming breakage and doing your first breaking tests all the way to where you break production systems with confidence, all the while improving the quality of your systems.The audience leaves the room with concrete actions to take to implement blame-free post-mortems, concise monitoring and ultimately inventing creative ways to break their own systems.
In jedem Unternehmen gibt es eine IT-Landschaft, die aus einer Vielzahl von über Schnittstellen verbunden Systemen besteht. All das soll nun modern, skalierbar und flexibel werden. Das heißt für viele Unternehmen, dass die IT-Landschaft auf Microservices umgestellt werden muss. In diesem Vortrag kläre ich auf, was den Unterschied zwischen einer Service-orientierten Architektur (SOA) und einer IT-Landschaft aus Microservices ausmacht, wie man seine Architektur auf Microservices vorbereitet und welche Vorteile und Herausforderungen bei dieser Umstellung bewältigt werden müssen.
Am 1. Oktober 2016 startete funk – das neue Online-Only-Angebot von ARD und ZDF für junge Menschen. Sowohl für die Inhalte als auch bei der IT-Infrastruktur wurden neue Wege beschritten. Durch eine Microservices-Architektur und den Einsatz von Docker und Kubernetes wurde in sehr kurzer Zeit eine flexible und skalierbare Plattform geschaffen. Da im Vorfeld die Lastanforderungen für die Backend-Systeme nicht abschätzbar waren, entschied man sich zunächst, Cloud-Only zu starten und die Infrastruktur anschließend in einen Hybridansatz zu überführen. Als Cloud-Anbieter wurde die Google Container Engine verwendet. In diesem Erfahrungsbericht beleuchten Jan Mischlich und Benjamin Rank vor allem die technischen Aspekte wie Monitoring, Logging, Load Balancing und Kommunikation zwischen den Zonen (z. B. zur Datenreplikation). Weiterhin zeigen sie, dass man durch den Einsatz von Kubernetes in der Private-Zone die Art der Konfiguration einheitlich halten und so den administrativen Overhead trotz unterschiedlicher Umgebungen minimal halten kann.
Synopsis: Modern systems are made up of many moving parts that can fail, that are then built on top of and integrated with systems that can also fail. Throw into this mix the need for these parts to be under the stress of constant change and improvement under the increasing pressures of the business to deliver more and faster, and building systems that are reliable enough to have confidence in, is a real challenge!
Enter the discipline of Chaos Engineering. Chaos Engineering is specifically concerned with helping you build confidence in your complex and rapidly evolving Cloud Native applications so you can embrace and thrive on the inherent challenges of the approach. In this talk, Russ Miles, CEO of ChaosIQ.io, will show you how to discover weaknesses in your systems and learn how to overcome them using Chaos Engineering. Employing a host of real-world examples and using the free and open source Chaos Toolkit (http://chaostoolkit.org/), Russ will demonstrate how you can use Chaos Engineering today.
Ersatz für krankheitsbedingten Ausfall der Session "Spring 5 Reactive Microservices: Ab wann sich eine Umstellung lohnt" mit Ingo Düppe
Die technologischen Fortschritte der DevOps-Bewegung sind unbestritten: Infrastructure as Code, Container oder Microservices haben den Produktions- und Auslieferungsprozess von Software in vielen Unternehmen deutlich beschleunigt. Allerdings tauchen auch die ersten Stimmen auf, die von gescheiterten Versuchen in mittleren und größeren Organisationen berichten. Weshalb also bringt die Einführung von DevOps nicht automatisch eine echte Beschleunigung der IT-Produktion? In einem unterhaltsamen Perspektivwechsel gehen wir auf nicht-technische Ursachenforschung. Wir beleuchten den typischen Fluss bei der Erstellung von Software in Organisationen und lernen Phänomene wie das Studentensyndrom kennen.
"Überzeugen durch Argumente ist schwer, ausprobieren ist leichter.” In diesem Sinne bieten wir nach der Keynote die Möglichkeit, Effekte aus dem Vortrag praktisch zu erfahren. Wir werden Briefe falten und eintüten – ein wohlbekanntes Experiment in der DevOps/LEAN-Szene. In unserer Simulation versuchen wir, einen Softwareentwicklungsprozess zeitlich komprimiert nachzustellen und typische Hindernisse erlebbar zu machen. Am Ende steht die Erkenntnis, wie DevOps dabei helfen kann, Hürden abzubauen und Prozesse nicht nur gefühlt, sondern echt zu beschleunigen.
The beauty of open source is that it is developed in the open as a public collaboration between companies and individuals and then made freely available to download and use. It sounds perfect but, at the end of the day, who really pays for open source to meet the demands of quality code contributions and best of breed maintenance? In his keynote, Chris Ferris explores this provocative question making the rounds in developer circles today, and makes the case for open governance and enterprise contributions as a path forward. Learn about the best practices of open governance as well as the crucial importance of enterprise contributions to open source to drive quality code, deliver on maintenance needs, and minimize overall risk for the community.
WebAssembly is the browser's virtual machine. It is a binary code that runs in the browser and is already available today in most of the browsers. This will change the way how client applications will be developed in the future. The technologies for client development will shift at least partially from JavaScript and similar technologies towards compiled code like Java, Rust, Golang, Swift - real programming languages. The talk will introduce the architecture of WebAssembly, where it is today, and what can be expected in the future. It also explains why it is important for Java developers to pay attention to this technology in their future carreer.
Sie sind Java-Entwickler, haben bisher noch keine Erfahrung mit Single-page Applications und wollen mal einen Blick über den Tellerrand werfen? Dann kommen Sie in diese
Einsteigersession und gehen Sie mit uns auf Entdeckungsreise! Auf der Reise erfahren Sie, wie die neue Art der Cliententwicklung funktioniert, warum JavaScript hier so eine zentrale Rolle spielt und welche Werkzeuge außerdem von großer Bedeutung sind. Sie lernen Vue.js kennen und werden sehen, wie man dieses Framework in der neuen Welt einsetzt. Am Ende der Reise haben Sie genug Basiswissen gesammelt und wissen, was Komponenten sind. Die Grenzen zum Web-Components-Standard werden abgesteckt sein und Sie werden ein Gefühl dafür haben, warum man in Komponenten denken sollte. Wenn Sie am Ende bereit sind, weitere eigene Reisen in die interessante Welt von Vue.js zu unternehmen, dann hat diese Entdeckungsreise ihren Sinn erfüllt.
Als Webentwickler verwendet man jeden Tag verschiedene Web-APIs. Häufig handelt es sich um die allgemein bekannten APIs, wie das Document Object Model (DOM), das DOM Event API, das Fetch API oder die Geolocation API. Es entsteht eine Art Komfortzone, die man selten verlässt. Dabei stellt das Web noch viel mehr APIs zur Verfügung, die wenig oder gar nicht bekannt sind. Kennen Sie zum Beispiel schon das Web Speech API, oder das Web Bluetooth API, das Server Timing API, das Battery Status API oder das Credential Management API? Diese und weitere APIs sind Teil des Vortrags, der Webentwicklern helfen soll, ihre Komfortzone zu verlassen. Da der Vortrag sehr viele APIs umfasst, kann das Publikum am Anfang auswählen, welche APIs im Detail vorgestellt werden.
Ein Blick über den Tellerrand kann ja nicht schaden: Was hat Microsofts Azure Cloud für Java-Entwickler und -Architekten zu bieten? Freilich ist die blaue Wolke ähnlich mächtig, breit an Services und tief an Features wie die Marktbegleiter AWS oder GPC. In dieser Session möchte daher Christian Weyer - der seit 2008 mit Azure arbeitet - einen nicht ganz unvoreingenommenen Überblick über die zentralen Services geben, die für Java-, .NET- aber auch andere Entwickler zur Verfügung stehen. Angefangen bei Containers as a Service mit Docker und Kubernetes als Basis, über klassische Platform-as-a-Service-Angebote für Web-Applications, Datenbanken oder Messaging, bis hin zu ultracoolen Serverless-Architekturen - illustriert mit praktischen Beispielen. Und das von jemandem, der so gut wie keine Ahnung von Java hat.
Die Integration von Microservices und überhaupt das Beherrschen verteilter Systeme ist nicht trivial. Im Vortrag werde ich drei Herausforderungen aus unserem Projektalltag skizzieren und diskutieren, wie man diese meistern kann.1. Kommunikation ist komplex. Wenn verteilte Systeme der Normalfall werden, benötigen wir ausgeklügelte Mechanismen zur Fehlerbehandlung (z .B. Stateful Retry). 2. Asynchronität erfordert die Implementierung von Time-outs. Die Resilienz kann dabei deutlich erhöht werden, wenn man nicht nur Millisekunden, sondern auch Minuten oder gar Stunden warten kann. 3. Verteilte Transaktionen können nicht einfach an Protokolle wie XA delegiert werden. Stattdessen muss man die Anforderung an Konsistenz auf neuen Wegen umsetzen. Im Vortrag gibt es nicht nur Folien, sondern viele konkrete Live-Coding-Beispiele.
Exonum is an open source framework for building private and permissioned blockchains. Dmitry will cover the creation of a Java Binding Framework for Exonum. It simplifies the process of blockchain app development in Java.
Since Exonum Core is originally written in Rust, Dmitry will explain how the integration between Rust and Java works, and why Java has been chosen as the first language for binding.
You will be guided through the step by step blockchain application tutorial and it will be shown how a smart contract (service) in Java on Exonum can be developed.
Also, Dmitry will explain the work of a light client - JS library for integrating client apps with Exonum services and review the network configuration of a typical Exonum blockchain.
Microservices sind im Wesentlichen ein paar hippe JavaScript-Frameworks und eine schicke Single-Page-App mit AngularJS oder React, oder? Wenn du also absolut sicher sein willst, dass dein nächstes Microservice-Projekt scheitert, dann komm in diesen Vortrag und lerne wie.
Anhand echter Erfahrungen aus mehreren Brownfield- und Greenfield- Projekten zeigt David Schmitz wie du die notwendigen organisatorischen Einflüsse ignorierst; wie du Operations wahnsinnig machst, sowohl durch unreife Technologien als auch durch last-minute Monitoring; wie du auch ohne Continuous Delivery fehlerhafte Software rasch releasen kannst; wie du auch einfachste CRUD-Anwendungen mit hyper-komplexen Architekturen zum Scheitern bringst und vieles mehr.
Wenn du diese Tipps beachtest, wird dein Chef nie wieder auf die Idee kommen, seine IT zu modernisieren und du kannst weiterhin deinen geliebten Monolithen pflegen.
Viele APIs werden heutzutage REST APIs genannt, tauschen allerdings hauptsächlich Daten via HTTP und JSON aus. Gleichzeitig agieren immer mehr Systeme nicht mehr in Isolation, sondern interagieren mit anderen. In diesem Kontext ist es besonders wichtig, API gut weiterentwickeln und ändern zu können, und die hemdsärmelige Antwort darauf lautet üblicherweise: Versionierung. Dieser Vortrag geht einen Schritt zurück und schaut als Erstes auf den architektonischen Kontext in dem APIs leben und skizziert die Nachteile eines Designs, das Kernbestandteile von REST vernachlässigt. Er bespricht interne und externe APIs, inwieweit diese Unterscheidung überhaupt Sinn ergibt, den Einfluss von Domain-Driven Design und wie man APIs so spezifiziert, dass sie für Erweiterbarkeit optimiert sind, und Änderungen existierende Clients möglichst nicht brechen.
Gutes API-Design ist immens wichtig für den Erfolg einer Schnittstelle. Ist ein API nur schwer verständlich oder benutzbar, sind allerhand Schwierigkeiten vorprogrammiert. So muss sich ein API-Betreiber darauf einstellen, regelmäßige Nachfragen von Cliententwicklern zu beantworten. Im schlimmsten Fall wenden sich diese sogar ab und halten Ausschau nach einem besseren Anbieter. Was aber ist "gutes" API-Design? Welche Fragen und Entscheidungen stellen sich, und welche Alternativen stehen jeweils zur Wahl? Dieser Vortrag gibt anhand unterschiedlicher Beispiele wertvolle Tipps aus der Praxis. Zur Sprache kommen Themen wie Namensgebung, Filterung, Pagination oder Limitierung der Ergebnisse. Zudem gehen wir der Frage nach, welche Standards oder Vorlagen existieren, an denen man sich orientieren kann.
Der klassische Ansatz, Software als einen großen unternehmensweiten Monolithen zu bauen, hat sich als Irrweg erwiesen. DDD und sein strategisches Design zeigen uns, dass es besser ist, die Domäne in sogenannte Bounded Contexts aufzuteilen. Diese enthalten kleinere Modelle, die einfacher zu verstehen sind, weniger fehleranfällig und von mehreren Teams parallel entwickelt werden können. Mit Project Jigsaw und dem daraus resultierenden Java Platform Module System steht uns nun endlich ein Modulmechanismus zur Verfügung, mit dem wir Bounded Contexts direkt im Quellcode ausdrücken können. In diesem Talk betrachten wir, wie wir uns das zunutze machen und ein sauber entworfenes und geschnittenes Domänenmodell implementieren können. Das kann eine Vorstufe oder ein Ersatz zu Microservices sein.
Die Idee von Micro Apps, auch Micro Frontends genannt, ist sehr verlockend: Anstatt eines großen monolithischen Clients erstellt man entsprechend der Microservices-Philosophie mehrere kleine und gut wartbare UIs. Doch wie lassen sich diese einzelnen Inseln mit einer integrierten UI präsentieren?
Framework-unabhängige Web Components, die sich dynamisch in eine App-Shell laden lassen, sind hierfür eine moderne und attraktive Lösung. Hier erfahren Sie, wie Sie diese Idee mit Angular Elements umsetzen können, aber auch, wie sich ein übergreifendes Routing und eine übergreifende Kommunikation implementieren lassen. Außerdem erfahren Sie auch, welche Fallstricke es zu beachten gilt und welche Optionen Sie haben, wenn das Framework Ihrer Wahl Web Components nicht unterstützt. Am Ende liegt eine Blaupause für Ihre eigenen Vorhaben vor.
Um Microservices zu betreiben, müssen diese eine ganze Reihe von Eigenschaften haben. Sie müssen robust sein, Service Discovery und Load Balancing beherrschen, sich gegenseitig authentisieren und autorisieren, mit Time-outs und nicht verfügbaren Services umgehen - um nur einige zu nennen. Häufig macht das mehr Aufwand als die eigentliche Geschäftslogik. Und für jeden Service tritt dieser Aufwand erneut auf. Zwar können Bibliotheken und Frameworks wie Hystrix einem Teile der Arbeit abnehmen; eigentlich sollte dies aber Teil der Infrastruktur sein. Mit dem Sidecar-Pattern ist es möglich, diese Eigenschaften in die Infrastruktur zu verschieben und sich bei der Entwicklung der Microservices auf die Geschäftslogik zu konzentrieren. Lernen Sie in diesem Vortrag das Sidecar-Pattern, dessen Vor- und Nachteile sowie bestehende Lösungen kennen.
Unsere Migration bei dm-drogerie markt zu einer verteilten Systemarchitektur hat viele Herausforderungen nach sich gezogen. Dabei war der gestiegene Bedarf nach Observability ein Kernthema. Die zunehmende Verteilung der Systeme fordert eine Zentralisierung der Logs zur Auswertung von Geschäftsprozessen. Abhängigkeiten zwischen Services lassen sich anhand von Request-basiertem Tracing nachvollziehen. Metrics und Monitoring sind Grundvoraussetzungen, um die Zuverlässigkeit von Anwendungen zu erfassen und auf Anomalien zu reagieren. Eine DevOps-Kultur fordert, dass sich Teams diesen Herausforderungen stellen. In diesem Talk stellen wir einige geeignete Tools vor und gehen insbesondere auf die ein, die wir basierend auf unserem Spring-Boot-Stack im Einsatz haben.
Ereignisgesteuerte Architekturen sind essenziell für eine gute Entkopplung von (Micro-)Services. So sind Querschnittsthemen wie Kundenmails schnell in völlig autonomen Services gebündelt. Ein weiterer Baustein zur Maximierung der Service- (und Team-)Autonomie ist CQRS (Command Query Responsibility Segregation). Denn: Die redundanten, bloß für Lesezwecke bestimmten Strukturen integrieren auch „Service-fremde“ Infos und werden damit hochverfügbar sowie autonom und leicht änderbar. Anspruchsvoller werden die Fragen nach Service-Schnitt und -Kopplung jedoch, wenn komplexe, viele Services und Systeme berührende End-to-end-Geschäftsprozesse zu implementieren sind. Allzu platte Ereignissteuerung kann plötzlich in die Irre führen. In diesem Talk illustriere ich die im Domain-driven Design verankerte, wichtige Idee des Bounded Contexts und wende sie mit konkreten Beispielen auf Geschäftsprozesse an. Resultierende Services gestalte ich potenziell asynchron und „verantwortungsvoll“: Indem ich für Service-Clients wertvolle Ergebnisse samt Behandlung von Problemen erwarte, vermeide ich die Entstehung überbordender „God Services“.
Daten mit Hibernate zu persistieren ist so einfach, dass man es innerhalb kürzester Zeit erlernen kann. Ein paar wenige Annotationen reichen schon aus, um Objekte auf Datenbanktabellen abzubilden. Spannend wird es immer erst dann, wenn die Anforderungen steigen, z. B. weil das Domänenmodell sehr komplex, die Datenmenge besonders groß oder die geforderten Antwortzeiten sehr kurz sind. Auch hierfür bietet Hibernate in der Regel gute Lösungen an. Dazu sind allerdings deutlich detailliertere Kenntnisse erforderlich. Einige Beispiele dafür sind Caches, Entity Graphen und JDBC Batching. Wir werden uns anhand praktischer Beispiele genauer ansehen, wie wir diese und andere Features nutzen können, um auch komplexere Anforderungen mithilfe von Hibernate umzusetzen.
Anfang 2018 machte sich ein Team tapferer Männer und Frauen daran eine bisher unbekannte Insel zu erforschen und zu erobern. Ihre Mission: eine vollständige und nahtlose DevOps Toolkette zu bauen, die es ermöglicht Ideen in User Stories zu verwandeln, Stories in Spezifikationen, Specs in Code und Code in Docker Container die auf jeder Cloud betrieben und überwacht werden können.
"Cloud-Native“ ist eins dieser Schlagworte, die wir die ganze Zeit hören, aber die Konzepte dahinter scheinen ziemlich verschwommen zu sein. Einige denken, dass es darum geht, bestehende Architekturparadigmen so zu virtualisieren, dass sie dann schon auf Cloud-Plattformen laufen werden. Andere meinen, dass nur Spring Boot/Cloud eine Cloud native machen kann, während einige alles in Docker zu packen und mit Kubernetes zu betreiben scheinen. Wir würden gerne mit einigen Experten - und mit Ihnen - allen Teilnehmern - diskutieren über die Besonderheiten von Cloud-Native, was Java-Entwickler lernen (und vielleicht auch verlernen) müssen und warum wir uns um die Entwicklung von Cloud-Native kümmern sollten.
Microservices ist ein Architekturstil für die Erstellung von Applikationen, bei dem der Ansatz verfolgt wird, eine komplette Applikation basierend auf feingranularen, lose gekoppelten Komponenten, den Microservices, aufzubauen. Jeder Microservice funktioniert dabei für sich autonom und kann unabhängig weiterentwickelt und deployed werden. Natürlich ist ein Microservice selten komplett autonom, er muss sich mit weiteren Microservices austauschen können, auf eine möglichst lose gekoppelte Art und Weise. Aus der traditionellen Sicht der Service-orientierten Architekturen (SOA) denkt man hier schnell an Service-Schnittstellen. Daraus hat sich auch der Hype rund um APIs und API Management entwickelt. Ein API bzw. eine Service-Schnittstelle ist jedoch meist eine synchrone Angelegenheit und hat aus der Sicht loser Kopplung einige Nachteile. Oft wäre die asynchrone Kommunikation viel besser, d. h. über den Austausch von Nachrichten. Hier kommt der Event Hub bzw. Apache Kafka ins Spiel, ein moderner Message Broker, der horizontale Skalierbarkeit mit höchster Verfügbarkeit und Durchsatz ermöglicht. Dieser Vortrag zeigt, wie sich mithilfe des Kafka Ecosystems Microservice-Architekturen aufbauen lassen, die mehrheitlich asynchron kommunizieren und nur dann, wenn es die Anforderung erfordert, auf synchrone Schnittstellen (APIs) zurückgreifen. Kafka hat dabei einige Eigenschaften an Board, die sich hervorragend für die Umsetzung solcher Architekturen eignen und diese optimal unterstützen.
Wir kämpfen mit gutem fachlichem Design, seit wir große Softwaresysteme bauen - also mittlerweile seit etwa sechzig Jahren! Und wir haben das Problem noch nicht einmal ansatzweise gelöst.
Während ein schlechtes Design in der Vergangenheit aber nur eine schlecht änder- und wartbare Codebasis zur Folge hatte, sind die Konsequenzen heute wesentlich drastischer. In Zeiten von Microservices, Cloud-native, API first, usw. bedeutet ein schlechtes Design zusätzlich fragile, schlecht skalierbare und mäßig verfügbare Systeme, bis hin zu Sicherheitslücken und wenig akzeptierten APIs, was das gesamte Geschäftsmodell gefährden kann.
Gutes Design wird also dringender benötigt denn je. Aber leichter gesagt als getan. Was ist gutes Design und erzeugt man es?
In dieser Session werden wir zuerst untersuchen, warum und wie das fachliche Design die zuvor genanntes Eigenschaften eines Systems beeinflusst. Dann werden wir durch einige Jahrzehnte Informatik reisen und dabei diverse zeitlose Grundlagen guten Designs einsammeln. Diese Grundlagen wenden wir dann auf unsere heutigen Problemstellungen an. Zum Abschluss entwickeln wir daraus einen kleinen Leitfaden mit Tipps für ein gutes fachliches Design.
Nach dieser Session werden Sie ein besseres Verständnis entwickelt haben, wie man erfolgreich moderne Systeme gestaltet, die sowohl in der Entwicklung als auch in Produktion langfristig funktionieren.
Nobody likes to wait, especially not when we are talking about waiting for web applications. In this talk we will walk through all the phases of the lifecycle of a web application. This process has its starting point in the download of all the necessary resources such as HTML, CSS or JavaScript. Then your browser starts to process these resources in order to render the application. But your application’s life does not end when it is shown to the user. In a single-page application, your browser has got a lot of work to do and it’s your job to build the application in a way it can do its job in a quick and responsive way. You will learn what’s under the hood of your browser and how to analyse the performance of your application's lifecycle.
Als Designtechnik ist Event Storming momentan der letzte Schrei. Nur mit haufenweise Klebezetteln ausgerüstet treffen Entwickler und Anwender aufeinander. Innerhalb von sehr kurzer Zeit bauen alle Teilnehmer ein gemeinsames Verständnis der Domäne und der Prozesse auf. Der Schwerpunkt wird dabei zunächst auf die Domain Events gelegt, also das, was in der Fachlichkeit geschieht. Weil die Methode so leichtgewichtig ist, fokussiert sie uns das, was wirklich wichtig ist: weg von Technologie und Werkzeugen hin zur Domäne. Besonders spannend: Die Ergebnisse der Event-Storming-Sessions geben uns schon konkrete Implementationshinweise. Und das Ganze auch noch mit einer Menge Spaß. In dieser Session zeige ich kurz, wie Event Storming funktioniert und wo man es einsetzt. Dann setzen wir es mit den Teilnehmern direkt in der Praxis an verschiedenen Beispielen um.
Die Komplexität in modernen und verteilten Architekturen nimmt immer weiter zu. Wir haben es erfolgreich vollbracht, unsere Applikation in kleine und wartbare Komponenten zu zerlegen. Jede einzelne Komponente lässt sich automatisiert und zu jeder Zeit in Produktion bringen. Bei der Entwicklung wurde viel Aufwand betrieben, die Testabdeckung möglichst hoch zu halten. Jedes Release muss erfolgreich durch unsere Pipeline und unzählige Unit-, Integrations- und Akzeptanztests bestehen.
Aber warum haben wir kurz vor der Ankunft am schönsten Ort der Welt (Produktion) dieses ungute Gefühl?
Viele offene Fragen lassen sich nicht durch einfache Unit- oder Integrationstests beantworten. Hier kommt das Thema Chaos Engineering ins Spiel. Es hilft uns, des Chaos' Herr zu werden und bitte behaupten Sie nun nicht, bei Ihnen herrsche kein Chaos! Es gibt eine ganze Industrie, die uns Ticketsysteme verkauft, mit denen wir das Chaos dokumentieren können.
Wie man Chaos Engineering einführt, erfahren sie in diesem Talk. Anhand von praxisnahen Beispielen lernen Sie, was alles schief gehen kann. Zum Ende des Talks führen wir in einer verteilten Anwendung ein Chaosexperiment durch. Mithilfe des Chaos Monkey for Spring Boot werden wir versuchen, die Anwendung zum Absturz zu bringen. Was dank des implementierten Resilience-Patterns aber nicht gelingen wird.
Ständig ähnlichen Code zu schreiben ist langweilig und fehleranfällig. Lässt sich das mit Bibliotheken oder Frameworks nicht ändern, bietet sich ein modellgetriebenes Vorgehen zum Generieren von Quellcode an. Doch wie kann man diese Idee in der Welt von Angular nutzen?
In dieser Session erhalten Sie eine Antwort auf diese Frage. Sie sehen, wie Schematics – der Codegenerator hinter der Angular CLI – funktioniert und wie Sie Vorlagen zum Generieren eigener Codestrecken bereitstellen können. Außerdem lernen Sie das TypeScript Compiler API kennen und sehen, wie sich damit bestehender Quellcode analysieren und zielgerichtet erweitern lässt.
Ein Beispiel dafür ist das Registrieren einer generierten Komponente bei bestehenden Modulen. Basierend darauf wird ein Werkzeug erzeugt, das unter Nutzung einer JSON-basierten DSL Ihre Komponenten, Services, Module und Routen generiert und sich außerdem in die Angular CLI integriert. Am End liegt eine Lösung vor, die Sie für Ihre Zwecke adaptieren können, um monotonen Episoden Ihres Projektalltages zu entfliehen. Packen wir's an!
Vor der Entwicklung von vernetzten Applikationen für das Internet of Things stellt sich häufig die Frage: "Welches Protokoll ist für meinen Anwendungsfall das Richtige?" Die Auswahl ist groß und kann unübersichtlich werden:
Dieser Talk zeigt die grundlegenden Prinzipien aller wichtigen IoT-Protokolle und stellt dar, für welche Anwendungsfälle sich welche Technologie gut eignet. Konkret werden die folgenden IoT-Protokolle beleuchtet mit Beispielen von Anwendungsfällen: AMQP, CoAP, HTTP, MQTT, MQTT-SN und XMPP. Dabei möchte dieser Vortrag ein Wegweiser sein durch den IoT-Protokolldschungel und dem Zuhörer alle Werkzeuge in die Hand geben, um danach selbst auf Entdeckungsreise gehen zu können.
Die Pressemitteilungen überschlagen sich derzeit, wenn es um das Thema Digitale Transformation geht. Unweigerlich erhöht sich der Druck auf Unternehmen, doch endlich etwas in diese Richtung zu unternehmen. Nur wie? Dabei wird viel zu selten über die fundamentale Rolle von Abläufen aller Art (nicht nur betriebswirtschaftlichen) diskutiert. In diesem Talk möchte ich auf die enormen Herausforderungen der Digitalisierung aus Workflowsicht eingehen und dann konkrete Handlungsanweisungen geben, wie die Digitalisierung gelingen kann. Anhand eines Praxisprojekts mit mehreren hundert realisierten, nicht trivialen Workflows werden Herausforderungen und konkrete Lösungsmöglichkeiten diskutiert. Dabei werde ich den Bogen von der Projektplanung über die Implementierung bis zum Betrieb spannen und die wesentlichen Ergebnisse als Best Practices in Bezug auf Methodik, Architektur und Technologieempfehlung zusammentragen.
Die Anzahl der IoT-Projekte nimmt stetig zu, ebenso die Anzahl der unterschiedlichen Kommunikationsplattformen. In diesem Talk werden verschiedene Kommunikationsplattformen betrachtet. Welche Lösung ist die richtige für welche Situation? Ob klassische IT-Infrastruktur oder Cloud-Lösung, je nach Problemstellung kann die eine oder andere Plattform ihre Vorteile ausspielen. Aus der praktischen Erfahrung in Enterprise-IoT-Projekten ziehen wir einen Vergleich.
Softwarearchitektur ist ganz einfach: Eigentlich muss man nur ein System aufteilen und moderne Ansätze wie DDD oder Microservices nutzen. Diese Präsentation zeigt völlig andere Voraussetzungen, die ein guter Softwarearchitekt mitbringen muss. Im Mittelpunkt stehen die technischen Entscheidungen, die ein Architekt treffen muss, wie man am besten mit solchen Entscheidungen umgeht und wie man herausfindet, auf welcher Basis man die Entscheidungen treffen kann. Und weil Softwareprojekte immer im Team stattfinden, geht es natürlich auch um Soft Skills und den Umgang mit den Teams.
The ability to focus on code and code alone is the holy grail of programmer productivity. So we have Scrum, Kanban, bug trackers, instant messengers, to-do lists and task boards that in theory should help us focus on code. But more often than not they don't. In "Time to Code", Kees Jan dissects distraction. Using well-known models he explains what it is that distracts from coding. He then looks at the methods and thinking behind the tools and how they should help you focus.You walk away with better insight into the visible and invisible distractions that sit between you and your code. Kees Jan gives you some simple changes for you to make that will reduce distraction and give you more time to work on code.
In diesem Vortrag geht es darum, dass teilweise lange vor dem Architekturentwurf bereits wichtige Entscheidungen getroffen werden, die später die Architektur und/oder die Implementierung beeinflussen. Hier werden deshalb ganz konkret verschiedene Methoden vorgestellt, wie z. B. das Inverse Conway Maneuver, das Walking Skeleton, das User Story Mapping und die Hamburger Methode, mit denen ein Architekt diese Entscheidungen bewusst beeinflussen kann. Die Methoden werden anhand einer realistischen Beispielanwendungen gezeigt, sodass die verschiedenen Vor- und Nachteile sichtbar werden.
Progressive Web Apps (PWAs) schließen die Lücke zwischen Webseiten und nativen Applikationen. Sie kombinieren die hohe Erreichbarkeit von Webseiten und die offenen Standards des Web in Bezug auf Aussehen (HTML, CSS), Suchmaschinenoptimierung (SEO) und Funktionalität (Push API, Notification API, Web Storage API, HTTPS etc.) mit einigen Eigenschaften von nativen Applikationen. So können Progressive Web Apps offline verwendet (Service Worker API) und über den Home Screen aufrufen werden (Web-App-Manifest). Dieser Talk zeigt, wie man eine PWA erstellt. Schwerpunkt hierbei ist das Service Worker API, das eine zentrale Rolle für Progressive Web Apps einnimmt. Des Weiteren wird gezeigt, wie das Web-App-Manifest aussieht und welche Tools dabei helfen, eine PWA zu realisieren.
Microservices are everywhere. Everyone seems to be either going into that direction or is talking about doing so. But are they really the best choice for you?
Developers! Architects! Buckle up as we’re going to cut through the hype. Instead of going all-in on microservices or all-in on a big ball of mud, we’ll introduce a third choice: the Majestic Modular Monolith! We’ll look at what it brings to the table, when it may be a good fit and how it compares to the other two approaches in terms of code organization, productivity, scalability and much more. We’ll look at how this can be designed and implemented in practice. Get ready. We won’t shy away from the hard questions.
Eine produktionsähnliche, portable Testumgebung, beschrieben in Code - damit lösen wir uns von der Notwendigkeit einer komplizierten und manuellen Konfiguration einer Testumgebung, die wir womöglich noch mit anderen Entwicklern und Teams teilen müssen.
Wir werden sehen, wie wir eine voll funktionsfähige Test-Suite, die nicht nur aus Unittests, sondern auch aus Integration- und Acceptance-Tests besteht, direkt nach dem Auschecken unseres Repositories ausführen können. Und anstatt eine Menge von fehleranfälligen und fragilen Bash-Skripten zu schreiben um unsere Docker-Container zu instrumentieren, werden wir unsere Erfahrung im Schreiben von JUnit-Tests dazu verwenden, die leistungsfähige Testcontainers Java-Library für diesen Zweck einzusetzen. Zum Schluss werden wir einen kleinen Ausblick auf Groovy und Spock wagen und sehen, wie wir noch aussagekräftige Tests im BDD-Stil schreiben können.
Der Vortrag zeigt, wie der agile Fachbereich mit dezentralen, strukturierten Regelwerken wieder mehr Kontrolle über das Produkt und dessen Features erhält. Ressourcenknappheit in der IT und komplexe Softwarelandschaften machen es notwendig, den fachlichen Mitarbeiter direkt an der Implementierung mitwirken zu lassen. DMN kann hierbei die Brücke schlagen und ohne aufwendige Administrationssysteme und UIs genau diese Flexibilisierung fördern.
Aus technischer Sicht vermeiden wir mit dieser Herangehensweise das Duplizieren geschäftskritischer Regelwerke in Validierung und Ablaufsteuerung in verteilten Systemen und erhöhen so drastisch die Effizienz in der Featureentwicklung.
The ever-increasing complexity of modern systems, modern DevOps and continuous delivery-centric workflows place new demands on performance and reliability testing approaches. When systems are comprised of many distributed components, each with its own performance and reliability characteristics, and when a misconfiguration that causes a cascading failure under load can be automatically deployed across environments all the way from dev to production in a matter of hours, you really need to make sure that a rigorous, well-understood, and easy-to-follow performance testing process is in place. In this talk, we will look at how an effective performance testing process can be implemented from the ground up (using the open-source Artillery.io toolkit) to be an integral part of an organization’s continuous delivery pipeline. This talk is for developers, QAs, and engineering managers who are working on a greenfield project with high performance and reliability requirements or working on production systems which are experiencing issues when under load.
Angular ist eins der populärsten Frameworks für moderne webbasierte Geschäftsanwendungen. In diesem Workshop erfahren Sie von Manfred Steyer, Google Developer Expert (GDE), wie Sie damit große Projekte umsetzen können. Dazu wird eine vollständige Anwendung unter Berücksichtigung von Best Practices live entwickelt. Verschiedene Architekturansätze werden diskutiert und die einzelnen Building Blocks im Detail betrachtet. Sie lernen die Ideen hinter den vorherrschenden Konzepten kennen und sehen, wie Sie aus der Welt von Java bekannte Strategien wie Dependency Injection, Datenbindung oder Komponentenorientierung mit Angular und TypeScript realisieren.
Die grundsätzliche Verwendung von Hibernate und JPA ist einfach und schnell zu erlernen. Die Probleme beginnen immer erst dann, wenn komplexe Enterprise-Anwendungen mit hohen Performanceanforderungen erstellt werden sollen. In solchen Projekten wird häufig über die schlechte Performance von Hibernate geklagt. Der Grund für die langen Antwortzeiten ist aber häufig nicht Hibernate, sondern dessen ineffiziente Verwendung. Hibernate kann problemlos für die Realisierung performancekritischer Enterprise-Anwendungen eingesetzt werden. Allerdings werden dafür einige fortgeschrittene Features und ein gutes Verständnis von JPA und Hibernate benötigt. Diese werden im Rahmen dieser Schulung anhand vieler praktischer Beispiele und Übungsaufgaben vermittelt.
Domain-driven Design gibt Architekten ein Vorgehen an die Hand, mit dem große Anwendungen aufgeteilt werden können. In diesem Powerworkshop probieren die Teilnehmer verschiedene Techniken aus, um eine Domäne zu zerlegen. Ganz praktisch erarbeiten die Teilnehmer mit Event Storming zunächst ein fachliches Verständnis über die Domäne. Anschließend erstellen sie eine Context Map mit Bounded Contexts und den Beziehungen zwischen den Kontexten. Im Mittelpunkt steht dabei selbst machen, Feedback - und Spaß!
In diesem Hands-on-Workshop über Application Security geht es unter anderem um Single Sign-on via OpenID Connect (Code Flow und Implicit Flow), Autorisierung mit Role Based Access Control, ressourcenbasierte Berechtigunsprüfungen, Validierungen, Defense in Depth, Injections, das Zusammenspiel von Application Security und -Architektur und vielem mehr. Die Beispielanwendung ist eine Self-Contained-Systems-Anwendung, die initial an den ROCA-Style angelehnt ist und Spring Boot 2, Spring Security 5 und Thymeleaf verwendet. Im weiteren Verlauf wird eine SPA mit Angular verwendet werden, wodurch die Unterschiede in Bezug auf die Application Security deutlich werden.
In diesem Ganztagsworkshop zeigen Ihnen Ingo Rammer und Manuel Rauber, wie Sie — ganz ohne CPU-intensives Mining und ohne Cryptowährungen — auf der Basis aktueller Technologien eine private (“permissioned”) Blockchain zwischen Geschäftspartnern aufbauen, dafür Smart Contracts entwickeln und diese mit Ihren Java-Anwendungen nutzen können.
Sie wollen mit Experten Microservices diskutieren? Sie brauchen Einschätzungen und Ratschläge zu Fragestellungen und Problemen im Projekt? In diesem interaktiven Workshop haben Sie dazu die Möglichkeit - egal ob sie Microservices-Experte oder -Anfänger sind. Mithilfe einer professionellen Moderatorin und dem populären Open-Space-Format werden wir gemeinsam Antworten, Lösungen und Diskussionen zu Ihren Themen erarbeiten und so einen Austausch auf hohem technischem und konzeptionellem Niveau zu ermöglichen. Dabei steht Ihnen das geballte Wissen aller Teilnehmer des Workshops und einiger der erfahrensten Speaker im Microservices-Bereich zur Verfügung.
In diesem Expertenworkshop sind Sie richtig, wenn Sie Architekturfragen diskutieren, technische Lösungen erörtern und praktische Fragen zum Thema Microservices klären wollen.