In this workshop we'll look at how to build cloud-native Java applications. A cloud-native application is one that is designed to fully exploit a cloud platform both in the application layer - where things decompose into microservices - and at the data layer where NoSQL offers better horizontal scaling and fitness for specific purpose. We'll look at:
- writing services and handling non-functional requirements like metrics and logging with Spring Boot
- scaling out safely and building fault-tolerant systems using Spring Cloud and its support for distributed systems patterns like the circuit breaker, service registration and discovery, and centralized configuration management.
- offloading as much operational work as possible to the platform, Cloud Foundry
Eine der großen Neuerungen in Spring 5.0 sind die auf Reactor und Reactive Streams basierenden Erweiterungen für die Entwicklung von Non-blocking-Services und Anwendungen. Im Rahmen des Workshops werden wir auf Basis von konkreten Codebeispielen und Übungen eruieren, wie sich die Reactive-Erweiterungen auf Architekturen auswirken, wie man den Paradigmenwechsel von einem imperativen hin zu einem reaktiven Programmiermodell schafft und wie die Neuerungen in Spring 5.0 nutzbar sind.
Microservices sind in aller Munde. In diesem Workshop wollen wir nicht nur theoretisch über Microservices sprechen, sondern ein ganzes System aus Microservices diskutieren. Zunächst gibt es eine Einführung in Microservices-Architekturen, ihre Vor- und Nachteile sowie wesentlichen Eigenschaften. Dann geht es in die Praxis: containerloses Deployment mit Docker und Spring Boot und Koordination der Anwendungen mit Spring Cloud und dem Netflix-Stack. Am Ende können wir eine Anwendung aus mehreren Microservices betreiben und weiterentwickeln.
Das äußerst populäre Webframework Angular erlaubt die Entwicklung wartbarer und benutzerfreundlicher Anwendungen, die auf allen Plattformen laufen. Es bietet Komponenten, Dependency Injection und dank TypeScript auch die Vorzüge der statischen Typisierung, die man von Sprachen wie Java kennt. In diesem Workshop lernen Sie anhand eines durchgängigen Beispiels, das live entwickelt wird, die hinter Angular stehenden Konzepte kennen und erfahren, wie Sie dieses Framework in Ihren Projekten nutzen können.
Microservices-basierte Architekturen auf der grünen Wiese starten, mag ja noch vorstellbar sein. Was aber, wenn es – wie leider so häufig in der Praxis – einen bestehenden, historisch gewachsenen Monolithen gibt, der schon einmal bessere Tage gesehen hat? Wie kann ein möglicher Migrationspfad aussehen, und mit welchen Stolperfallen muss dabei gerechnet werden? Im Rahmen des Workshops nehmen wir uns anhand eines konkreten Beispiels einen solchen Monolithen vor, überlegen, welche Services sich sinnvoll herauslösen lassen und welche Patterns dazu verwendet werden sollten. Natürlich ergeben sich durch die neue Architektur auch neue Herausforderungen, denen wir uns stellen müssen. Aber auch das kann uns nicht stoppen.
In den Zeiten von Microservices wird klar, wie wichtig Domain-driven Design (DDD) nach wie vor ist. Denn nur mit strategischem Design (also DDD im Großen) und dem Aufteilen der Domäne in Bounded Contexts kann ein sinnvoller Schnitt für die Microservices gefunden werden.
Aber auch taktisches Design (also DDD im Kleinen) mit der Ubiquitous Language und den "Building Blocks" Entities, Value Objects, Aggregates, Services und Co. hat nichts an Aktualität verloren.
In diesem Workshop nehmen wir uns einen Tag Zeit, um DDD näher anzuschauen. Der Workhop besteht abwechselnd aus Vortrag, Diskussion und Übungen.
Mit Java EE lassen sich schnell und einfach Anwendungen entwickeln – teilweise sogar einfacher als im Standalone-Umfeld. Dabei werden keine esoterischen Frameworks benötigt: Der Standard aus JPA, BV, CDI, JSF etc. reicht vollkommen aus. Wir wollen in diesem Workshop zeigen, wie rasch man mit Java EE zu Erfolgen kommt. Dazu bauen wir eine durchgängige Beispielanwendung mit einer sinnvollen Geschäfts- und Präsentationslogik auf. Am Ende nutzen wir die Zeit nach Möglichkeit für einen Einblick in weitere Teile der Plattform wie Timer, REST, Batch oder die für Java EE 8 angekündigten Neuerungen.
Das Beispiel wird interaktiv entwickelt und steht allen Teilnehmern als Git Repository zum aktiven Mitmachen zur Verfügung. Benötigt wird nur ein Notebook mit Java 8, Maven, einer IDE mit Maven-Unterstützung und einem Java-EE-Server wie WildFly, Payara oder WebSphere LP. Details zur Vorbereitung stehen ab Mitte April auf https://github.com/GEDOPLAN/javaee-ohne-ballast.
Digitale Transformation ist seit einigen Jahren in aller Munde. Doch wie geht sie eigentlich? Wie immer in unseren Workshops und Vorträgen, geht es weniger um die Technologie als um die vielschichtigen Veränderungen im Unternehmen auf allen Ebenen. Insbesondere auch darum, welche Mittel und Möglichkeiten es gibt, ein Klima des Aufbruchs zu schaffen. Viele sprechen auch von einem Ökosystem der Ideen und Innovationsgeist.
Wir werden daher zum Auftakt des Workshops in Teams neue Geschäftsideen erarbeiten und dokumentieren, die wir im weiteren Verlauf des Workshops mit den Mitteln aus unserem Buch „Business Enterprise Architecture“ soweit ausgestalten, dass wir einen Masterplan für die Transformation sowie ein bewertetes Transformationsportfolio zur Umsetzung der neuen Geschäftsidee haben.
So werden die Teilnehmer die Werkzeuge des Buchs praktisch anzuwenden lernen und unter anderem ein zur Idee passendes Business-Model, Operating-Model und eine Zielarchitektur entwickeln. Außerdem werden wir ausführlich darüber diskutieren, wie eine Transformation strukturiert und durchgeführt werden kann. Der Workshop wird interaktiv und mit vielen Diskussionen und Übungen gestaltet werden. Die jeweiligen Aspekte werden in kleinen Gruppen erarbeitet und im Plenum mit allen Teilnehmern stetig verbessert. Bringen Sie Kreativität und gute Laune mit.
Dr. Thomas Grimm berät seine Kunden bei der Ausgestaltung ihrer Transformation in den unterschiedlichen Dimensionen. Er ist promovierter Physiker und hat in den 1990er-Jahren in Frankfurt, Göttingen und Los Angeles studiert. Kurz vor der Jahrtausendwende wechselte er als Berater für neue Softwaretechnologien und moderne Architekturen in die Industrie. Mitte 2004 übernahm er bei einem großen Telekommunikationsanbieter die Verantwortung für die Integrationsstrategie und -plattform SOA. Später zeichnete er als Group-Enterprise-Architekt für die Entwicklung der Konzernzielarchitektur und deren internationales Alignment verantwortlich. Anfang 2013 übernahm er in einem neuen Geschäftsfeld für Fort- und Weiterbildung die Verantwortung für Strategie und Business Development. Neben seiner beruflichen Tätigkeit hat Thomas einen Masterstudiengang „Enterprise Information Management“ an der Henley Business School (UK) erfolgreich abgeschlossen. Weiterhin betätigt er sich gerne als Autor von Fachartikeln und Büchern, Sprecher auf Konferenzen und als Gastdozent.
Die DB Systel GmbH hat sich vor zwei Jahren auf eine Reise in eine agile und selbstorganisierte Arbeitswelt gemacht. Wenn jedoch agiles Arbeiten auf Konzernstrukturen trifft, wird es knifflig: lange eingeübte Handlungsmuster werden in Frage gestellt; unterschiedliche Werte und Menschenbilder treffen aufeinander. In seinem Beitrag berichtet Dr. Martin Strunk authentisch aus der Praxis der agilen Transformation der DB Systel. Welchen Umsetzungsweg haben wir gewählt? Welche Ergebnisse wurden erreicht? Welche positiven/negativen Organisations- und Verhaltensmuster haben wir beobachtet? Und vor allem: wie lernen wir aus unseren Erfahrungen?
Wer große IT-Systeme weiterentwickelt, stellt schnell fest, dass die Anzahl der Stakeholder täglich zuzunehmen scheint. Anforderungen erreichen das Team oft von allen Seiten. Nach dem Motto: „Hey Joe, mach mal gerade…“ werden die Entwickler mit unpriorisierten Anforderungen konfrontiert. Dringend und wichtig werden nicht unterschieden. Große Änderungen, um strategische Schritte zu gehen und technische Schulden abzubauen, haben keinen Platz mehr. Das Management sieht die Teamleistung kritisch, während sich das Team über die Leistungsgrenze belastet fühlt. Der Prozess ist kaputt.
Tobias Ranft und Karsten Glied zeigen in ihrem Vortrag, wie Ordnung in das Anforderungsmanagement gebracht werden kann durch einen sauberen Prozess und klare Rollen. Mit Fokus liefern Teams den Wert, den das Unternehmen braucht.
Retrospektiven sind ein Kernelement agiler Vorgehensmodelle wie Scrum. Wie können Retrospektiven aufgebaut sein, wie halte ich sie lebendig und stelle sicher, dass sie kontinuierlich Verbesserungen hervorbringen? Welche Werkzeuge gibt es für verschiedene Situationen in Retrospektiven?
In vielen Unternehmen wird die Idee, Software agil zu entwickeln, Bottom-up geboren. Ein Team beginnt, Scrum einzusetzen, andere Teams kopieren das Vorgehen, und so kommt es schnell zur Aussage „Wir arbeiten alle agil!“. Die Realität ist aber oft, dass die einzelnen Teams ein eigenes Vorgehen („Scrum, but ...“) entwickelt haben und Kommunikation bzw. Koordination unter den Teams vernachlässigt wird. Die Projekte leiden meist unter denselben Herausforderungen wie vor der kleinen agilen Revolution (Scope, Time, Abhängigkeiten ...). Schnell wird dann die agile Entwicklung wieder durch klassisches Projektmanagement ersetzt. Mit den richtigen Schritten zu Beginn einer agilen Transformation lässt sich das verhindern, und mit einem Framework für skaliertes Scrum, wie z. B. Nexus, finden sich gute Lösungen, um die Koordination zwischen den Teams sicherzustellen und Abhängigkeiten zu minimieren.
In seinem Vortrag erklärt Volker Schmidt, warum erfolgreiche agile Projekte nicht innerhalb der Grenzen der IT enden. Vielmehr muss die Organisation als Ganzes agil denken und handeln, damit die Transformation gelingt. Anhand von Beispielen zeigt er Wege und Methoden auf, auch außerhalb der IT agil zu arbeiten, welche kritischen Erfolgsfaktoren es dabei gibt, und was eine Transformation für Führungskräfte und Management bedeutet.
Märkte sind in Bewegung, Technologie ist günstig, Fachkräfte sind rar. Wie können wir darauf reagieren? Wie kann uns Agilität helfen, diese Herausforderungen zu meistern? Dieser visuelle Vortrag zeigt, warum Agilität unabdingbar ist, räumt mit Missverständnissen auf und zeigt praxiserprobte Ansätze für eine erfolgreiche Einführung agiler Prinzipien im Unternehmen.
Agile Methoden und ihre Regeln haben viele Stolpersteine, über die man fallen kann. Oft scheitern sie am Verständnis, weil es schwer fällt zu verstehen, worauf manche Regeln eigentlich abzielen. Aber auch der Faktor Mensch kann ein Problem sein – nicht nur das Gewohnheitstier Mensch. Diese Session soll zeigen, welche Stolpersteine das sein können und wie man sie aus dem Weg räumt.
Zum Abschluss diskutieren die Speaker des Agile Days die wichtigsten Themen und Fragestellungen, die sich im Laufe des Tages gezeigt haben. Die Teilnehmer können selbstverständlich auch eigene Fragen, Erfahrungen und Ideen in die Diskussion einbringen.
Software development has been evolving. When I started in the industry, working at companies like Microsoft, we would bet many person-years of development and many millions of dollars into the development of products that would sometimes be hits and sometimes be total duds. We were building blind. This blindness was partly due to our waterfall processes, but also to how software distribution and marketing worked then. A flop for a smaller company could mean the end of the line. The cost of failure was incredibly high.
Over the years, we learned how to take some of that risk out by switching to agile software development and now Lean. Working this way we can learn quicker, and take smaller risks. However, there are other things we can do in how we architect our software or roll it out that can also reduce the technical and product risk and help us fail smarter and learn faster.
In this keynote, I speak about my experiences building waterfall products at Microsoft, building agile and lean at Adobe, Spotify, and Avvo; and I give real architectural, cultural and organizational tools you can use to make your projects and company more failure safe.
Im E-Commerce zählt die Devise: agiler, schneller und innovativer. Um heute erfolgreich zu sein, müssen bestehende Geschäftsmodelle regelmäßig hinterfragt und kontinuierlich weiterentwickelt werden. Otto.de ist eine der größten E-Commerce-Plattformen Deutschlands, und wir stellen uns diesen Herausforderungen. Die Entwicklung von otto.de folgt einer strikten, vertikal zugeschnittenen Shared-nothing-Architekutur. Um uns nicht wieder mit den vielfältigen Problemen monolithischer Anwendungen beschäftigen zu müssen, entwickeln wir otto.de zusätzlich in Microservices und haben unsere Infrastruktur dementsprechend verändert. Im Vortrag steht neben der Architektur von otto.de der Umgang mit Microservices im Mittelpunkt. Dabei steht nicht nur die reine Entwicklung im Fokus der Betrachtung, sondern auch Real-Life-Aspekte wie Deployment und Betrieb.
Java 8 ist mittlerweile drei Jahre alt, und mit Java 9 steht das nächste Release vor der Tür. Zeit, zurückzublicken. Wie hat die Community Java 8 aufgenommen? Was hat gefallen? Was hat irritiert? Wir schauen noch einmal kurz auf die Java-8-Features und wie sie bei den Entwicklern angekommen sind. Beispielsweise haben mit den Lambdas und Streams Ideen aus der funktionalen Programmierung Eingang in Java gefunden. Damit ist Java zu einer Multiparadigmensprache (objektorientiert plus funktional) geworden. Wie geht es den Java-Programmierern damit? Wie gehen sie damit um?
Im Zusammenhang mit Microservices und zeitgemäßen Deployment-Modellen hat Spring Boot einige Popularität erlangt. Während es zwar Unterstützung für einige Java-EE-Standards wie JAX-RS mitbringt, entwickelt man damit letztlich jedoch immer eine Spring-Anwendung. Somit muss entsprechendes Spring-Know-how mitgebracht oder aufgebaut werden. Daher stellt Boot nicht für jedermann die optimale Lösung dar. Entwickler, die es bevorzugen, komplett auf Basis des Java-EE-Standards zu entwickeln, haben inzwischen jedoch einige Alternativen, wie etwa WildFly Swarm, Payara Micro oder KumuluzEE. In dieser Session werden die unterschiedlichen Lösungen miteinander verglichen, der aktuelle Stand der Technik wird beleuchtet und an einem konkreten Beispiel demonstriert, wie Java EE Microservices erstellt werden.
“It is not necessary to change. Survival is not mandatory.” W. Edwards Deming
Work takes time to flow through an organization and ultimately be deployed to production where it captures value. It’s critical to reduce time-to-production. Software - for many organizations and industries - is a competitive advantage.
Organizations break their larger software ambitions into smaller, independently deployable, feature-centric batches of work - microservices. In order to reduce the round-trip between stations of work, organizations collapse or consolidate as much of them as possible and automate the rest; developers and operations beget “devops”, cloud-based services and platforms (like Cloud Foundry) automate operations work and break down the need for ITIL tickets and change management boards.
But velocity, for velocity’s sake, is dangerous. Microservices invite architectural complexity that few are prepared to address. In this talk, we’ll look at how high performance organizations like Ticketmaster, Alibaba, and Netflix make short work of that complexity with Spring Boot and Spring Cloud.
Die Unternehmensarchitektur erstreckt sich von der Strategie, den Geschäftsprozessen, Service- und Anwendungslandschaft über das organisationale Datenmodell bis hin zur Softwarearchitektur und IT-Infrastruktur. Bisher stand die Frage der Prinzipien, Methoden und Werkzeuge für eine zielorientierte Ausgestaltung und Veränderung der IT-Landschaft im Vordergrund von Unternehmensarchitekturmanagement (EAM). Es existieren verschiedene Frameworks, wobei sich zum Beispiel das von der Open Group standardisierte TOGAF etabliert hat.
Neu und bisher kaum betrachtet ist der Beitrag, den EAM hinsichtlich der Innovationsfähigkeit einer Organisation leisten kann. In der Praxis verschiedener Architekturprojekte, etwa in den Industrien Transport, Retail und im öffentlichen Sektor, hat Capgemini einen Zusammenhang zwischen der Architektur einer Organisation und deren Innovationsfähigkeit identifiziert.
The first thing you often hear when mentioning DevOps is "You build it, you run it!". Especially managers seem to love that phrase as it appears to be the sadly missed weapon to discipline those coltish and irresponsible developers.
Unfortunately, that's also often where the understanding of DevOps ends. Especially in bigger companies, that go for "DevOps, microservices and all that" very strange processes are set up that reduce the original ideas to absurdity. But also in other places, the required prerequisites for "You build it, you run it!" are not established.
In this session we will have a closer look at the common goals of DevOps and learn
* when and why we need them,
* what belongs to it,
* how to do it,
* and which other prerequisites must be met before we can even think about "You build it, you run it!"
After this session, the next time someone tells you "You build it, you run it!", you will answer "Sure! I'd love to – as soon as you have taken care about the following issues ..."
Es klingt verlockend: Entscheidungslogik zentralisieren, automatisieren und kurzfristig änderbar machen. Doch bisher hat sich Business Rules Management noch nicht in voller Breite durchgesetzt. Jetzt kommt DMN, ein Geschäftsregelstandard als Ergänzung zur Prozessmodellierungssprache BPMN. Dieser Vortrag gibt einen Überblick über typische Herausforderungen beim Einsatz von Business Rules und was sich durch DMN ändert. Wo hilft der neue Standard? Wo kommt es auf die Tools an? Wo hilft gutes Design?
Wie oft kannst du ein neues Feature releasen? Jede Woche? Jeden Tag? Jede Stunde? Continuous Delivery ist einer der wesentlichen Treiber, warum wir Cloud-native Anwendung bauen. Für Software-driven Organisationen ist das der Schlüssel für eine sicherere, stabilere Software bei minimiertem Risiko und kurzen Feedbackschleifen. Die Herausforderung dabei ist, aus jeder Codeänderung möglichst schnell eine lauffähige und gründlich getestete Software zu machen. Das ist für viele Firmen ein wesentlicher Wettbewerbsvorteil. Wir zeigen in diesem Vortrag eine Werkzeugkette, mit der Continuous Delivery nicht nur für Cloud-native Anwendungen, sondern auch auf Cloud-nativer Infrastruktur möglich ist. Ganz im Gedanken von „Everything is Code“ betrachten wir dabei nicht nur das Bauen und Testen von Software, sondern auch die Automatisierung der Infrastrukturbereitstellung, der Deployments und Roll-outs. Dabei treffen alte Bekannte (z.B. Jenkins, SonarQube) auf Cloud-Computing-Technologien wie z.B. Docker für Betriebssystemvirtualisierung und DC/OS für das Clustermanagement.
Bessere Telefonie ist unser erklärtes Ziel. Radikales Do-it-yourself! In einer klassischen Produktwelt, geprägt von etablierten Telefoniekonzernen, sind wir daher vermutlich Punk. Punk ist nämlich das, was im Kopf passiert, nicht das, was man am Körper trägt. Anhand der Entwicklung unseres Produkts "sipgate simconnect" veranschaulicht Lukas Hejniak den sipgate-Weg der Entwicklung und Positionierung innovativer Lösungen in einem klassischen Markt.
Das Motto: Sell before build! Wir verkaufen ein Produkt, das nicht existiert. Warum? Entsprechend unserer agilen Vorgehensweise und Überzeugung im Rahmen der Softwareentwicklung werden wir auch nur das vom Kunden gewünschte Produkt realisieren. Wir programmieren nicht 20, nicht 40, nicht 60 und auch nicht 80 % des Produktumfangs, sondern realisieren vielleicht 10 % des Produkts! Der Vorteil? Wir vermeiden "Waste". Wir sprechen über realistische Zahlen. Wir treffen keine Annahmen über mögliche Absatzmärkte und Kundengruppen, sondern identifizieren sie. Ein kleines Team von bis zu sieben Personen – ohne Marketingexperten, ohne Marketingfeuerwerk – erprobt eine Innovation. Dabei entkoppeln wir unsere Middleware über JMS Events und kapseln mögliche Prototypen in eigenen Microservices auf unseren Application-Servern. Scheitert das Projekt, wird der Prototyp entsorgt und die Middleware muss nicht weiter angepasst werden.
„Point 8“: Ein unscheinbares Straßenschild in der Nähe von Genf verweist auf einen der Zugänge zur größten Maschine der Welt. Unweit des Genfer Flughafens steht einhundert Meter unter der Erde ein riesiges Experiment, das jedes Jahr ca. zehn Petabyte an Daten erzeugt. Die Wissenschaftler am CERN verfeinern seit Jahren die Verfahren zur Speicherung, Filterung und Analyse dieser Daten.
Die Wirtschaft steht zurzeit vor ähnlichen Herausforderungen. Sensoren und IT-Systeme erzeugen gewaltige Datenmengen. Das Internet macht die Daten rund um die Uhr verfügbar. Aber die Interpretationshoheit über viele Daten haben große Firmen aus dem Silicon Valley, aus Russland oder China.
Der Beitrag zeigt, dass Daten und Infrastruktur nicht immer „Big“ sein müssen, um zuverlässige Schlussfolgerungen zu ermöglichen. Menschen werden als Experten für Prozesse und Abläufe wichtiger denn je. Denn auch wenn alle über künstliche Intelligenz reden, hilft uns vor allem das Wissen der langjährigen Mitarbeiter, den Daten ihre Geheimnisse zu entlocken.
Der digitale Wandel ist keine Revolution. Er muss schrittweise erfolgen. Datennahme, Auswertung, Beurteilung und Validierung müssen stetig an die Rahmenbedingungen angepasst werden. So können bestehende Geschäftsmodelle erhalten und neue geschaffen werden. Auch im deutschen Mittelstand.
Software development is pressed for faster and faster release cycles with acceptable quality, budget and security. As movements like CI, CD and DevOps aim to cut down on release cycles, it's security's job to help control the risk. The risk landscape is complex as modern development practices increasingly consume more and more third party code. Traditional methods do not cut it anymore – it's time for DevSecOps. This session gives an overview of how companies have implemented DevSecOps practices in their own delivery pipelines and how this can help increase developer awareness of risks affecting them. We'll walk an example CICD Pipeline and explore how security has been embedded as a part of it, how the movement is shaping up and how standards are starting to follow suite.
DMN ist der brandneue Standard im Bereich der Geschäftsregeln und erfreut sich großer Aufmerksamkeit. Und mit der Camunda DMN Engine gibt es bereits heute eine leichtgewichtige Open Source Bibliothek, die über Java oder REST verwendet werden kann. Die Session zeigt, wie Entscheidungen in DMN so definiert werden können, dass sie technisch ausführbar und fachlich verständlich und anpassbar sind. Es wird live eine Entscheidungstabelle erstellt und anschließend automatisiert und im Betrieb verändert. Dabei wird nicht nur das Einbinden der Engine in wenigen Zeilen Java-Code gezeigt, sondern auch die Nutzung fortgeschrittener Features wie Testing, Versionierung und Historisierung.
Einer der wertvollsten Bereiche von Domain-driven Design ist zweifelsohne das Strategic Design mit seinen Context-Mapping-Patterns. Allerdings wirken die meisten Beschreibungen der Patterns in textueller Form etwas abstrakt und schwer verdaulich. Im Rahmen dieses Vortrags werden die Patterns auf Basis einer einfachen Spring-Boot-basierten Anwendungslandschaft praktisch und greifbar erklärt und vorgestellt. Hierbei gehen wir unter anderem auf folgende Patterns ein: Customer/Supplier, Open Host Language, Anti-Corruption Layer, Conformist oder Separate Ways.
Microservices sollen keine gemeinsame Datenbank haben. Warum eigentlich? Und was ist mit der dabei entstehenden Redundanz? Viele Architekturen kranken an zu großen und inflexiblen Datentöpfen. Dieser Vortrag zeigt die Gründe für die Probleme: die Missachtung von Bounded Context und eine viel zu enge Kopplung der Datenmodelle. Ansätze wie Datenreplikation zeigen, wie solche Probleme gelöst werden können, ohne dass dabei zu große Redundanzen bei den Daten entstehen.
Although Java’s strict type system is a great help for avoiding programming errors, it also takes away some of the flexibility that developers appreciate when using dynamic languages. With runtime code generation, it is possible to bring some of this flexibility back to the Java virtual machine. For this reason, runtime code generation is widely used by many state-of-the-art Java frameworks for implementing POJO-centric APIs, but it also opens the door to assembling more modular applications. This presentation offers an introduction to runtime code generation and its use on the Java platform. Furthermore, it discusses the upsides and downsides of several code generation libraries such as ASM, Javassist, cglib, and Byte Buddy.
Jeder spricht von Digitalisierung, digitalen Geschäftsmodellen, der digitalen Transformation, digitalen Unternehmen und der digitalen Generation Y. In dieser Session möchte ich in die Welt der Digitalisierung eintauchen, euch die Begriffe in einen Kontext setzen und meine Sicht auf die Digitalisierung in Gänze darstellen. Wir werden auch die Geheimnisse von eher technischen Themen wie APIfication bzw. API-Management, Blockchain und Cloudifizierung kennen lernen. Nicht zu kurz kommen dürfen die Begriffe Generation Y, Customer Churn und zum Abschluss "digitales Unternehmen". Kurzum gesagt: Nach dieser Session könnt ihr zumindest das Buzzword-Bingo besser einordnen und verstehen.
Auf Blockchain basierende Technologien haben sich in den letzten Jahren rasant entwickelt. Die Blockchain-Technologie bietet die Grundlage für neue, innovative und potenziell gewinnbringende Anwendungen und schickt sich an, zahlreiche Geschäftsmodelle zu revolutionieren. Dieses Potenzial wird mit den Anfängen des Internets verglichen. In diesem Vortrag erfahren Sie, welche Eigenschaften auf der Blockchain basierende dezentralisierte Anwendungen (Dapps) haben, welche Anwendungsfälle umgesetzt werden können und wo momentan Kompromisse eingegangen werden müssen.
Welcher Entwickler kennt nicht die Gang of Four oder Eric Evans? Singleton, Factory oder Builder-Pattern gehören zum Handwerkszeug eines jeden Programmierers. Patterns stellen Lösungsschablonen für wiederkehrende Probleme dar und helfen Entwicklern, fremden Code zu verstehen. Applikationen leiden jedoch weniger unter dem Auslassen von Patterns als vielmehr unter dem konsequenten Einsatz von Antipatterns. Dieser Talk stellt weit verbreitete Vertreter ihrer Art dar. Neben klassischen Entwurfsmustern liegt der Fokus auf den Don’ts des Projektalltags des gemeinen Java-Entwicklers.
In verteilten Service- und Prozesslandschaften kann schnell der Überblick über die laufenden Geschäftsvorfälle im Unternehmen verloren gehen. Wir stellen eine Lösung zur Nachverfolgung und Analyse von Service- und Prozessinteraktionen vor. Unsere WildFly-Erweiterung TraceWF macht Aufrufketten über Servergrenzen hinweg sichtbar, ohne dass die Anwendung oder der Bytecode verändert werden muss.
Aufbauend auf TraceWF zeigen wir die Realisierung wichtiger Anwendungsfälle für die nachgelagerte Datenanalyse mithilfe von ELK und Apache Spark.
Im Speziellen gehen wir auf die Visualisierung von Service- und Prozessinteraktionen, die Berechnung und Darstellung von Servicelaufzeiten und deren SLA-Einhaltung ein. Anschließend rundet ein Exkurs in die Welt der Anomalieerkennung und Zeitreihenanalyse den Vortrag ab.
Den Begriff „Digitalisierung“ kann schon keiner mehr hören. „Agil“ ist auch verbrannt und „Macht“ und „Management“ darf man gar nicht mehr sagen. Na gut, dann eben anders, aber besser! Was ist denn die Grundlage für die Existenz dieser Buzzwords? Sie scheinen ja nicht ganz unberechtigt zu existieren. Und wie geht es besser? Genau das wird in diesem Talk behandelt.
Es wird gezeigt, welche Vorstellungen von Unternehmens- und Organisationskultur hinter dem Ganzen stehen, und es werden Antworten gegeben, wie den Herausforderungen der Postmoderne und des Innovationswettbewerbs entgegengetreten werden kann. Hierzu wird auf Organisation à la Heterarchie, Führung zur Selbstführung, Macht und Verantwortung eingegangen und am Beispiel der HEC gezeigt, mit welchen Schmerzen und Freuden dieses Unternehmen in der Postmoderne angekommen und adaptions- und innovationsfähig geworden ist.
Ein Batch Job ist zur Laufzeit eine Blackbox: Einzelne Prozessschritte werden sukzessive abgearbeitet, ohne dass dabei Benutzerinteraktionen nötig bzw. möglich sind. Dennoch kommt es immer wieder zu Situationen, in denen diese „Blackbox-Batch“ geöffnet werden muss. Neben dem Bugfixing erfordert insbesondere die Performanceoptimierung dabei eine detaillierte Analyse einzelner Verarbeitungsschritte. Diese geht ggf. bis auf das Detailniveau der individuellen Batch Items. Um das zu erreichen, werden beispielsweise Zeitmessungspunkte oder andere Hooks in die Prozessschritte eingefügt. Aber wer möchte fachlichen Code dauerhaft mit Laufzeitmessungen verschmutzen oder in separaten Versionen pflegen? Und das auch noch individuell für jede einzelne Spring-Batch-Anwendung?
Um das zu vermeiden, haben wir eine Lösung gesucht, die detaillierte Messungen ermöglicht und aussagekräftige Metriken liefert, ohne dass die analysierten Batch Jobs dafür angepasst werden müssen. Das Ergebnis dieser Suche und Entwicklung ist das Open-Source-Tool „Spring Batch Performance Monitoring“. Es liefert detaillierte Messungen zur Laufzeit eines Spring Batch Jobs bis hin zur atomaren Ebene der einzelnen Items, ohne dabei die fachliche Prozessstruktur des Jobs zu verändern. Zudem misst es den Durchsatz der einzelnen Jobkomponenten (Reader, Processor, Writer), sodass eine Optimierung der Blackbox sich auf die relevanten Stellen konzentrieren bzw. bei ihnen beginnen kann.
With Docker it became easy to start applications locally without installing any dependencies. Even running a local cluster is not a big thing anymore. AWS on the other side offers with ECS a managed container service that states to schedule containers based on resource needs, isolation policies, and availability requirements.
Sounds good, but is it really that easy? In this talk you'll get an overview of ECS and all other services that are needed to run your containers in production. Philipp shows how an ECS cluster and your containerized applications can automatically be deployed and scaled. He also shares his experiences and explains which features are still missing.
Welche Trends von heute sind noch morgen relevant und helfen uns, eine vernetzte Welt zu erschaffen und sie zum Wohl von Kunden, Unternehmen und der Gesellschaft zu nutzen?
Mit der fortschreitenden Digitalisierung entsteht eine immer stärker vernetzte Welt. Aber schon heute fällt es Unternehmen oft schwer, über einzelne innovative Show Cases hinaus die neuen technischen Möglichkeiten nachhaltig und zielführend in ihre Produkte und Services zu integrieren. Um diesen Prozess besser zu unterstützen, arbeitet NTT DATA im Rahmen des Technology Foresights mit weltweit vernetzen Forschungsteams, aber auch in Co-Creation mit internationalen Universitäten und Kunden an einer konkreten technischen Vision für die nächsten fünf bis zehn Jahre. Neben den Auswirkungen auf Produkte und Services aus der Perspektive von Unternehmen und Kunden betrachtet NTT DATA dabei auch gesellschaftliche Zusammenhänge.
In diesem Vortrag gibt Oliver Koeth, CTO von NTT Data in Deutschland – ausgehend von aktuellen Trends wie Cloud und Microservices – einen Einblick in seinen Technology Foresight und zeigt, welche teils überraschenden Schlussfolgerungen sich daraus ziehen lassen. Gegen Ende des Vortrags wird eine der Schlussfolgerungen weiter vertieft und auf konkrete Architekturansätze zurückgeführt, sodass klar wird, welche der aktuellen Trends in diesem Bereich auch eine langfristige Relevanz besitzen und somit unser aller Handeln motivieren sollten.
Die Digitalisierung überholt uns. Unternehmen, die uns seit jeher begleitet haben, verschwinden plötzlich. Andere werden in unglaublich kurzer Zeit von leuchtenden Sternen zu Aschewolken oder verschwinden ganz. Erfolg der Vergangenheit spielt dabei keine Rolle, manche Unternehmen hören einfach auf zu funktionieren. Die Erklärung lässt sich in Designfehlern der Betriebswirtschaftslehre finden.
Der Vortrag gibt einen Einblick in diese Designfehler und zeigt, was sich in der Betriebswirtschaftslehre ändern muss, damit gesunde Organisationen nicht den ökonomischen Tod erleiden. Denn die Designfehler der klassischen Betriebswirtschaftslehre bedrohen nicht nur die alteingesessenen Unternehmen, sie sind ein Problem für alle Organisationen, die eine bestimmte Größe erreichen.
In einer Welt, die von Volatilität, Unsicherheit, Komplexität und Ambiguität bestimmt wird, benötigen wir eine menschlichere Betriebswirtschaftslehre, die Wissen wertschätzt, Widersprüchlichkeit als Normalzustand akzeptiert und die Unausweichlichkeit des Unvorhersehrbaren tolerieren kann.
Fork/Join is a framework for parallelizing calculations using recursive decomposition, also called divide and conquer. These algorithms occasionally end up duplicating work, especially at the beginning of the run. We can reduce wasted CPU cycles by implementing a reserved caching scheme. Before a task starts its calculation, it tries to reserve an entry in the shared map. If it is successful, it immediately begins. If not, it blocks until the other thread has finished its calculation. Unfortunately this might result in a significant number of blocked threads, decreasing CPU utilization. In this talk we will demonstrate this issue and offer a solution in the form of the ManagedBlocker. Combined with the Fork/Join, it can keep parallelism at the desired level.
Monitoringlösungen in Standard-Enterprise-Softwarearchitekturen überwachen typischerweise einige wenige zentrale Services und ihre Komponenten. Microservices-Architekturen oder SaaS/PaaS-Infrastrukturen haben jedoch spezielle Anforderungen an Monitoring-Lösungen. Einerseits sind allgemein mehr Services und Servicearten vorhanden, und andererseits kann die Aussage, ob ein Service funktioniert, nicht mehr rein über das Monitoring einzelner Komponenten getroffen werden. Monitoringmetriken müssen hier schnell über viele Komponenten navigier-, aggregier- und interpretierbar sein.
Prometheus, das erste Open Source Cloud-native Monitoringtool, gehört zu dieser neuen Generation von Monitoringtools, die diesen Anforderungen genügen. In der Session werden Datenmodell, Architektur und das Set-up von Prometheus demonstriert mit Bezug auf die Wichtigkeit für DevOps und den Own-Your-Own-Uptime-Gedanken. Im Speziellen werden einfache Alerts definiert, die Metriken über mehrere Komponenten aggregieren und darauf alarmieren. Weiterführend wird gezeigt, wie simple statistische Onboard-Funktionen von Prometheus dazu verwendet werden können, unerwartetes Verhalten von Services (d. h. Outliers) zu detektieren. Als Ausblick wird außerdem vorgestellt, wie Monitoringdaten aus Prometheus exportiert und in Data-Science-Tools wie beispielsweise „R“, Python SciPy, oder in Machine Learning Services der Microsoft Azure Cloud importiert und weiterverarbeitet werden können.
Zweifelsohne kann das Buch "Domain-Driven Design" von Eric Evans als "Muss" für Softwarearchitekten und Entwickler betrachtet werden. Die dort geschilderten Ideen sind heute im Kontext von Trends wie Microservices relevanter denn je. Dabei gilt es jedoch zu berücksichtigen, dass Domain-driven Design (DDD) nicht einfach nur auf Aggregate, Entitäten und Services zu reduzieren ist und dass es viel tiefergehende Zusammenhänge zwischen DDD und Microservices wie den Bounded Context gibt.
An dieser Stelle setzt der Vortrag an: wir werden Schritt für Schritt erkunden, wie uns die Ideen und Patterns beim Aufbau und Design von Microservices-Landschaften helfen. Des Weiteren werden wir betrachten, wie wir mithilfe von DDD eine bestehende Landschaft in Richtung von Microservices migrieren können.
Hier wird frische Gestaltung für Java gezeigt, die man mit Swing, SWT und JavaFX umsetzen kann und die beim Übergang von Desktop zu Web hilft. An vielen Bildschirmbeispielen sehen Sie, wie man Geschäftsanwendungen realistisch und günstig aufhübschen, modernisieren oder renovieren kann. Sie lernen, wie man eine altbackene Oberfläche schrittweise überführt in ein gut organisiertes GUI, das besser lesbar und schneller bedienbar ist und zeitgemäße User Experience bietet – so mächtig wie Java-Desktop, so schick wie Web, nahtlos integriert in den nativen Desktop. Dabei gucken wir ab von Windows 10, iOS/Android, Tabbed Browsing, Google und zeigen moderne Formen für die Anwendungsstruktur, Suchen/Filtern, Master/Details, Objektpräsentation und Objektbearbeitung.
Clusteranalysen sind heute "Brot und Butter"-Analysetechniken mit Verfahren, die zur Entdeckung von Ähnlichkeitsstrukturen in (großen) Datenbeständen genutzt werden, mit dem Ziel, neue Gruppen in den Daten zu identifizieren. Der K-Means-Algorithmus ist dabei eines der einfachsten und bekanntesten unüberwachten Lernverfahren, das in verschiedenen Machine-Learning-Aufgabenstellungen einsetzbar ist. Zum Beispiel können abnormale Datenpunkte innerhalb eines großen Data Sets gefunden, Textdokumente oder Kundensegmente geclustert werden. Bei Datenanalysen kann die Anwendung von Clusterverfahren ein guter Einstieg sein, bevor andere Klassifikations- oder Regressionsmethoden zum Einsatz kommen.
In diesem Talk wird der K-Means-Algorithmus samt Erweiterungen und Varianten nicht im Detail betrachtet und ist stattdessen eher als ein Platzhalter für andere Advanced-Analytics-Verfahren zu verstehen, die heute „intelligente“ Bestandteile in modernen Softwarelösungen sind bzw. damit kombiniert werden können. Anhand von zwei Kurzbeispielen wird live gezeigt: (1) Identifizierung von Kundencluster mit einem Big-Data-Discovery-Tool und Python (Jupyter Notebook) und (2) die Realisierung einer Anomalieerkennung direkt im Echtzeitdatenstrom mit einer Stream-Analytics-Lösung von Oracle.
Geringe Qualität und fehlendes Qualitätsbewusstsein sind ein Projektrisiko. Immer wieder explodieren Projektkosten, oder die Projekte scheitern sogar, weil die Qualität nicht stimmt. Aber wie entwickelt man wartbare Software? Wie schreibe ich Software so, dass sie der nächste Entwickler (oder ich selbst in ein paar Monaten) auch verstehen kann?
In diesem Vortrag geht es um objektorientiertes Design. Die Prinzipien und Kriterien dazu sind den meisten von uns bekannt. Und trotzdem haben wir dann in unseren Projekten Klassen mit hunderten Zeilen, die zehn verschiedene Dinge tun, nicht hundertprozentig kompatibel mit der Oberklasse sind, und die man ändern muss, um ihre Funktionalität zu erweitern. Deshalb wollen wir uns einige Prinzipien und Kriterien für gutes Design wieder in Erinnerung rufen (z. B., aber nicht nur, SOLID). Wir werden auch darüber diskutieren, wie man sie in neuem Code beachten und bestehenden Code verbessern kann.
Wie kann ich aus einem Haufen Microservices einen funktionierenden Ende-zu-Ende-Geschäftsprozess entstehen lassen? Wie kann ich lang laufende "Sagas" umsetzen? Wie vermeide ich chaotische Spaghettikommunikation, die meinen Businessanalysten in den Wahnsinn treibt? Wie behalte ich den Überblick über die Geschäftsprozesse? Was bedeutet eine Workflow Engine für den Bounded Context, und wie schneide ich Prozesse und Verantwortung? Kann moderne Workflowtechnologie helfen, ohne dabei einen BPM-Monolithen einzuführen? Diesen Fragen möchte ich in der Session nachgehen und auf mögliche Patterns und Architekturkonzepte eingehen. Dabei werde ich Alternativen auch an Hand von Codebeispielen veranschaulichen und von Praxiserfahrungen berichten.
Die Welt der Microservices ist allgegenwärtig und verspricht enorme Vorteile. Doch schnell wird bei der Umsetzung klar, dass viele Services auch viel Arbeit machen und der Überblick dabei schnell verloren geht. Diese Session richtet sich an Projektleiter, Architekten, Entwickler, Tester und Operatoren gleichermaßen – also an alle, die mit Microservices zu tun haben und sich die Arbeit von Anfang an erleichtern wollen. Wie? Microservices und ihr Umfeld effektiv modellieren. In der Session erhalten Sie brauchbare Praktiken, um ein überschaubares Modell der gesamten Microservices-Architektur zu erstellen. Dabei fließen entscheidende Aspekte der Domain ebenso wie der benötigten Infrastruktur mit ein. Das Modell ermöglicht Ihnen eine saubere Dokumentation, um alle relevanten Zusammenhänge Ihres Microservices-Projekts angemessen mit Ihren Stakeholdern kommunizieren zu können.
Eine der wichtigsten Auswirkungen der Digitalisierung besteht darin, dass die IT mehr und mehr Kern des Geschäfts wird und nicht mehr nur die Businessprozesse des Unternehmens unterstützt. Dadurch werden IT-Abteilungen, Arbeitsweisen und die Art und Weise, wie Software entwickelt wird, einen grundlegenden Wandel erfahren. Autonome Teams und schnelle Feedbackzyklen benötigen sichere, skalierbare, hochverfügbare und kosteneffiziente Architekturen mit schnellen Antwortzeiten. Dieser Vortrag beleuchtet die grundlegenden Entwurfsmuster solcher Technologien und zeigt, wie sie exemplarisch mit Amazon Web Services umgesetzt werden können.
Monolithische Mehrschichtarchitekturen scheinen ihre besten Tage hinter sich zu haben. Heute muss alles “micro”, „loosely coupled“ und „highly flexible“ sein. Ach ja, “resilient” nicht zu vergessen! Hört sich spannend an, aber was genau bedeutet das eigentlich für uns Entwickler/Architekten? Brauchen wir wirklich neue Architekturen? Und wenn ja, welche Herausforderungen ergeben sich dadurch? Mit welchen Patterns und Best Practices kann man diese Herausforderungen bewältigen? Und wie sieht überhaupt ein möglicher Migrationspfad aus, wenn man nicht das Glück hat, auf der grünen Wiese starten zu dürfen? Fragen über Fragen. Die zugehörigen Antworten auf dem Weg in eine leichtgewichtige(re) Zukunft gibt es in der Session.
Die Idee von Smart Contracts führt seit den 1990er Jahren ein theoretisch-philosophisches Schattendasein. Lange war nicht klar, wie das Konzept eines in Programmcode definierten Vertrags, dessen Bedingungen sich selbst ausführen, in der Praxis umgesetzt werden kann. In den letzten drei Jahren hat sich dies durch den technologischen Fortschritt, insbesondere die Blockchain, dramatisch geändert. Ein breites Feld an praktische Anwendungsmöglichkeiten ist in den Bereich des Möglichen gerückt. Um den aktuellen Stand der Technologie zu zeigen, geben wir in diesem Vortrag einen Einblick in die Funktionsweise der Blockchain, den Aufbau von Smart-Contract-Plattformen sowie Beispiele aus der Praxis.
Die Ablaufperformance unserer Software ist wichtig. Deshalb wird immer wieder versucht, die Performance von Software zu messen, zu vergleichen und idealerweise vorherzusagen. Das ist aber extrem schwierig und sehr fehlerbehaftet.
In dieser Session wollen wir uns ansehen, warum Performancemessungen so schwierig sind und was man tun kann, um typische Fehler zu vermeiden. Worauf muss man beim Microbenchmarking achten? Wir werfen einen Blick auf den JIT-Compiler und seinen Einfluss auf die Messergebnisse. Welche Werkzeuge können helfen? Wir schauen kurz auf JITWatch und JMH. Wie geht man mit den Messergebnissen eines Microbenchmarks um? Skeptisch! Auf keinen Fall verallgemeinern und auf jeden Fall selbstkritisch hinterfragen.
Jan de Baere and Peter Lie will give a quick analysis based on the book "Antifragile; things that gain from disorder" by Nassim Nicholas Taleb. They will walk through elements from the book and how they experience these in day to day agile coaching operations:
Understanding of Fragile – Robust – Antifragile
Fragile: Turkey as Black Swan at Christmas time, You lose more by randomness (gain/loss graphic), One size fits all
Antifragile: Can win, You gain more by randomness (gain/loss), Barbell strategy (safety vs. risks), Thinkering versus Big design upfront, Complex versus Simple
After the talk Jan and Peter will give an interactive workshop about how you can use these insights to improve your own workplace and attitude in your environment.
Shared-Nothing-Architekturen, Microservices oder auch REST-Architekturen bringen feste Restriktionen und Annahmen über Architekturen und Design der Anwendungen mit. In dieser Session möchte ich, ohne Slides und mit etwas Code, die daraus resultierende Produktivität präsentieren. Von Exception Handling, Transaktionalität, Typsicherheit über Interfacedesign zu Entkoppelung und Test. Fragen der Teilnehmer werden in Echtzeit beantwortet.
Hört man heute, dass BPM einen monolithischen Block bildet, der wenig in das Microservices-Umfeld passt, so zeigt dieser Vortrag, dass es auch anders geht. An einem Beispiel mit dem Open-Source-Projekt jBPM wird erklärt, wie Geschäftsprozesse und Geschäftsregeln sich harmonisch in eine Microservice-Architektur integrieren und sich die entstehenden Synergien nutzen lassen.
BPM hilft dabei, die Abläufe zwischen Microservices sichtbar, veränderbar und transaktionssicher zu machen. Auf der anderen Seite ermöglichen z. B. Docker, Kubernetes und fabric8 die Aufteilung von BPM und BRM (Business Rules Management) in kleine, fachlich isolierte Services. Als Resultat arbeiten BPM und BRM selbst als Microservice, und der Entwicklungs- und Auslieferungsprozess wird vereinfacht.
Erfahren Sie in diesem Vortrag, wie BPM und BRM mit Java EE und JavaScript Frontends (z. B. Angular 2) in einer Containerarchitektur zusammenarbeiten können und welche Möglichkeiten dadurch entstehen.
In der prädigitalen Welt haben die Erfahrungen einzelner Entscheidungsträger häufig über Erfolg und Misserfolg eines Unternehmens entschieden. In der digitalen Welt sind Kundensegmente fragmentierter, Produkte kurzlebiger und Reaktionszeiten sehr viel geringer, sodass die alten Handlungsmuster nicht mehr funktionieren. Zum Glück generieren digitale Lösungen aber deutlich mehr Daten, und die Technologien haben sich so weiterentwickelt, dass diese Daten nutzbar gemacht werden können.
In dieser Session werden wir zunächst den Zusammenhang zwischen Wettbewerbsdruck und technologischen Verbesserungen veranschaulichen. In dieses Bild werden wir Themen wie Big Data, Fast Data, Data Science, Machine Learning und mehr einsortieren und die zugehörigen Technologien, Tools und Vorgehensweisen vorstellen.
Am Ende der Session könnt ihr die ganzen Datenhypethemen und Technologien besser verorten und mit dem gewonnenen Wissen euren eigenen Weg zu einem datengetriebenen Unternehmen beginnen.
Interest and energy has been pouring into the Hyperledger Project which was launched in 2016 by the Linux Foundation to provide blockchain technologies for the enterprise. Blockchain technology is the underpinning of Bitcoin, but its application goes far beyond alternate currencies. Blockchain can be used to address information-management problems in a decentralized manner. This is valuable not only to the financial industry, but also in healthcare, environmental monitoring, emerging-market credit, supply chains, even education. This presentation covers how this community of open source communities is organized, the different projects they focus on, and provides an introduction to Fabric, the blockchain framework IBM has contributed.
2017 lautet die Framework-Wahl im Frontend etwas vereinfacht ausgedrückt nur noch React oder Angular (2). Sind Java-Devs im Fullstack-Team, wird gerne aus dem Kreis der noch natürlichen Feinde, den JavaScript-Frameworks, auf Angular zurückgegriffen, da TypeScript als Meta-JavaScript Java syntaktisch sehr nahe kommt – ohne statische Typisierung geht bekanntlich gar nichts.
Was kann nach der Wahl des richtigen Frameworks dann also noch schiefgehen, wenn man nur mal eben ein komplettes Frontend-Components-Framework mit nicht trivialen Anforderungen aus dem Boden stampfen möchte, das im Backend noch mit Vert.x und Spring Boot verdrahtet werden soll? So einiges, denn die Mischung an spannenden Überraschungen entlang des Weges machts. Welche Tipps wir vermitteln können, wie wir in die Erfolgsspur fanden und welche Fehlschläge uns dorthin geführt hatten, das erläutert der Talk.
Nur noch wenige Monate, und Version 8 bringt neuen Schwung in die Java-EE-Plattform. Und auch Java EE 9, aka. „The Cloud & Microservices Release“, soll bereits zwöflf Monate später erscheinen. Doch während die EE-Community sich für diesen Schritt feiert, singen Branchenanalysten und Vertreter der aktuell angesagten Architekturansätze, von Microservices bis Cloud, das Lied vom Ende von Java EE. Zu den wesentlichen Kritikpunkten gehören die angeblich fehlende Innovationskraft sowie der Applikationserver als ausgedientes Monster historischer Zeit.
Doch wo stehen wir, die Enterprise-Community, im Jahr 2017 wirklich? Hat der Standard Java EE wirklich keinen Wert (mehr)? Oder gehört die Kritik eher in die Welt der Fabeln und Märchen, die in weiten Teilen ignoriert werden kann, sodass sich ein Warten auf EE 8++ in jedem Fall lohnt?
Eine Standortbestimmung.
Most nontrivial 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 show how to address the problem by defining an enforceable architectural blue-print for a software system using an innovative domain-specific language for the description of software architecture.
Die Softwareentwicklung mit Continuous Delivery macht es möglich, neue Technologien schnell und effizient in die Unternehmensprozesse zu integrieren. Grundlage dafür ist eine flexible, modulare Microservices-Architektur. Experten der Volkswagen Group IT entwickelten nach diesen Parametern die Lizenzmonitoringsoftware VWLIC. Im Vortrag erklärt Sebastian Bindick, welche Methoden zum Einsatz kamen, um dem Anwender in sehr kurzer Zeit ein erstes System zur Verfügung zu stellen. Er greift auf, welchen Stellenwert Test-driven Development für die Entwicklung der Software hat und welche Vorteile Microservices mit sich bringen.
In this talk, you will learn:
* What is StampedLock (introduced in Java 8)?
* How can the StampedLock provide an effective way to manage thread safety with objects that contain several fields (with invariants across them) in many producer/many consumer systems?
* What are common StampedLock idioms – and how can Lambdas be applied to make them pluggable?
* What are some lock-free solutions, based on AtomicReference/Unsafe/VarHandles?
Swing - und nun? Noch JavaFX? Oder gleich ab ins Web? Wissen Sie nicht? Können Sie nicht? Dann sind Sie hier richtig. Wir zeigen und diskutieren Probleme und Optionen, wie es mit Ihrer Java-Desktop-Entwicklung in Swing, SWT oder JavaFX weitergehen kann. Dabei meiden wir Hypegequatsche und prüfen kritisch die aktuellen Heilsversprechungen. Achtung: Es kann ätzend werden!
Wir haben in den letzten Jahren unsere Anwendungslandschaften zunehmend in Container verpackt, um unsere Anwendungen gegeneinander zu isolieren und leicht zu verschiffen. Nun betreiben wir aber große Arbeit, um zustandsbehaftete Container am Laufen zu halten und fehlertolerant zu gestalten. Außerdem lassen wir meistens unsere Big-Data- und Fast-Data-Frameworks in separaten Clustern laufen, da sie nicht ohne weiteres Zutun gut in Containern skalieren. Das heißt, dass wir unsere Cluster nicht optimal ausnutzen und auch auf Skalierungseffekte verzichten. Florian Leibert (Mesosphere, CEO) beschreibt dieses Phänomen als Container 2.0, und wir werden uns in dieser Session mit diesem Phänomen beschäftigen.
Wir werden in dieser Session zunächst den Status quo betrachten und die aktuelle Problemstellung verdeutlichen. Danach werden wir anhand von DC/OS und Apache Mesos zeigen, wie die aktuellen Probleme adressiert werden können, um eine möglichst optimale Nutzung des Clusters und übergreifende Skalierungseffekte zu erreichen.
Traum und Albtraum liegen manchmal ganz dicht beieinander. Für jeden Gründer ist es das ultimative Ziel, mit seiner Idee erfolgreich zu sein. Doch was passiert, wenn der Ruhm über Nacht kommt und die Infrastruktur unter der Last der Anfragen im entscheidenden Moment zusammenbricht? In dieser Session wird demonstriert, wie mithilfe von Diensten von Amazon Web Services wie beispielsweise Amazon S3, AWS Lambda, Amazon DynamoDB und Amazon API Gateway eine global skalierbare Cost-Aware-Architecture ohne die Nutzung von Servern erstellt werden kann, denn Gründer sollten sich auf das noch junge Business fokussieren und nicht auf die Infrastruktur.
By now most financial institutions have realized a number of blockchain related experiments. Two questions remain unanswered: Which experiments weren't successful and what happens with successful experiments? From our own experience we want to share how interested parties can prevent spending money on a blockchain experiment that will never see the light of (production) day.
Key take-aways: 1. The biggest challenge of a blockchain experiment is to uncover the underlying business model, not to get the demo to work.
2. Experiments that can proof an added value should be scrapped after completion to prevent "tech optimization". In reality the real complexity starts after the demo works.
3. Only do this if you have a good gut feeling of what you want to achieve. This stuff isn't easy, in fact it's damn hard, will take up a lot of time and will keep you awake at night.
"Wie viele Entwickler braucht man, um eine Glühbirne zu wechseln?" - "Keinen, das ist ein Hardwareproblem!" Ist das immer noch so? Java-Entwickler von heute überwinden ganz locker die Software/Hardware-Barriere. Mit Minicomputern wie dem Raspberry Pi und modernen IDEs und APIs ist das überraschend einfach geworden. In dieser Session hacken wir alles, was uns in den Weg kommt, die Zahnbürste in der Cloud, Nähmaschinen und sogar einen Badezimmerspiegel.
As continuous delivery pushes the pace of development and deployment ever faster, IT organizations are faced with an increasing need to move quickly and shorten the gap between developers and operators. The time when different component owners hoarded operational data and sought only to exonerate themselves from blame has passed. Incorporating management telemetry early and continuously in the delivery pipeline builds the knowledge and discipline necessary to ensure high performing releases and prevent production problems.
We will cover methods to incorporate instrumentation and telemetry into continuous delivery, with concrete examples of implementation and benefits.
Im Jahr 2016 wurden bei der Bank11 die Systeme für die Finanzierungsabwicklung vollständig neu entwickelt. Durch eine sinnvolle Kombination von Technik und Methodik ist in kürzester Zeit eine Lösung entstanden, die Anwender begeistert und Wettbewerbsvorteile schafft. Im Zentrum steht eine moderne Architektur, die Prozesse, Services und Regeln vereint und die Menschen in den Mittelpunkt stellt.
Die Session stellt die Architektur und Technologien vor und beleuchtet wichtige Designentscheidungen und Lösungsansätze aus der Praxis. Sie vermittelt, welchen konkreten Nutzen der zielgerichtete Einsatz aktueller Technologien und Methoden haben kann und zeigt die Relevanz für den praktischen Einsatz.
Microservices in der Cloud gelten als der aktuelle Platinstandard für zeitgemäße Softwarearchitekturen. Entwickler strukturieren domaingetrieben und liefern wöchentlich. So verdichtet niedergeschrieben, beschleicht einen das Bauchgefühl, dass ziemlich viele komplizierte Techniken und Methoden auf Projektteams, Programmorganisation und Kunde einstürmen und deshalb vielleicht nicht von Anfang an durchsetzbar sind.
Was passiert eigentlich, wenn ein Projekt erst einmal ohne Ballast startet (oder starten muss) und darauf vertraut, dass Kunden- oder Marktbedürfnisse sowie ein immer besseres Verständnis der Problemdomain den Wert neuer Technologien und Methoden rechtfertigt? Diese Session stellt die Reise eines realen Projekts vor,das erst getrieben durch konkrete Kundenbedürfnisse zu einer modernen Microservices-Architektur in der Cloud kam und dabei wertgetriebenes Arbeiten gelernt hat.
.
Seit mehr als drei Jahren beschreitet Spreadshirt den Weg von einem selbstentwickelten monolithischen E-Commerce-System hin zu einer offenen Plattform auf Basis einer Microservices-Architektur. Damit einhergehend wuchs zeitgleich das IT-Team um mehr als das Doppelte. Grund genug, einmal zurückzublicken und die gesammelten Erkenntnisse sowie begangene Fehler – sowohl technologisch als auch organisatorisch – zu analysieren. Der Vortrag belichtet die Highlights eines komplexen digitalen Transformationsprojekts: ungeschönt, transparent und wertvoll für alle, die vor ähnlichen Herausforderungen stehen.
Muss ich als bisheriger Enterprise-Java-Shopbetreiber, der sehr viel technisches, organisatorisches und betriebliches Know-how im klassischen monolitischen Stack hat, alles wegwerfen, um mich Richtung Microservices zu bewegen? Oder gibt es einen stufenweisen Weg, der mich sanft und mit wenig Risiko dort hin führt? Was wird aus dem Know-how, das am klassischen Applikationsserver entwickelt wurde? Und: Müssen es überhaupt immer Microservices sein? Im Expertenpanel findet sich Gelegenheit, diese und weitere Fragen zu klären. Es soll auch allen Teilnehmern die Gelegenheit geben, ihre Fragen und persönlichen Standpunkte mit einzubringen.
Lassen sich die Prinzipien von Serverless und Cloud Native mit Java EE (7/8/9) umsetzen?
Welche Libraries und Technologien wären dafür notwendig? Gibt es einen Stack der Zukunft?
In diesem Slides-armen Talk werde ich mit viel Code die Prinzipien der modernen Softwareentwicklung vorstellen und auf Fragen der Teilnehmer interaktiv eingehen.
Mit den vielen Neuerungen des mit Spannung erwarteten JDK 9 eröffnen sich Entwicklern neue Möglichkeiten. Das Modulsystem ist dabei eine treibende Kraft. Die Keynote zeigt, wie Entwickler mit JDK 9 ihre Arbeit in einer Vielzahl von Umgebungen bis hin zur Cloud verbessern und beschleunigen können.
Cyber insecurity often feels like a horror story, and the idea of cyber security an out-of-reach myth. The last few years have seen breaches that are bigger, and of a higher profile, than ever before. When we trace these back to their cause, we often find that attackers took advantage of human behaviour, via social engineering, poor password management, gaps in physical security or malicious insiders. Combining sociological and psychological research with stories from mythology and classic horror fiction, this talk highlights what we need to understand about people to make cyber security less of a monster.
Ambitious Internet of Things applications have one thing in common: They produce massive amounts of data. But how to design the next-generation IoT backend that is able to meet the business requirements and doesn’t explode as soon as the traffic increases? This talk will cover how to use MQTT to connect millions of devices with commodity servers and process huge amounts of data. Learn all the common design patterns and see the technologies that actually scale. Explore when to use Cassandra, Kafka, Spark, Docker, and other tools and when to stick with your good ol’ SQL database or Enterprise Message Queue.
Code Reviews are a de facto standard for most teams. Either as a general four eyes principle, via pull requests or as a real team meeting. Each and every of these methods has their own pros and cons. Avoiding bugs is typically the main reason why code reviews are introduced, but how often do you really find serious bugs in your code reviews? This talk will give some insights into how to use code reviews as a method to establish a common understanding of code quality in your team. Using reviews tools is usually the second step in that process, after the developers have established a mindset for good quality.
The biggest challenge of Deep Learning technology is the scalability. As long as using single GPU server, you have to wait for hours or days to get the result of your work. This doesn't scale for production service, so you need a Distributed Training on the cloud eventually. Google has been building infrastructure for training the large scale neural network on the cloud for years, and now started to share the technology with external developers. In this session, we will introduce new pre-trained ML services such as Cloud Vision API and Speech API that works without any training. Also, we will look how TensorFlow and Cloud Machine Learning will accelerate custom model training for 10x - 40x with Google's distributed training infrastructure.
Der Austausch von Daten zwischen Microservices wird immer wichtiger, um auf der einen Seite einen sauberen Bounded Context zu modellieren, aber auch gleichzeitig nicht unnötige Aufrufe auf reine "Data Services" zu bekommen, die keinen Geschäftszweck erfüllen. Hierzu hat sich in vielen Projekten bereits die Replikation von Basisdaten, dem so genannten Shared Kernel, zwischen mehreren Microservices bewährt. Erfahren sie hier, wie so eine Architektur mithilfe von Apache Kafka umgesetzt werden kann und welche Fallen während des Projekts lauern. Erfahren Sie ebenfalls, wie Sie Apache Kafka benutzen können, um Ihre Microservices-Architektur um Event-driven-Aspekte zu erweitern.
Angular ist die Komplettlösung für die Umsetzung von Webapplikationen im Frontend. Ein so umfassendes Werkzeug hat allerdings auch seine Schattenseiten: Die Einstiegshürde ist relativ hoch. Dieser Vortrag stellt die wichtigsten Elemente des Frameworks wie Komponenten, Direktiven und Services vor. In einem praktischen Beispiel werden die verschiedenen Elemente von Angular Schritt für Schritt zu einer kompletten Applikation zusammengefügt. Damit lernen Sie nicht nur die Elemente des Frameworks kennen, sondern gleichzeitig die wichtigsten Architekturpatterns und zahlreiche Best Practices.
Preparing for the challenges of 2017 and beyond, Spring Framework 5 focuses on several key themes: in particular reactive web applications, comprehensive support for JDK 9, and a general focus on lambda-oriented programmatic setup. This session introduces how those features are being introduced in the upcoming Spring Boot 2.0 and presents selected feature highlights.
Stéphane has a thing for code quality and robustness. He's been spreading the word for more than ten years while developing large scale Java enterprise applications in the geospatial, financial, or logistics sectors. An Apache Maven PMC member since 2006, he joined the core Spring Framework development team early 2014, being one of the main contributors to both Spring Framework and Spring Boot since. During his free time, he loves traveling around the world.
Alle Welt redet von reaktiver Programmierung. Mit der neuartigen Begriffswelt ist man als Anwendungsentwickler allerdings schnell überfordert: Eventloops, Backpressure, Non-Blocking, Resiliency, Reactor, Flux, Mono, Subscriber usw. Mit Spring Framework 5 wird durch Project Reactor reaktive Programmierung zum Mainstream. Spätestens dann sollte jeder verstehen, was reaktive Programmierung bedeutet, welche Vorteile entstehen, aber auch die Nachteile kennen.
In dieser Session zeige ich die wichtigsten Konzepte rund um reaktive Programmierung kompakt und anhand praktischer Codebeispiele. Von Dummys für Dummys.
Ziel ist es, dass du dich in der neuen Begriffswelt zurechtfindest, die Konzepte hinter reaktiver Programmierung verstehst und abwägen kannst, ob reaktive Programmierung für dein Projekt von Nutzen sein kann. Damit du bei Kaffeepausen mit Kollegen nicht nur lächeln und nicken, sondern mitreden kannst!
Um den Qualitätsanspruch von Scrum erfolgreich umsetzen zu können, muss ein Team eng zusammenarbeiten. Es muss Vertrauen aufgebaut werden, alle Projektbeteiligten müssen konfliktbereit sein und sowohl Eigen- und Team- als auch Ergebnisverantwortung übernehmen. Um dies zu erreichen, müssen Menschen aus ihrer Komfortzone heraus, was Raum für alte und neue Konflikte schafft. Hierbei kann ein Scrum Master unterstützen, wie zum Beispiel Sven.
Aber wie schafft er das, und was braucht er dazu? Wie schafft er es, dass sein Team ein richtiges Team wird? Wie organisiert er effektive Plannings, sinnvolle Dailys und gute Reviews? In diesem Vortrag wird anhand von vielen Beispielen aus der Praxis gezeigt, was die Rolle des Scrum Masters tatsächlich für Aufgaben beinhaltet und welche Fähigkeiten ein Scrum Master mitbringen sollte. Es werden verschiedene Praktiken vorgestellt, die es dem Scrum Master ermöglichen, seiner Rolle gerecht zu werden.
Wir unternehmen erste Schritte in der Serverless-Welt der AWS-Cloud und probieren uns an Lambda, API-Gateway, DynamoDB und Co. Daten speichern und verbeiten, ohne Serverinstanzen zu managen, HTTP Requests auf Funktionen mappen, ohne einen Webserver zu betreiben: Das und vieles mehr steht uns mit den Serverless Services in der Cloud zur Verfügung. Nach einem anfänglichen gemeinsamen Set-up entwickeln wir die Services spontan und ad hoc mit Ideen der Teilnehmer weiter.
Begleiten Sie uns auf unserem Weg zu skaliertem Agile Testing, auf dem wir Lösungen für eine regelmäßige Wertschöpfung (Value Delivery) in kurzen Zyklen bei hoher Qualität entwickelt und etabliert haben. Entscheidend war dabei eine ganzheitliche Betrachtung von Qualität sowie eine verzahnte Kollaboration aller Beteiligten von IT und Fachbereich, und zwar von der Idee bis hin zur Livestellung. Mindestens genauso wichtig war es, funktionale Akzeptanztests als zentralen Bestandteil unserer Entwicklungsprozesse sowie Testbarkeit als wichtiges Softwareentwicklungsprinzip zu etablieren.
In dieser Session möchten wir sowohl über Faktoren sprechen, die uns auf die Vorfahrtsstraße gebracht haben, als auch Aspekte benennen, die für uns mit Herausforderungen verbunden waren, und einen Ausblick für zukünftige Herausforderungen geben.
In der Theorie sollen die Arbeit an der Architektur und normale Entwicklungsarbeiten in agilen Projekten organisatorisch nicht getrennt werden. In der Realität – gerade in großen Projekten – ist das oft anders. Verschiedenste Herausforderungen wie technische und architekturelle Rahmenbedingungen sowie Verantwortlichkeiten sind zu beachten. Spezifische Rollenbeschreibungen und die Zusammenarbeit verschiedener externer Unternehmen erhöhen die Komplexität im Zusammenspiel mit Architekturarbeiten sowie der Zusammenstellung von Teams.
Dieser Vortrag gibt einen detaillierten, kritischen Einblick in das Spektrum der Organisation von Architekturarbeiten in großen agilen Projekten. Zu jedem Szenario werden Vorbedingungen und Konsequenzen diskutiert sowie Praxisbeispiele referenziert.
In Abgrenzung zu anderen Vorträgen fokussiert sich dieser Vortrag auf organisatorische und Rollenaspekte, wie z. B. den Architectural Runway, und nicht auf die technische Realisierung einer Architektur im agilen Kontext.
In vielen Unternehmen ist man der Meinung, agil zu entwickeln und Kulturen bzw. Methoden wie DevOps und Scrum zu leben. Bei genauerer Betrachtung zeigt sich jedoch, dass es zur vollständigen Umsetzung der genannten Methoden noch an einigen Kleinigkeiten mangelt. Nicht selten ist dies die für Continuous Deployment notwendige vollständige technische Automatisierung des Deployment-Prozesses.
Im Vortrag wird anhand von Kundenbeispielen aufgezeigt, welche Herausforderungen auf dem Weg zu Continuous Deployment auftreten können und welche Vorteile sich durch die Implementierung eines vollautomatischen Deployment-Prozesses, von der Entwicklung bis in die Produktion, ergeben.
Distributed tracing is a method of connecting interaction of different services on a network. Collecting and processing such tracing information again allows for the observation of a distributed system in its entirety. This talk shares the presenter's insights gained by working on the JVM-support of distributed tracing for the APM tool Instana. Doing so, it introduces the landscape of distributed tracing on the JVM, discussing popular approaches such as Dapper, Zipkin or Brave/OpenTracing. In the process, it is discussed how byte code instrumentation can be used to capture systems without requiring a user to set up the software under observation. The presentation finishes with a discussion of typical problems of distributed tracing solutions and carefully examines the performance penalties APM tools entail.
In der letzten Dekade haben sich die Rollen des Testers und des Testmanagers etabliert und professionalisiert, was sich auch direkt an den stetigen Zuwächsen von ISTQB-Zertifizierungen ablesen lässt. In den letzten Jahren ist jedoch in den Domänen "Consumer- und Enterprise-Web" sowie "Mobile-Web und -Apps" die Tendenz zu erkennen, dass die Projekte immer agiler werden – oder gerne werden würden – und dass sich die Teams mehr und mehr full-stack und crossfunktional zusammensetzen. Diesem Wandel fallen teilweise ganze Rollen bzw. klassische Organisationsformen zum Opfer. So ist zum Beispiel weder ein Projektmanager noch ein Testmanager im Scrum-Prozess vorgesehen. Im Gegenteil – die klassischen Rollen werden sogar als agiles Antipattern betrachtet.
In diesem Vortrag werden die QA-Methoden und -Rollen im Wandel der Zeiten betrachtet. Anhand konkreter Beispielprojekte der letzten Jahre wird beleuchet, welchen neuen Herausforderungen sich Tester und Testmanager stellen müssen, wo die klassischen Rollen in modernen Projekten ihren Platz finden und wie unsere Profession hier Mehrwerte bieten kann. LBNL diskutieren wir über die provokante These "In fünf Jahren wird es keine Tester und Testmanager mehr geben".
Wir bewegen uns im Umfeld von UIs für Geschäftsanwendungen: am Sachbearbeiter orientiert, viele Felder, durchaus komplexe Dialoge. Wer da trotz aller Frameworks auf HTML5 setzt – der Kunde will ja schließlich „zero installation“! – der erkauft das durchaus schmerzhaft mit „endless maintenance“: Der Endnutzer findet immer einen Browser bzw. ein Device, auf dem sich das System anders verhält, als es sollte. Und beim nächsten Major-Browserreleasewechsel kommt einiges in Unordnung. Muss das so sein? Wir sagen: definitiv nicht! Und zeigen es auch. Die „RISC-Methode“ nutzt den Browser auf andere Art als „normale“ Frameworks. Der Kern ist die Reduzierung der HTML-Nutzung auf alle wesentliche Elemente („Primitivelemente“) und der Aufbau von JavaScript-Bibliotheken auf Basis dieses Kerns. Und heraus kommen ein Webframework, in dem Browserkompatibilität keine Rolle mehr spielt, und eine Gestaltungsfreiheit und Performance, die uns selbst überrascht hat. Lassen auch Sie sich überraschen!
Richtig in die Zukunft blicken kann natürlich niemand, auch nicht die digitalen Unternehmen. Dieser Talk wird aber aufzeigen, wohin sich die digitalen Unternehmen mit ihren digitalen Geschäftsmodellen und der Digitalisierung entwickeln müssen, um nicht im "blauen Ozean" zu verweilen. Hier geht es darum, ob man seine Value Chain nur digitalisiert, oder ob man als digitales Unternehmen ein Treiber eines Ecosystems wird bzw. ein Zulieferer modularer Business Services. Anschaulich aus Beispielen aus dem wahren Leben und aus meinem Projektalltag werde ich die Theorien und Vorhersagen darstellen.
Knapp sechs Jahre nach dem ersten öffentlichen Release nähert sich Spring Data einem Major-Versionssprung mit dem Release Train “Kay”. Diese Session widmet sich ausgewählten Kernkonzepten von Spring Data mit starkem Fokus auf das bevorstehende Release. Die Themen reichen von verstärktem Support von Java-8-Sprachfeatures über Kontextverfeinerungen bis zu reaktivem Datenzugriff. Codebeispiele zeigen generelle Verwendungsmuster sowie Store-spezifische Funktionalität wie Infinite Streams mit MongoDB.
Mit Hadoop und diversen Streamingframeworks (Spark, Flink) steht ein ganzer Blumenstrauß an Tools bereit, um in (fast) Echtzeit auch große Datenmengen zu analysieren. Gemein haben sie den Grundsatz: Großes Problem braucht mehr Rechenleistung und mehr Speicherplatz. Was aber, wenn wir zur Berechnung eines Ergebnisses sehr viele Daten (z. B. Klickdaten) in Echtzeit nutzen wollen? Oder die benötigte Rechenleistung in keinem Verhältnis zum Problem steht? Hier helfen moderne Datenstrukturen wie z. B. der Bloom-Filter oder der Count-Min Sketch. Diese speichern sehr große Datenmengen auf sehr kleinem Raum.
In dieser Session wird Kai einen kleinen Microservice auf Basis von Spring Boot/Data/REST und Angular 2 entwickeln. Kai zeigt auch ein paar Tricks, wie man diesen in ein effizientes Docker Image verpackt und schließlich einen Docker-Container in einer Cloud-Infrastruktur (AWS und Heroku) zum Laufen bringt. Natürlich alles mit Live-Coding und Demos.
Wenn es um die Erstellung von Businessanwendungen geht, ergeben sich häufig ähnliche Anforderungen: Große Entitätsgraphen, Datengrids mit erweiterten Filtermöglichkeiten, Reporting, datensatzbasierte Sicherheit, Auditierung usw. Sind General-Purpose-Frameworks der richtige Ansatz, um solche Probleme zu lösen, oder sollte man bei der Frameworkauswahl "domainspezifischer” werden?
In diesem Vortrag werden anhand eines Beispiels für eine domainspezifischere Auswahl (CUBA Platform) die enthaltenen businessspezifischen Features betrachtet. Nachdem wir uns mit diesen Features vertraut gemacht haben, schauen wir uns an, wie man eine Anwendung zur Bestellverwaltung mit filterbaren Listenansichten und datensatzbasierter Sicherheit sehr effizient erstellen kann. Danach wird erörtert, welche Vorteile und welche Konsequenzen sich aus der Entscheidung für ein solches Framework ergeben.
With JDK 9 around the corner, more developers are starting to explore how their code builds and runs with the JDK 9 Early Access builds. In this panel, leading developers of some of the most popular open source projects (Apache Lucene, Apache Maven and ASM) will discuss their experiences making their projects' code ready for JDK 9 and Project Jigsaw. You'll learn what kind of issues they have come across in practice, what to expect and how to deal with challenges that may come up as you make your own code ready for JDK 9.
Mithilfe von Docker schickt sich die IT an, grundlegende Veränderungen zu vollziehen; so wird von Docker auch immer im Zusammenhang mit Microservices und DevOps gesprochen.
Nach einem kurzen Überblick, was Docker ist und damit auch, was Applikationscontainer sind, wird das Einmaleins von Docker am Terminal gezeigt. Passend zur Jax wird auch ein Docker-Image einer Java-Applikation gebaut und verwendet, das gerne als Blaupause für eigene Images verwendet werden kann.
Am Ende des Hands-on soll die Idee vermittelt werden, was Docker ist und wie es im eigenen Projekt Verwendung finden kann.
Diversity is key to the long term success of communities and businesses. It unlocks innovation and can drive market growth. Now as we talk of software being ubiquitous and "eating the world" diversity has an increasingly important role to play in modern day society. Tech communities notoriously suffer from diversity problems. And diversity is not something that can be improved overnight. This talk takes a deeper look at the complex topic of diversity. It details seven habits diverse communities make use of to keep their communities healthy, innovative and growing. It looks at how the more diverse our software communities the more secure and resilient society will be.
Nach der Ausdehnung vom JDK-9-Feature-Complete-Status begann die Fehlerbereinigung mit allen notwendigen Vorarbeiten, um den finalen Release Candidate für das JDK 9 bereitzustellen. Der Schwerpunkt von JDK 9 liegt bei der neuen Plattformmodularisierung mit dem Projekt Jigsaw. Über die JDK-Enhancement-Vorschläge JEP 200 (modulares JDK), JEP 201 (modularer Sourcecode) und JEP 220 (modulare Laufzeitimages) gelangen die technischen Vorschläge ins JDK 9. Der JSR 376 (Java Platform Module System) schafft die Grundlage für die Referenzimplementierung des OpenJDK-Projekts Jigsaw. Diese Veränderungen lassen es zu, mit dem JDK 9 die gewünschte technische Paketierung von ausgewählter Java-Funktionalität selbst zu bestimmen. Das Projekt Jigsaw hat die primäre Aufgabe, das Design und die Implementierung eines Standardmodulsystems für die Java-Plattform und das JDK 9 bereitzustellen. Dabei soll die durchgängige, dynamische und einfache Anpassbarkeit der Java-SE-Plattform und des JDK auch für kleine Endgeräte berücksichtigt werden sowie die Verbesserung von Sicherheit und Wartbarkeit von Java-SE-Plattformimplementierungen, speziell des JDKs, verwirklicht werden. Im Vortrag werden Demobeispiele gezeigt, die eine Erstellung von individueller Java Runtime mit Anwendung anhand der JDK-9-Werkzeuge verdeutlichen. Die geplante Verfügbarkeit des JDK 9 ist für Ende Juli 2017 vorgesehen.
Wolfgang Weigend arbeitet als Sen. Leitender Systemberater bei der Oracle Deutschland B.V. & Co. KG. Er beschäftigt sich mit Java-Technologie und Architektur für unternehmensweite Anwendungsentwicklung.
Sprechen Sie MQTT? Dieser Talk zeigt, was es mit dem schlanken und leichtgewichtigen IoT-Protokoll ‘MQTT’auf sich hat und warum es sich zu einem Standardprotokoll für das Internet of Things etabliert hat. Lernen Sie, warum Pub/Sub für das Internet of Things skaliert und warum HTTP nicht der Weisheit letzter Schluss für alle IoT-Kommunikation ist. Neben Livedemos sowie einer Einführung in die Funktionsweise des schlanken Publish/Subscribe-Protokolls bekommen Sie Einblick in das sehr aktive Ökosystem rund um MQTT und wie sich Bibliotheken und Broker auf Java-Basis “anfühlen".
Obwohl Angular 2 von Haus aus schnell ist, bietet es dennoch eine Reihe an Ansätzen zur Performanceoptimierung. Dazu gehört der Template-Compiler, der gemeinsam mit Tree-Shaking die Startgeschwindigkeit erhöht sowie die Dateigröße der Anwendung minimiert. Weitere Möglichkeiten sind der Einsatz von Angular Universal zum serverseitigen Vorrendern von Ansichten, die Nutzung von Service Worker und das verzögerte Laden von Routen. Zusätzlich lässt sich die Datenbindung durch den Einsatz von Immutables und Observables drastisch beschleunigen. In dieser Session erfahren Sie anhand eines durchgängigen Beispiels, was sich hinter diesen Ideen verbirgt und wie Sie diese in Ihren performancekritischen Projekten erfolgreich einsetzen.
Ereignisströme und ihre Handhabung, sprich Integration in eine Gesamtarchitektur, wird immer wichtiger. Ereignisse müssen rasch und sicher entgegengenommen, verteilt und analysiert werden, wobei es oft mehrere Konsumenten bzw. Systeme gibt, die sich für ein bestimmtes Ereignis interessieren. Wie aber können diese Ereignisse effizient empfangen und weitergeleitet werden? Hier kommt Apache Kafka ins Spiel, ein verteiltes, hoch skalierbares Messaging-System, das eine große Menge von Informationen zwischen einer Quelle und einem Empfänger effizient und sicher austauschen kann.
Dieser Vortrag startet mit einer Einführung in Apache Kafka und zeigt dann, welche Rolle Apache Kafka in einer modernen (Big-)Data-Architektur spielt, und welche Vorteile man damit erreichen kann. Des Weiteren wird auf das aktuelle Kafka Ecosystem eingegangen und gezeigt, wie einfach sich Kafka in andere Komponenten wie Storm oder Spark integrieren lässt.
Es fühlt sich völlig natürlich an: Technologieentscheidungen werden von den Entwicklern in den Teams getroffen – nicht durch den CTO oder einen übergeordneten Architekten. Die Entwickler in den selbstorganisierten Teams kennen die zu lösenden Probleme am besten und haben meist auch einen guten Überblick über die möglichen technischen Lösungen. Nach einigen Wochen aber entsteht Streit: Jeder will mitreden. Die Entwickler sind nicht immer alle einer Meinung. Wie viele Standards brauchen wir für alle Teams? Ein Praxisbericht über sinnvolle Rahmenbedingungen für Technologieentscheidungen in selbstorganisierten Teams.
Spring Boot hat sich mittlerweile zum neuen Standard als Basis für Microservices-basierte Cloud-Anwendungen etabliert. In diesem Talk zeigen wir die neusten Erweiterungen für Eclipse, um noch schneller und einfacher Spring-Boot-Anwendungen implementieren zu können. Anhand von vielen Livedemos zeigen wir unter anderem, wie man in wenigen Minuten eine fertige Spring-Boot-Anwendung implementiert, wie man deutlich einfacher und schneller Property- und YML-Konfigurationsdateien erstellt und editiert, und wie man mit dem Boot Dashboard in Eclipse und der Spring Tool Suite den Überblick behält und effizient arbeiten kann, selbst wenn man mit vielen Microservices-Anwendungen gleichzeitig arbeiten muss. Dieses neue "Microservices-Development-Center" in Eclipse/STS vereinfacht den Umgang mit Spring-Boot-Projekten erheblich und löst Probleme, mit denen jeder Entwickler jeden Tag zu kämpfen hat. Zusätzlich zeigen wir, wie eine Cloud-Plattform wie Cloud Foundry in dieses "Microservices-Development-Center" einbezogen werden kann, sodass sich Services selbst dann gut entwickeln, aktualisieren und debuggen lassen, wenn sie mit Services in der Cloud interagieren. Der Vortrag ist Insgesamt vollgepackt mit viele Tipps und Tricks, die die Entwicklung von Spring-Boot-Anwendungen einfacher und schneller machen.
In Zeiten von Docker, Big Data und Microservices wird es immer wichtiger, seine verteilte Anwendung sinnvoll auf sein Cluster zu verteilen und dabei trotzdem noch den Überblick zu behalten. Daher werden Plattformprodukte bzw. Clustermanagementsysteme wie Apache Mesos und DC/OS immer wichtiger und halten in immer mehr Bereiche Einzug. In dieser Session werden wir einen Java-basierten Service mit Spring Boot implementieren und zunächst lokal und dann mit Docker-Compose starten. Danach werden wir sehen, wie einfach es ist, die gleiche verteilte Anwendung in DC/OS auf dem eigenen Cluster zu deployen und zu monitoren. Danach werden wir unseren Service skalieren und im laufenden Betrieb aktualisieren. Und das Coolste dabei: Wir haben eine hübsche UI und eine super CLI.
Die Entwicklung eines neuen Produkts im Bereich Internet of Things vereint eine Reihe von notwendigen Disziplinen. Vom Prototyping bis zum Go-Live ist es ein langer Weg mit vielen Fragen und Entscheidungen: Welche Plattform wird für das Hardware-Prototyping verwendet? Welche Protokolle kommen zum Einsatz? Was bieten Cloud-Plattformen? Welche Hürden gibt es für den Go-Live? Wie sichert man das alles ab? Und wie rollt man Updates aus?
Bereits in der ersten Phase des Hardware-Prototypings kann mithilfe eines Raspberry Pis gearbeitet werden. In der Cloud sind Docker und Spring Boot unverzichtbare Partner, um Anwendungsfälle schnell zu implementieren und zu bootstrappen. Gleichzeitig wird eine Unabhängigkeit bewahrt, die den noch offenen Punkten zugutekommt. Mit Keycloak kommt eine Authentifizierungskomponente zum Einsatz, die ein hohes Maß an Flexibilität bietet und dennoch kontrollierbar bleibt.
Damit sind Entwickler gut gerüstet, um Themen wie Remote Updates, Device Setup und Management anzugehen.
Der Vortrag betrachtet diese Fragen unter anderem anhand der Erfahrungen, die durch Mitarbeit im Projekt SM!GHT der EnBW gesammelt wurden. Dabei handelt es sich um intelligente Straßenlaternen mit Umweltsensorik, WLAN und Ladeeinheit für Elektrofahrzeuge.
Großartige Apps entstehen nur durch kontinuierliches Einbeziehen der Anwender. Direktes, zeitnahes Feedback und die Analyse des Nutzungsverhaltens sind hierbei essenziell. Doch wie schafft man es, eine lauffähige App nach jedem Sprint automatisiert auf die Geräte der Betatester zu verteilen? Zudem spielt im Mobility-Bereich das Thema Device-Tests eine große Rolle. Denn hier hat man es mit Hunderten völlig unterschiedlicher Endgeräte zu tun, auf denen getestet werden muss. Hier bieten sich Device-Clouds an, die den Zugriff auf physische Geräte bieten und ein detailliertes Reporting ermöglichen. Jörg Neumann stellt ein praxiserprobtes Vorgehen für die Mobile-App-Entwicklung vor und demonstriert die konkrete Umsetzung.
Smart Ecosystems ist ein Buzzword, an dem man im Zuge der digitalen Transformation nicht vorbeikommt. Mit der Fragestellung, welche Konsequenzen diese für uns Systemanalytiker bedeuten, setzt sich die Szene bis Dato eher marginal auseinander. Fundierte Antworten sucht man vergebens.
Unter Smart Ecosytems versteht man Systeme, die sich nicht mehr auf Stand-Alone-Anwendungen beschränken, sondern eine Vielzahl an Schnittstellen zu anderen Systemen aufweisen, die allesamt zur Erreichung eines gemeinsamen Ziels beitragen. Emergenz ist in diesem Kontext ein wichtiges Prinzip. Systeme innerhalb eines Smart Ecosystems kommunizieren über das Internet der Dinge (IoT) und agieren so auch über Unternehmensgrenzen hinweg. Man spricht von einem System of Systems. Sie haben noch nie von solchen Systemen gehört? Dann vielleicht von Industrie 4.0, Smart Grid oder Smart Farming. Dies sind nur ein paar Beispiele für Smart Ecosystems, die bereits Einzug in unseren Alltag erhalten.
In unserem Vortrag vermitteln wir zunächst ein Grundverständnis des Begriffs Smart Ecosystem, zeigen anschließend die Herausforderungen für den Requirements Engineer auf und präsentieren die tragenden Enabling Technologies. Ferner geben wir einen Einblick in die von uns untersuchten Herangehensweisen zur Spezifikation eines solchen Systems. Bei diesen handelt es sich um Modellierung, den Einsatz von Künstlicher Intelligenz, serviceorientierte Architekturen sowie agile Vorgehensweisen.
In diesem Lab bekommen Sie eine Microservices-Umgebung mit Spring Boot und Spring Cloud. Nach einer theoretischen Einführung können Sie in der Umgebung praktische Erfahrungen mit Hystrix für Resilience oder Ribbon für Load Balancing sammeln – oder wollen Sie lieber Monitoring mit Graphite oder Loganalyse mit dem ELK-Stack ergänzen? Das Lab bietet sich zur praktischen Vertiefung der Ansätze aus dem Microservices-Power-Workshop an.
gRPC is a high performance, language-neutral, general RPC framework developed and open sourced by Google. Built on the HTTP/2 standard, gRPC brings many benefits such as bidirectional streaming, flow control, header compression, multiplexing and more. In this session, you will learn about gRPC and how you can use it in your Java applications through a series of code samples and demos.
Serverlose Cloud-Architekturen ermöglichen es, Anwendungen und (Micro-)Services zu bauen und zu betreiben, ohne eine dedizierte Infrastruktur verwalten zu müssen. Der Code wird natürlich noch auf Servern ausgeführt, aber das gesamte Servermanagement wird vom Cloud-Anbieter übernommen. Dieser kümmert sich um Verfügbarkeit, Skalierung, Ressourcenmanagement und die entsprechende Multi-Tenancy-Fähigkeit der Systeme und Infrastruktur. Der Cloud-Benutzer kann sich voll und ganz auf die Ausführung und das Monitoring seiner Funktionen und Services konzentrieren.
In meinem Vortrag zeige ich Beispiele, wie zeitgemäße, aber serverlose Microservices-Cloud-Architekturen am Beispiel von Amazon Web Services schnell und agil aufgebaut und betrieben werden können. Hierbei beleuchte ich u.a. die Konzepte von AWS Lambda, Amazon API Gateway und DynamoDB und baue mit dem Serverless-Framework eine lauffähige Anwendung während des Talks.
Logging und Monitoring ist ein kein sexy Thema: Niemand hat Lust, sich auf Konsolen einzuloggen und Logdateien zu durchforsten. In Docker-Umgebungen potenziert sich das Problem noch einmal. Eine zentralisierte Logging-Infrastruktur muss her. Und wenn man schon dabei ist, wären ein Exception-Monitoring und detaillierte Anwendungsmetriken ja auch ganz praktisch. Ich zeige in dieser Session das Zusammenspiel aus Logstash und Graylog zur Access-Loganalyse, Sentry zum Exception Logging sowie Graphite und Grafana zur Visualisierung von Anwendungsmetriken.
Java 9 bringt Modularität auf die Plattform. Der Vortrag zeigt, was unter dem Konzept der Modularisierung zu verstehen ist und wie mit Java 9 Anwendungen auf Basis von Modulen entwickelt werden können. Es wird gezeigt, dass Modularisierung sehr viel mehr ist als die reine Separierung von Klassenbibliotheken in unabhängige Module. Das Java-Modulsystem erhöht die Sicherheit, die Performance, die Flexibilität beim Deployen und ist ein großer Gewinn für den agilen Entwicklungsprozess. Es wird auf die Wichtigkeit des modularisierten JDKs für die Zukunft Javas eingangen, was das Internet der Dinge und die Containertechnologie betrifft, und die Beurteilung und Anwendung des Java-Modulsystems im Kontext von modernen Entwicklungsansätzen wie Microservices vorgestellt.
When designing a highly-available service one inevitably faces the consequences of the (in)famous CAP theorem. Designing a distributed system where data consistency is paramount is a challenging endeavor. To do so it is important to understand domain concepts inherent in the data and their relationship. Imposing carefully selected procedure on writes enables well-behaved clients to still benefit from high availability while providing high guarantees on consistency.
This presentation explores a journey of making an existing versioned storage system for map data, design without high availability in mind, 99.9 per cent available. While the high-availability design was being put together versioning concepts needed to be strengthened and exposed more strictly in the API. To preserve consistency, the access pattern for read-clients needed to be made more strict.
Join us for the presentation to learn:
* how do design such a system in an incremental manner from components that don't provide HA guarantees
* reasons why API should be strict and designed defensively
* how optional parameters can be problematic even when they initially seem to be very convenient
* about problems of highly-available designs being hard to get right and counter-intuitive to explain
JavaScript ist die natürliche Wahl für die Entwicklung im Browser. Für größere Projekte ist JavaScript im Vergleich zu Java jedoch im Nachteil. TypeScript und Flow sind zwei unterschiedliche Ansätze zum Ausgleich der Nachteile. Flow ist ein statischer Typen-Checker. Er wurde von Facebook entwickelt, um in deren JavaScript- und insbesondere React-Code Fehler zu finden. Dazu können zusätzliche Typinformationen hinzugezogen werden. TypeScript ist eine Spracherweiterung von JavaScript, die durch den TypeScript-Compiler in unterschiedliche JavaScript-Versionen zurückübersetzt werden kann. Hier steht eher die Werkzeugunterstützung im Vordergrund. TypeScript wird aktiv von Microsoft entwickelt und ist die primäre Sprache für Googles Angular-2-Framework. In diesem Talk werde ich in beide Ansätze einführen und die wesentlichen Gemeinsamkeiten und Unterschiede erläutern. Am Ende werden wir klären, ob TypeScript und/oder Flow tatsächlich JavaScript für Java-Enwickler sind.
Datenströme managen, Verarbeitungen skalieren, die Vorteile von Spring Boot, eine zeitgemäße Infrastruktur und die etablierten Programmiermodelle von Spring Batch und Spring Integration – das bietet Spring Cloud Data Flow.
In einer simplen DSL können Event-getriebene Microservices zu einer Pipeline orchestriert werden, und bei Deployment der Pipeline werden automatisch die entsprechenden Microservices hochgefahren und passend durch eine Messaging Middleware verbunden.
In dieser Session werden die Konzepte, Programmier- und Deployment-Modelle von Spring Cloud Data Flow, Spring Cloud Stream und Spring Cloud Task vorgestellt, Projekterfahrungen fließen ein – und natürlich gibt es auch eine Demo.
Wie Mike Cohn bei der Einführung der Testpyramide vor zehn Jahren bereits beschrieben hat, steigen mit der Anzahl der Bestandteile in einem Integrationstest die Laufzeit und die Anfälligkeit für ungewollte Fehler (Timing, Daten, Set-up, konkurrierende Zugriffe …). Damit kann die dauerhafte Pflege von Integrationstestsuiten extrem aufwendig werden.
Mit Tools aus der DevOps-Szene (Docker, Otto, Vagrant) können relativ einfach und schnell Umgebungen für Tests aufgesetzt und betrieben werden. Arquillian und Gradle bilden die Brücke, um Integrations- und Oberflächentests in einem definierten und abgeschlossenen Umfeld auszuführen und so die Laufzeit und Fehleranfälligkeit der Tests drastisch zu senken. Ein solcher Stack wird an einem konkretem Beispiel vorgestellt.
Die statische Codeanalyse hat sich in den letzten Jahren in vielen Projekten als wichtiges Steuerungsinstrument der Codequalität und als Frühwarnsystem etabliert. Die Kennzahlen und Metriken von SonarQube und Co. besitzen aber auch Fallstricke und Probleme und sind manipulierbar. Allein reichen sie nicht aus, um Teams zu motivieren und Codequalität nachhaltig zu steigern. Im Gegenteil: In einer Blame- oder Rechtfertigungskultur, die Projekte mit mangelnder Qualität ausprägen können, sind Kennzahlen als singuläre Korrekturinstrumente daher wenig hilfreich.
Als Softwarearchitekt muss man diese Fallstricke kennen und bei Manipulationen von Codekennzahlen den Root Cause adressieren: das Qualitätsbewusstsein des Teams.
Der Vortrag belegt, wie sich Codekennzahlen manipulieren lassen, und zeigt unkonventionelle Lösungswege auf, wie man das Team zum Entwicklerungehorsam erzieht und mit Gamification-Ansätzen den Spaß an hoher Codequalität zurückgewinnt.
Dieser Vortrag wird eine kurze Einführung in das Gebiet der Volltextsuche und der Bibliothek Apache Lucene geben und dann die neuen Features und Verbesserungen präsentieren, die seit Version 5 hinzugekommen sind. Dabei wird das besondere Augenmerk auf die Suchserver Apache Solr und Elasticsearch gelegt, denn diese werden von den meisten Usern eingesetzt. Der Vortrag wird ebenfalls einen kurzen Featurevergleich zwischen den beiden Servern präsentieren, sodass neue Nutzer besser entscheiden können, welches der beiden Produkte besser für das Projekt geeignet ist.
Die Deutsche Bank hat sich als Ziel gesetzt, durch den Einsatz einer API-Managementlösung eine Abstraktionsschicht zwischen Applikationen und Backends aufzubauen. Mittelfristig soll uns diese Abstraktionsschicht ermöglichen, die Backends austauschbar zu machen, oder auch pro Region oder Geschäftsbereich unterschiedliche Backends einzusetzen, die über eine gemeinsame, abstrahierte Schnittstelle angesteuert werden können.
Zwischen Applikation (Mobile App, Browser) und Backends wurde eine mehrschichtige Architektur definiert, die helfen soll, eine flexible, dynamische Microservices-Welt zu erschaffen, die Entwicklungsgeschwindigkeit, Ausfallsicherheit der Systeme und die Wettbewerbsfähigkeit im geschäftlichen Kontext deutlich verbessert.
Dieser Talk soll beleuchten, unter welchen Voraussetzungen dieses Vorhaben gelingen kann, welche Herausforderungen sich im Hinblick auf Architektur und Organisation ergeben und welche Erfahrungen wir dabei gesammelt haben.
Microservices-Architekturen können mit klassischen Application Servern nichts anfangen, stattdessen geht der Trend hin zu Fat-JARs und Self-contained Systems, in denen die Anwendung ihre Ablaufumgebung mitbringt. Nach dem Erfolg von Spring Boot und Co. haben mittlerweile auch die klassischen Java-EE-Applikationsserver-Hersteller Microservices-Frameworks im Programm. In dieser Session wollen wir uns anschauen, wie mit WildFly Swarm die notwendigen Teile des WildFly AS mit der Applikation und allen benötigten Bibliotheken in einem ausführbaren JAR verpackt werden. Dazu diskutieren wir natürlich auch über für Microservices relevante Themen wie Konfiguration, Logging, Monitoring, Resilience und Service Discovery im Umfeld von WildFly Swarm. Als Abschluss wagen wir noch einen Ausblick auf Standardisierungsversuche im Rahmen von Java EE und der MicroProfile-Initiative.
Ein Microservice alleine macht noch keinen Sommer. Interessant wird es erst, wenn viele scheinbar unabhängige Services ein großes Ganzes bilden. Als Kommunikationsmuster zwischen den einzelnen Services wird dabei nicht selten auf REST zurückgegriffen. So weit, so gut. Aber wie sieht eine wirklich gute, und vor allem zukunftssichere REST-Schnittstelle aus? Welches Austauschformat sollte man wählen? XML, JSON, Binary oder am besten gleich alle drei? Wie geht man mit dem Thema Versionierung um? Und wie sichert man das API gegen unbefugte Benutzung ab? Welche Rolle spielen die Response-Header? Was ist mit dem Thema „Error Handling“? Und wie nutzt man möglichst effektiv die verschiedenen HTTP-Statuscodes? Macht es Sinn, für unterschiedliche Channels unterschiedliche Schnittstellen anzubieten? Und was ist noch einmal dieses HATEOAS? All diese Fragen – und viele weitere – wollen wir uns am Beispiel eines eigenen API-Designs anschauen. Ausgehend von einer einfachen REST-Schnittstelle, werden wir Schritt für Schritt neue Anforderungen einführen und dafür passende praxisnahe Lösungen entwickeln.
Beim von SoftBank Robotics entwickelten Pepper handelt es sich aktuell um den fortschrittlichsten humanoiden Roboter, den man kaufen kann. Der 120 cm große Humanoide soll sozial und emotional sein und vorrangig im Service- und Beratungsbereich eingesetzt werden. Doch wie sieht es mit der Lernfähigkeit des Humanoiden aus? Und, sofern diese von Haus nicht vorhanden ist, lässt sie sich beispielsweise durch die Nutzung eines Frameworks wie TensorFlow nachrüsten? Diesen und ähnlichen Fragen geht der Vortragende im Rahmen seiner Session auf den Grund. Unterstützt wird er dabei von Pepper Milli.
Single Page Applications auf Basis von Angular 2 in Kombination mit RESTful Services auf Basis von Spring Boot sind aktuell sehr beliebt. Im Zeitalter der Cloud und mithilfe von Praktiken wie Continuous Delivery sind diese auch schnell in Produktion gebracht. Doch wie steht es um die Sicherheit derartiger Anwendungen?
Diese Session zeigt aus der Praxis eines IoT-Projekts, auf welche Aspekte es wirklich ankommt, um eine sichere Anwendung in die Cloud zu bringen. Dies umfasst Themen wie u.a. die Authentifizierung auf Basis von OpenID Connect 1.0 und OAuth 2, Secure Coding (u.a. die Vermeidung unsicherer APIs in Angular 2) sowie automatisierte Securitytests der RESTful Services im Backend.
Diese Session ist eine Mischung aus Projekterfahrungen, brandaktuellen Features wie Angular 2 als OpenID-Connect-Client und Best Practices in der Implementierung von RESTful Backends mit Spring Boot und Spring Security. Dies wird von dazu passenden kurzen Livedemos begleitet.
Viele sprechen von einem neuem IT-Zeitalter, bei dem Anwendungen in Container verpackt und von Orchestrierungsplattformen wie Kubernetes oder OpenShift skalierbar betrieben werden. Und tatsächlich spricht vieles dafür, dass wir unsere Java-Anwendungen künftig nicht mehr als JAR-, WAR- oder EAR-Artefakte, sondern als Docker-Container-Images ausliefern werden. Dieser Vortrag zeigt, wie dieser Übergang schmerzfrei vollzogen werden kann.
Damit das gelingen kann, ist eine lokale Containerentwicklungsumgebung notwendig. Tools wie Minikube oder Minishift zeigen, wie einfach es ist, komplexe Plattformen wie Kubernetes oder OpenShift mit einem einzigen Kommando zu installieren. Um ein bestehendes Projekt auf diese Umgebungen umzustellen, helfen Werkzeuge wie das Fabric8 Maven Plugin. Dieses erlaubt es, ähnlich wie Spring Boot, Java-Anwendungen ohne Anpassungen und ohne Konfiguration für Kubernetes bzw. OpenShift aufzubereiten, um es dorthin zu deployen. Auch bietet es Entwicklungsunterstützung beim Hot Redeployment oder beim Remote-Debugging von Clusteranwendungen.
Dieser Vortrag konzentriert sich auf Livedemos, bei denen wir bei Null beginnen. Es braucht nur Minuten, um eine klassische Java-Anwendung auf Kubernetes zu portieren. Wir lernen die Facetten des neuen Entwicklungsworkflows kennen, sodass wir am Ende wissen, wie man Java-Projekte für Kubernetes und OpenShift entwickeln kann, ohne jedoch alle Feinheiten dieser Plattformen im Detail kennen zu müssen.
Roland Huß ist ein Software Engineer, der für Red Hat an fabric8, einer Microservices-Plattform für Kubernetes und OpenShift arbeitet. Er entwickelt seit fast 20 Jahren, hat aber niemals seine Wurzeln als Systemadministrator vergessen. Roland arbeitete aktiv in Open-Source-Projekten mit und betreut sowohl Jolokia, die JMX-HTTP Bridge als auch das populäre Docker-Maven-Plug-in fabric8io. Und er liebt Chilis.
Angular bietet eine Vielzahl durchdachter Konzepte für die Entwicklung von Komponenten. In dieser Session erfahren Sie, wie Sie diese zur Schaffung wiederverwendbarer Steuerelemente nutzen können. Dazu wird per Live-Coding ein solches Steuerelement erstellt und nach und nach erweitert. Dabei werden einzelne Optionen und Designentscheidungen diskutiert und Möglichkeiten zur Kommunikation zwischen Komponenten aufgezeigt.
Jederzeit nach Produktion gehen zu können, ist ein Traum, oder?
Damit es nicht zum Albtraum wird, benötigt man vor allem eines: die Sicherheit, dass die Änderungen keine Bugs in bestehende Funktionalität einführen.
Consumer-driven Contracts sind Vereinbarungen zwischen Consumer und Provider eines Service, die vom Consumer getrieben werden. Diese Contracts können durch Tests geprüft werden. Insbesondere in einem stark verteilten System, in dem jeder zu jeder Zeit nach Produktion gehen darf (aka Microservices) ist ein automatisierter Test dieser Contracts sinnvoll.
In diesem Vortrag gehe ich zunächst auf die Motivation für Consumer-driven Contract Testing ein und erläutere, worum es geht. Dann stelle ich die beiden Bibliotheken PACT und Spring Cloud Contract vor, um danach abschließend ein auf Docker basierendes Vorgehen zu umreißen, das keine Abhängigkeit zu Bibliotheken hat.
Anhand eines großen Systems zeigen Gernot und Ralf, wie Sie mit ziemlich wenig Aufwand angemessene und vernünftige Dokumentation für unterschiedliche Stakeholder produzieren – sodass Entwicklungsteams dabei auch noch Spaß haben.
Unser Rezept: AsciiDoc mit arc42 mischen, Automatisierung mit Gradle und Maven hinzufügen und mit Diagramm- oder Modellierungstools Ihrer Wahl kombinieren. Schon sind schicke HTML- und reviewfähige PDF-Dokumente fertig. Auf Wunsch gibts DOCX und Confluence als Zugabe.
Wir zeigen, wie Sie Doku genau wie Quellcode verwalten können, stakeholderspezifische Dokumente erzeugen und Diagramme automatisiert integrieren können. Einige Teile dieser Doku können Sie sogar automatisiert testen.
Zwischendurch bekommen Sie zahlreiche Tipps, wie und wo Sie systematisch den Aufwand für Dokumentation reduzieren können und trotzdem lesbare, verständliche und praxistaugliche Ergebnisse produzieren.
Als zeitgemäßer Entwickler muss man eine Vielzahl an Sprachen sicher beherrschen. Wir definieren unsere Entwicklungsumgebung mit Gradle, wir bauen unsere Software in Java, Kotlin und JavaScript. Wir verwenden Groovy und Scala, um unsere Software zu testen. Die Build-Pipeline wird per DSL und JSON definiert. Mit YAML und Python beschreiben wir die Infrastruktur und das Deployment unserer Anwendungen. Die Dokumentation unserer Architekturen erledigen wir mit AsciiDoc und JRuby.
Use the right tool for the job! Das ist das Motto dieser Session. Jede Sprache hat Stärken in einer bestimmten Domäne. Diese Stärken gilt es zu nutzen. Aber einfach blind jede gerade angesagte Sprache oder Technologie einzusetzen, ist sicher nicht die Lösung. Diese Session führt durch die einzelnen Entwicklungsphasen eines einfachen JEE-Microservice und zeigt dabei einen in der Praxis erprobten, stabilen und gut integrierten polyglotten Technologiestack, um moderne Enterprise-Applikationen schnell und einfach zu entwickeln.
Unit-Tests, Integrationstests und Co. machen es möglich, zu überprüfen, ob entwickelte Software den funktionalen Anforderungen entspricht. Durch die zunehmende Vernetzung von Softwaresystemen und die Auslagerung von Anwendungen in die Cloud und das Internet werden aber auch Securityanforderungen immer relevanter. Traditionelle Qualitätssicherungsmethoden laufen hier oft ins Leere. Wenn überhaupt, wird meist nur am Ende stichprobenartig getestet, ob eine Software sicher ist. Fallen Sicherheitsmängel erst so spät auf, sind sie in der Regel aber nur schwierig zu beheben, und schlimmstenfalls müssen sogar ganze Anwendungsteile neu entwickelt werden. Deshalb ist es sinnvoll, IT-Sicherheit möglichst früh im Entwicklungsprozess zu berücksichtigen, um teure Schwachstellen zu vermeiden. Aber wie können Sicherheitsrisiken frühzeitig ermittelt und bei der agilen Entwicklung berücksichtigt werden? Eine Lösung ist ein Security-driven Developement, bei dem IT-Sicherheitsanforderungen fest in den agilen Entwicklungsprozess integriert werden.
Ein innovatives Start-up beauftragt dich damit, einen Transportroboter zu bauen und zu programmieren, der autonom Pakete ausliefern kann. Gemeinsam mit deinem Team (bestehend aus zwei bis acht Personen) sollst du nun einen Roboter mit LEGO Mindstorms EV3 realisieren, der solche Auslieferungen in einer Modellstadt durchführen kann. Mit der S&S Media Group steht auch bereits der erste Kunde vor der Tür: Das Frankfurter Medienhaus möchte nämlich ausgewählte Unternehmen mit einem Java-9-Welcome-Paket beglücken.
Vor dem Wettbewerb gibt es eine rund 45-minütige Einführung in LEGO Mindstorms EV3 und dessen Programmierung unter Java. Der Wettbewerb eignet sich also auch bestens für Einsteiger. Auf alle Fälle garantieren wir allen Teilnehmenden jede Menge Spaß bis Mitternacht!
React ist eine JavaScript-Bibliothek, mit der sich Single-Page-Anwendungen für das Web entwickeln lassen. Ursprünglich von Facebook konzipiert und verwendet, steht React mittlerweile als Open-Source-Projekt zur Verfügung und wird bereits auf zahlreichen Websites wie Twitter, Netflix oder Airbnb eingesetzt. Und obwohl, oder gerade weil React an wichtigen Stellen gegen gängige Best Practices der Webentwicklung verstößt, steigt die Verbreitung von React kontinuierlich weiter an.
In diesem Talk stelle ich die grundsätzlichen Konzepte und Ideen von React vor und zeige anhand von Codebeispielen, wie sich mit React sehr einfach wiederverwendbare Komponenten und darauf aufbauend komplexe Webanwendungen entwickeln lassen und warum es sich lohnt, "Best Practices" auch einmal in Frage zu stellen.
“HTML5 war unser größter Fehler”, Mark Zuckerberg. Diese Aussage hatte 2012 die Web-Apps-Welt stark erschüttert. Und trotzdem: Jeder kennt diese grottenschlechten Apps, die zu Dumpingpreisen in Rekordtempo auf den Markt gebracht werden - und nicht selten noch schneller durch schlechte Bewertungen wieder abstürzen und ihre Chance verspielen.
Nun schreiben wir aber das Jahr 2017, und es ist einiges passiert. Neben Web-Apps, die z.B. durch TypeScript stark profitieren können, gibt es auch X-Platform-Frameworks die auf native Elemente aufbauen. Außerdem gewinnen Hybrid-Apps immer mehr an Beliebtheit, und was spricht eigentlich noch für eine klassische native App?
In diesem Vortrag möchte ich einen Überblick über die verschiedenen Ansätze und Frameworks geben, Vor- und Nachteile sowie mögliche Einsatzgebiete besprechen. Dabei werden wir uns auch einige Apps im Markt kritisch anschauen.
Creating a single Java-based microservice is a well understood problem. Creating a cluster of load-balanced microservices that are resilient and self-healing is not so easy. Managing that cluster with rollouts and rollbacks, scaling individual services on demand, securely sharing secrets and configuration among services is even harder. Kubernetes, an open-source container management system, can help with this. In this talk, we will start with a simple Java-based microservice, containerize it using Docker, and scale it to a cluster of resilient microservices managed by Kubernetes. Along the way, we will learn what makes Kubernetes a great system for automating deployment, operations, and scaling of containerized applications.
In dieser unterhaltsamen Session sehen Sie meine persönliche Auswahl an öffentlich gewordenen skurrilen, tollkühnen, wunderbaren sowie peinlichen Hacks der letzten Jahre. So manchen wird es verwundern, welch grobe Schnitzer und einfache Versäumnisse zu den offensichtlichsten Hacks der letzten Jahre geführt haben. Ebenso wird es erstaunen, wie technisch ausgefeilt manch anderer Hack doch war und wie kreativ Angreifer vorgehen. In dem obligatorischen „Lessons Learned“-Teil versuche ich, mit Ihnen die Punkte zu erarbeiten, die die Sicherheitslücke vermieden hätten oder zumindest das Ausnutzen erschwert hätten. Somit entsteht abseits des Unterhaltungswerts der jeweiligen Hacks noch ein sicherheitstechnischer Nutzen.
Am Anfang war ein einfaches „Hello World“, doch dann schufen die Programmiergötter rund um den Globus verschiedenste Technologien und Frameworks. Und so hat man heute als Entwickler die Qual der Wahl, wie man eine Applikation am besten umsetzen soll. Im Rahmen der Session zeigt der Vortragende auf ironische Art und Weise, was sich mittlerweile aus einem einfachen „Hello World“-Programm alles machen lässt. Es wird dabei live codiert und es werden jede Menge Technologien und Frameworks eingesetzt – ganz nach der Devise: Warum einfach, wenn es umständlich auch geht? Am Ende kann dann jeder selbst entscheiden, wie realitätsnah bzw. realitätsfern dieses Motto in Bezug auf seine eigenen Projekte ist.
Eine gut geplante Softwarearchitektur stellt das Grundgerüst jeder wartbaren Software dar. Das steht in einem scheinbaren Widerspruch zu agilen Softwareprozessen, bei denen langfristige Planungen weitestgehend vermieden werden. Die Session zeigt anhand zahlreicher konkreter Beispiele, wie man die Erstellung einer Softwarearchitektur in einzelne Aufgabenpakete unterteilt, dokumentiert und regelmäßig durch Reviews und automatisierte Architekturtests verifiziert. Das Ziel ist es, auch in einem iterativen Prozess eine langfristig tragfähige Architektur entstehen zu lassen.
Web-APIs sind allgegenwärtig und haben sich als Mittel zur Systemintegration in der Breite durchgesetzt – nicht zuletzt auch deshalb, weil sie als leichtgewichtig und einfach umsetzbar gelten. Doch ist es wirklich so einfach? Spätestens beim ersten größeren Projekteinsatz wird deutlich, dass eine Reihe von Herausforderungen zu meisten sind. Wie geht man mit vorübergehend nicht erreichbaren Endpunkten um? Bietet SSL in allen Umgebungen ausreichende Sicherheit? Wer kümmert sich um ungültig werdende Zertifikate? Und wie setzt man langlaufende Prozesse am besten um? Dieser Talk liefert zahlreiche Tipps aus dem Projektalltag.
Die Migration und Integration bestehender geschäftskritischer IT-Lösungen in die neue Welt mit Cloud, Containerization und DevOps stellt eine besondere Herausforderung für Enterprise-IT-Organistationen dar. Oft ist diese Migration auf agile Methoden und moderne Frameworks unverzichtbar, um schnell und effizient auf die Anforderungen der Fachbereiche reagieren zu können. Im Vortrag zeigen wir anhand realer Praxisbeispiele, wie man mithilfe moderner PaaS-Lösungen auf Basis von Kubernetes, Red Hat OpenShift und CI/CD/CT auch bestehende Anwendungsarchitekturen effizient migrieren kann, ohne auf bewährte Softwarentwicklungsprinzipien verzichten zu müssen.
Akka ist eine Sammlung von Bibliotheken, um robuste, skalierbare und verteilte Systeme zu bauen. Diese Session stellt das Akka-Ökosystem anhand konkreter Quelltexte vor: Aktoren und Nachrichten, Supervision, Verteilung, Clustering und Event Sourcing.
Wer schon mal eine UI-Designvorlage in Java-Code umsetzen musste, der weiß, wie lange ein blöder Button ein Projekt aufhalten kann. Aber mit dem entsprechenden MVVM-Framework kann man das Stylen der Anwendung den Profis überlassen und sich selbst auf das Umsetzen der Businesslogik konzentrieren. In dieser Session bauen wir eine kleine Anwendung mit Benutzeroberfläche im Developer-Stil. Dann tauschen wir das UI für das Endprodukt einfach komplett aus, ohne eine Zeile Code zu ändern. Dieselbe Anwendung wird dann für verschiedene mobile Zielplattformen unterschiedlich gestylt und responsiv gemacht. Und am Ende sind Designer und Developer endlich beste Freunde.
Verteilte Systeme und der Einsatz von webbasierten APIs auf vielen unterschiedlichen Devices machen den Einsatz eines SSO-Systems auf Basis von OAuth 2.0, OpenID Connect und JSON Web Token (JWT) unabdingbar. Jedoch macht es einem der Java-Standard in Sachen Security nicht immer einfach, diese (recht neuen) Technologien zu verwenden und zu integrieren. In Cloud-Umgebungen mit API-Gateways muss zudem Rücksicht auf die teils eingeschränkten Möglichkeiten der Anbieter genommen werden.
Ich stelle unterschiedliche Möglichkeiten und Lösungen vor, wie man APIs und Anwendungen unterschiedlicher Art in der Cloud und On-Premise absichern kann und dennoch weiß, welcher User gerade mit welchen Rollen die Operation durchführen möchte, selbst wenn diese im Backend nur indirekt aufgerufen wird.
Web APIs are more often specified with API definition languages like Swagger (now named OpenAPI Spec), as it can help you generate nice interactive documentation, server skeletons, and client SDKs, mocks, and more, making it simpler to get started both producing and consuming an API.
In this session, Guillaume will demonstrate how to define a Web API with Swagger/OpenAPI Spec, and scale it using Cloud Endpoints, on the Google Cloud Platform.
User Experience (UX) wird immer wichtiger. Nicht zuletzt, weil Mobile-Apps und moderne Websites den Anspruch der Nutzer an Oberflächen und Bedienung drastisch erhöhen. Damit sind nicht zuletzt Entwickler von Enterprise-Anwendungen gefordert, beim Thema User Experience eine Schippe drauf zu legen. Doch was ist UX, und wie kann man sie im Entwicklungsprozess mit berücksichtigen? Diese Session gibt Oberflächenentwicklern, aber auch UI-Muffeln einen spannenden Einblick in Usability Engineering und dessen Notwendigkeit in Softwareentwicklungsprojekten.
Node.js und Microservices sind ein Duo, das hervorragend zusammenpasst. Die modulare Struktur der Node.js-Plattform unterstützt den Microservices-Gedanken schon in seinen Grundzügen. Bei der Umsetzung von Microservices können Sie nicht nur auf die Node.js-eigenen Module zurückgreifen, sondern sich aus einer Vielzahl von Bibliotheken bedienen, die Ihnen die Arbeit erleichtern. Eines der bekanntesten Frameworks aus diesem Bereich ist Seneca. An einem praktischen Beispiel erfahren Sie, wie Sie einen Microservice designen, wie Sie ihn mithilfe von Node.js implementieren und ihn in Ihre Applikation einbinden.
2012 war otto.de eine langsame und schwer veränderbare E-Commerce-Plattform. Das Basissystem war eine über zehn Jahre alte Intershop-Installation mit mehr als 750 000 Modifikationen: Dar Albtraum jeder Produktorganisation. Firmen wie Quelle oder Neckermann waren unter ähnlichen Voraussetzungen gerade Pleite gegangen.
Dann startete Otto 2012 das Lhotse-Projekt, mit dem Ziel einer Eigenentwicklung. Heute ist otto.de eine der größten und erfolgreichsten E-Commerce-Plattformen Europas.
Machen Sie es genauso!
Project Lombok ist eine Library, die sehr einfach in der Anwendung ist und gleichzeitig enorme Vorteile während der Entwicklung bringt. Mittlerweile erfreut sich das Project Lombok einer großen Fangemeinde, aber die wenigsten kennen und verstehen die darunter liegenden Mechanismen.
Nach einer kurzer Einführung wird im Vortrag gezeigt, wie die Magie hinter Lombok funktioniert.
Die Internals werden ans Tageslicht gebracht. Es wird gezeigt, an welchen Stellen eingegriffen wird und welche Tricks benutzt werden, um die vorhandene Funktionalität zu ermöglichen.
Es wird ausführlich besprochen, was während des Kompiliervorgangs passiert und wie man in diesen eingreifen kann.
AST-Bäume werden visualisiert und genauer untersucht.
Außerdem wird gezeigt, wie man den Kompiliervorgang in einer IDE debuggen kann.
Intralogistiklösungen erfassen aktuell und in Zukunft immer weitere Bereiche von Warenströmen – von E-Commerce und Paketversendung bis zu Gepäckabfertigung. Die dabei verwendeten logistischen Prozesse unterliegen in den verschiedenen Anwendungsbereichen großer Vielfalt und erfordern gleichzeitig die Erstellung und Inbetriebnahme solcher Systeme in sehr kurzen Zeiträumen. Dieser Vortrag gibt einen Überblick, vor welche Herausforderungen dies die bestehenden Softwarearchitekturen und Vorgehensweisen stellt und welche Ansätze und erste Erfolge in der Transformation der bisherigen Lösungen erzielt wurden.
Als Marktführer für Ticketing und Liveentertainment müssen wir uns bei EVENTIM immer wieder fragen: Wie schaffen wir es, hunderttausende Tickets für einen einzigen Künstler innerhalb von einer Stunde erfolgreich zu verkaufen? Sprich: Wie können wir unsere Performance steigern und gleichzeitig sicherstellen, alle Geschäftsanforderungen dauerhaft zu erfüllen?
Regelmäßige Refactorings sind die Antwort. Im Rahmen dieses Vortrags möchten wir zeigen, wie Spock-Unit-Tests und Performancemessungen anhand des Nutzerverhaltens und von Lastanalysen des Shops dazu beitragen, eine schnelle Umsetzung neuer Features zu garantieren. Und das, ohne dabei manuell auf Reflection zurückzugreifen – mit deutlich kompakter geschriebenen Tests und einer erhöhten Lesbarkeit dieser Tests.
Der Einsatz von Docker-Containern für Java-Applikationen gehört inzwischen zum Projektalltag. Allerdings scheuen sich Projektbeteiligte häufig davor, auch Datenbanken in Docker-Containern laufen zu lassen.
In dieser Session möchte ich gerne mit Mythen rund um Datenbanken in Containern aufräumen und den Teilnehmern Best Practices für den Einsatz von Datenbanken in Containern mitgeben.
Dieses Lab bietet einen Rahmen dafür, reaktive Programmierung mit Akka live auszuprobieren – egal ob mit Java oder Scala. Es gibt auf Wunsch 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.
Facebook benutzt GraphQL seit Jahren als Schnittstelle für ihre mobilen Anwendungen. GitHub stellt ein neues HTTP-API auf Basis von GraphQL vor. Man kann GraphQL also nicht länger ignorieren. Aber was ist das denn eigentlich? Und warum ist das besser als unser heiliges REST? Ist es das überhaupt?
Dies werden wir in diesem Vortrag klären und auch gleich auf die weiterführenden Fragen eingehen. Darunter: Braucht man eine Implementierung, und wenn ja, welche? Wie bindet man seine eigenen Systeme ein? Welche Art von Query kann man bedienen? Gibt es API-Explorer?
Softwaresysteme wachsen historisch. Das gilt nicht als Idealzustand, aber so ist die Realität nun mal. Für Systemlandschaften gilt es erst recht. IT-Trendwellen schwappen über Unternehmen und hinterlassen ihre Spuren in den Anwendungen, geglückte Würfe ebenso wie gescheiterte Initiativen. (De-)Zentralisierung, Objektorientierung, SOA, Standardisierung, Cloud … Manche Unternehmen haben Vermächtnisse (engl. Legacy) aus drei Jahrzehnten im Betrieb. In vielen Fällen wird das Wissen darum nur mündlich weitergegeben. Die Konsequenz: langwierige und lückenhafte Einarbeitung, Unsicherheiten bei Änderungen und Neuentwicklungen. Im Extremfall führt dies zu geringem Vertrauen bei Entscheidern. Dabei ist der Aufwand, das Wesentliche fest und aktuell zu halten, gar nicht groß. In dieser Session zeige ich, wie ihr bestehende Systemlandschaften kartografiert und es allen Beteiligten leichter macht, sich zurechtzufinden und informierte Entscheidungen zu treffen. Mit Anlehnung an Methoden wie arc42 (das initial nur auf Einzelsysteme passt), Beispielen aus echten Ausgrabungen, aber ohne C14.
Der Trend in der Softwareentwicklung geht weg von Monolithen hin zu Anwendungen, die aus mehreren unabhängigen Einheiten bestehen. Jede dieser Einheiten ist für sich betrachtet leichter zu testen und zu deployen. Allerdings wird hierfür das notwendige Maß an Isolation, Redundanz und loser Kopplung zunehmend wichtiger, da der Ausfall eines einzelnen Teils nicht die Stabilität des Gesamtsystems gefährden darf.
Die Session zeigt gängige Patterns und etablierte Vorgehensweisen, wie man diesen neuen Herausforderungen begegnen kann.
JUnit 5 ist nicht nur der offizielle Nachfolger von JUnit, sondern stellt darüber hinaus eine Plattform zur Verfügung, in die sich andere Testframeworks einklinken können und dadurch automatisch den Support von IDEs und Build-Werkzeugen erben. Diese Session stellt diesen ungewöhnlichen Aspekt von JUnit 5 anhand unterschiedlicher Beispiele vor. Die Zuhörer erhalten einen Einblick in die Architektur von JUnit 5 und lernen, wie sie ihr Lieblingstestframework in die Plattform integrieren können. Zielpublikum: Java-Programmierer/-innen, die sich für die inneren Details von JUnit 5 interessieren oder einfach nur etwas über Erweiterbarkeit von Plattformen lernen wollen.
Formulare sind für die meisten Benutzer ein notwendiges Übel. Einerseits sind sie notwendig, andererseits scheitert die Bedienung nicht selten an einer schlechten Usability. Responsive Webdesign hat die Situation nicht einfacher gemacht; verschiedene Formfaktoren und Interaktionsmechaniken sind zu berücksichtigen. Technisch müssen Formulare auf unterschiedlichen Devices skalieren, getestet und technisch robust sein. Aus UX/Usability-Perspektive müssen Formulare oder Formularstrecken dem Dialogprinzip folgen. Der Talk zeigt an praktischen Beispielen, welche grundlegenden UX- und Usability-Empfehlungen zu beachten sind und welche Vorgehensweise man wählt. Außerdem wird dargelegt, warum Nutzertests in komplexen Systemen unbedingt notwendig sind. Grundlage für nutzerzentrierte Entscheidungen sind vor allem valide Use Cases auf der Basis von Interviews und Beobachtungen und die daraus abgeleiteten Nutzungsszenarien. Technisch werden die HTML5-Elemente betrachtet, die ein positives Nutzererlebnis über unterschiedliche Devices hinweg adressieren.
In diesem Vortrag stellen wir uns die Frage, ob wir angesichts der Entwicklung der letzten Jahre Java EE eigentlich noch brauchen. Um das herauszufinden, gehen wir zurück an die Ursprünge von Java und Java EE und stellen die Entwicklung auch im historischen Kontext vor. Wir zeigen, warum Java bzw. speziell Java EE so erfolgreich war und auch heute noch ist. Dabei vergleichen wir die Architektur von Java-EE-Anwendungen mit modernen Microservices-orientierten Ansätzen auf Basis von Softwarecontainern. Um das Ganze zu illustrieren, bauen wir uns einen kleinen Applikationsserver auf Basis von Kubernetes und werden sehen, warum auch gestandene Java-EE-Entwickler sich schnell mit der Materie befassen sollten.
Die Tagespresse hält uns regelmäßig vor Augen, wie massiv Anwendungen und IT unter Beschuss genommen werden. Sicherheitslücken und Daten-Leaks können hierbei sogar existenzbedrohende Ausmaße annehmen. Um so wichtiger ist es, sich konsequent und intensiv mit dieser ansteigenden Bedrohung und Herausforderung zu beschäftigen. Doch noch immer kommt Security in vielen Anwendungen gerade im Entwicklungsprozess zu kurz. Zumeist werden erst kurz vor dem Release oder post mortem Sicherheitsanalysen stichprobenartig durchgeführt und Gegenmaßnahmen ergriffen. Es ist an der Zeit, die Softwareentwicklung und das eigene IT-Portfolio durch automatisierte und kontinuierliche Sicherheitstests zu komplettieren. In diesem Vortrag betrachten wir eine einfache Methode, um automatisiert innerhalb des CI-Prozesses Sicherheitslücken zu erkennen und sofort an das Team zurückzuspielen. Hierfür bieten Technologien wie Open Source Security Scanner, Docker und Jenkins die Grundlage.
Wer heute über Big Data spricht, kommt an Hadoop nicht vorbei.
Beim Thema Microservices fällt schnell das Stichwort Kubernetes. Beides sind verteilte Systeme, jedoch für ganz verschiedene Einsatzfelder.
Wirklich? Dieser Vortrag beleuchtet die Unterschiede und Gemeinsamkeiten beider Architekturen und wagt einen Blick in die Zukunft.
Angular verfolgt einen relativ klassischen MVC-Ansatz mit Two-Way Data Binding. Das erleichtert den Einstieg und ist für einfache Anwendungen ausreichend. Bei komplexer werdenden Anwendungen kann dieser Ansatz aber für Schwierigkeiten in der Nachvollziehbarkeit der Datenflüsse sorgen und damit die Wartbarkeit und Erweiterbarkeit beeinträchtigen.
Eine Alternative dazu ist Redux, das sich in der React-Welt weitgehend durchgesetzt hat. Redux ist sowohl ein Pattern als auch eine Bibliothek, die auf Prinzipien der funktionalen Programmierung setzt, um den Zustand einer Anwendung zu managen. Die Beschränkung auf unidirektionalen Datenfluss und die explizite Modellierung von Aktionen sorgt nicht nur für eine bessere Verständlichkeit der Abläufe in der App, sondern auch für eine saubere Trennung der einzelnen Aspekte und Zuständigkeiten.
Redux ist aber nicht auf React beschränkt, sondern ist technologieneutral und lässt sich ebenfalls mit Angular einsetzen.
Im Vortrag wird zunächst die Idee und Funktionsweise von Redux erklärt und anschließend gezeigt, wie Redux mit Angular angewendet werden kann.
Erleben Sie die Geschichte von VENOM, einem großen erfolgreichen, aber auch chaotischen IT-System aus der Sicht verschiedener Beteiligten. Unsere Protagonisten sind zufriedene und erschrockene
Benutzer, motivierte, engagierte und frustrierte Entwickler, scham- und rücksichtslose, effektive und chaotische Manager, Admins und Betreiber und andere.
Die Story beginnt schon in den 1990er-Jahren, als Netscape noch das Gesicht des Internets war, bis in Zeiten resilienter, containerbasierter Microservices.
VENOM stößt dabei an vielerlei Grenzen, das Management wechselt häufig die Fahrtrichtung, das Entwicklungsteam alterniert zwischen Stress, Depression und Euphorie.
Sie lernen eine Modernisierungs- und Verbesserungsinitiative kennen, die nach diversen Reviews und Diskussionsrunden gestartet werden soll.
Und dann sind Sie, wertes Publikum, gefragt: Kann der Plan zur Modernisierung
von VENOM aufgehen? Kann VENOM an frühere Erfolge anknüpfen? Findet die Entwicklung in ruhige Fahrwasser zurück?
Bei der Entwicklung von Businessanwendungen liegt der Fokus klar auf der Funktionalität, das Design wird dagegen oft stiefmütterlich behandelt. Dabei steigt die Akzeptanz beim Nutzer, wenn die Anwendung nicht nur gut funktioniert, sondern auch noch ansprechend gestaltet ist.
Inzwischen gibt es eine Reihe von Frameworks, die den Entwickler bei der Gestaltung von Anwendungen unterstützen. Eines davon ist Google Material Design Lite. Das Framework selbst basiert auf keinem JavaScript-Framework und lässt sich somit gut mit bspw. JSF verbinden.
Am Beispiel einer konkreten Anwendung wird gezeigt, wie sich eine Businessanwendung mithilfe von Google Material Design Lite optisch aufpeppen lässt.
Es ist sicher richtig zu behaupten, dass Docker die Art und Weise, wie wir Java-Anwendungen entwickeln, ausliefern und betreiben, verändert hat. Dennoch sind immer noch viele Fragen offen, wie Docker denn nun konkret eingesetzt werden kann. Viel wurde bislang experimentiert – doch was bleibt übrig, wenn der Goldrausch vorbei ist?
Dieser Vortrag wagt eine Prognose und stellt nützliche Docker-Patterns unter anderem aus den Bereichen Konfiguration, Service Discovery, Image Building und Logging vor. Auch das Sidecar-Pattern zur Containerentkopplung wird ausführlich erläutert. Alle Muster werden im Detail mit ihren Vor- und Nachteilen erklärt und mit Codebeispielen verdeutlicht.
Roland Huß ist ein Software Engineer, der für Red Hat an fabric8, einer Microservices-Plattform für Kubernetes und OpenShift arbeitet. Er entwickelt seit fast 20 Jahren, hat aber niemals seine Wurzeln als Systemadministrator vergessen. Roland arbeitete aktiv in Open-Source-Projekten mit und betreut sowohl Jolokia, die JMX-HTTP Bridge als auch das populäre Docker-Maven-Plug-in fabric8io. Und er liebt Chilis.
Programmiersprachenaffinen Menschen drängt sich in den letzten Monaten zunehmend eine neue Programmiersprache ins Bewusstsein: Go. Plötzlich ist da vierzig Jahre nach C eine neue Programmiersprache, die auf den ersten Blick stark an erstere erinnert. Ein kurzer Blick auf Syntax und Paradigma erzwingt die Frage: Eine Programmiersprache, die weder strikt objektorientiert noch funktional ist und darüber hinaus auch noch stark an C erinnert, warum soll ich die jetzt auch noch lernen? Dieser Vortrag begibt sich auf die Suche nach Antworten. Inhalt:
+ Geschichte von Go - wer steckt dahinter?
+ Einführung in Go: Paradigma, Syntax, Toolchain
+ Warum Go?
+ Aber Go ist nicht objektorientiert?
+ Und was ist mit funktionaler Programmierung?
+ Clean Go
+ Wer nutzt Go?
+ Für welche Art von Anwendungen ist Go eine gute Wahl?
Immer mehr Webanwendungen werden für Cloud-Umgebungen entwickelt. Neben der Runtime verlagert sich gleichzeitig aber auch die Konfiguration in die Cloud, inkl. kritischer Zugangsdaten, etwa zu Datenbanken und anderen Systemen oder Anwendungen. Da neben Anwendungen auch Datenbanken in die Cloud wandern, müssen zusätzlich die darin enthaltenen sensiblen Daten in aller Öffentlichkeit – aber sicher vor fremden Blicken – gespeichert werden. Erschwerend werden mit der immer größeren Verbreitung von Microservices gleichzeitig aus einer einzelnen Webanwendung zahlreiche kleinere Webanwendungen, die häufig ihre eigenen konfigurierbaren Zugangsdaten zu Drittsystemen benötigen. Die Session stellt deshalb Möglichkeiten vor, wie sich etwa technische Zugangsdaten, Benutzerpasswörter und andere sensible Daten sicher in der Cloud speichern lassen, die Java-Webanwendungen aber weiterhin voll konfigurierbar bleiben.
JSON Schema (http://json-schema.org) is a web standard to define valid JSON objects. The definition is JSON itself and basically describes all properties of an object and their types.
Defining a JSON Schema for your data enables a number of interesting use-cases. Just to name one: For a REST API the JSON content of the requests and replies can be exactly defined (also see OpenAPI) and in addition any JSON can be validated its JSON Schema on the client and server side based on the same definition.
Of course where there is light there is also shadow. With JSON Schema you are required to define your data and the available tooling to do so is not really great (yet). In this presentation we will provide you with criteria to judge whether JSON Schema could be beneficial for your project or is just too much overhead.
The Elephant Carpaccio exercise is a great way for software people to practice and learn how to break stories into really thin vertical slices. It also leads to interesting discussions about quality and tech practices.The exercise takes 90-120 minutes, scales well (peoplewise) and was invented by Alistair Cockburn.
Die Session ist ein guter Einstieg, um praktisches Verständnis für UX-Engineering zu sammeln. Gemeinsam durchlaufen wir den Prozess, um aus einer Idee ein konkretes Oberflächenkonzept zu entwickeln. Dabei gibt es einen Einblick in die Paper-Prototyping-Methode und in die Vorteile des iterativen Vorgehens in der Oberflächenentwicklung. Die Session wird ein Workshop im Gruppenarbeitsformat sein, sodass ein reger Austausch zwischen den Teilnehmern entsteht.
RESTful Web Services sind schon seit einiger Zeit in aller Munde und sehr beliebt. Viele der bekannten öffentlichen Web-APIs behaupten von sich, RESTful zu sein. Viele aktuelle APIs erfüllen ein wichtiges Element von REST allerdings nicht: Hypermedia as the Engine of Application State (HATEOAS). Diese Session gibt einen Überblick über das Thema und zeigt an vielen konkreten Beispielen, warum RESTful Hypermedia-APIs sinnvoll und sehr nützlich sind. Dabei geht Kai sowohl auf verschiedene Repräsentationen wie z. B. HAL und Siren ein als auch auf deren Einbindung in existierende Infrastrukturen, wie z. B. den Spring-Stack. Auch für das Erstellen von API-Dokumentation gibt Kai praxisnahe Tipps. Ziel dieser Session ist, am Ende selbst beurteilen zu können, ob Hypermedia für das eigene REST-API Vorteile bringt.
Scala ist eine schöne, elegante Programmiersprache, die immer mehr Verbreitung findet. Scala ist cool, ausdrucksstark, innovativ - aber einfach?! Diese Session räumt mit dem Vorurteil auf, dass Scala kompliziert und schwer zu lernen ist, und zeigt an lauffähigen Quelltexten, wie einfach und gut lesbar Scala-Quelltext sein kann, selbst für Entwickler, die bisher nur Java können. Eine sanfte Einführung in Scala, Wow-Effekt garantiert.
Sobald Docker in den Betrieb überführt werden soll, kommt mensch mit den klassischen Techniken an unnötige Hürden. Docker hat mit dem Swarm Mode einen eigenen integrierten Cluster-Modus, der auf einfachste Weise für die Hochverfügbarkeit der Applikation sorgt. Deployments im Sinne von Skalierung und Imageupdates (Rolling Upgrade) sind ebenfalls integraler Bestandteil. Abgerundet wird dies durch die interne Service Discovery, die es allen Containern ermöglicht, einfach auf andere Services/Container zuzugreifen.
Während Docker selbst ein Framework zum Paketieren und Virtualisieren von Applikationen darstellt, bietet Dockers Swarm Mode die Möglichkeit, ein Framework für das Deployment und den Betrieb von Docker-Containern zu betreiben.
In diesem Hands-on spielen wir das Deployment von einzelnen Containern und ganzen Stacks im Docker Cluster durch und zeigen die wichtigsten Features.
JavaFX ist eine moderne UI-Technologie zur Entwicklung von plattformübergreifenden Desktopanwendungen und mobilen Apps. Bei immer mehr Projekten auch im Enterprise-Bereich spielt die Webfähigkeit eine zunehmend große Rolle. Hier fehlt im JavaFX-Bereich bislang die Unterstützung von Web, die die Technologie zu einem bisher nicht dagewesenen, vollständigen Cross-Plattform-Ansatz machen würde. Die hier vorgestellte Technologie mit dem Namen „jpro" ermöglicht es, ohne nötiges Java-Plug-in JavaFX-Anwendungen im Browser auszuführen. Dazu führt jpro JavaFX auf dem Server aus und bildet den Scene Graph direkt im Browser mittels HTML5-DOM ab.
Tobias Bley von jpro technologies AG zeigt, wie moderne Webentwicklung auf Basis von Java, JavaFX und jpro aussehen kann und demonstriert die Power dieses Ansatzes an vielen Beispielen, wie der Desktopapplikation „SceneBuilder“ (einer echten DJ-Software, die im Browser läuft) sowie einer typischen Businessapplikation mittels WildFly REST Backend und Web-User-Interface in JavaFX. Man lernt, wie einfach es ist, eine bestehende JavaFX-Anwendung unter Verwendung von Java 8 und Multi-Threading per jpro-Gradle-Task als HTML5-Web-App in den Browser zu deployen.
React ist eine Open-Source-JavaScript-Bibliothek, mit der sich Single-Page-Anwendungen für das Web entwickeln lassen. In diesem Workshop gebe ich Ihnen anhand eines durchgehenden Beispiels eine Einführung in diese Bibliothek. Dazu werden wir uns als Erstes ansehen, wie Sie mit React einfache wiederverwendbare Komponenten entwickeln können. Dabei werfen wir einen Blick auf die neuen ECMAScript-2015-Sprachfeatures, die für das Arbeiten mit React relevant sind. Aus den Komponenten stellen wir dann eine ganze Anwendung zusammen, für die wir schließlich mit dem React Router auch clientseitiges Routing implementieren. Natürlich werden Sie auch lernen, wie Sie die Anwendung testen und dafür einen Entwicklungsprozess (mit webpack) aufsetzen können.
To make the complex, distributed and highly interconnected system landscapes of today robust, responsive and highly available, we need to implement resilience into them at application level. Many patterns for implementing resilience into an application exist. The daunting questions are how to slice (design) an application and which patterns to pick and combine in order to match your specific needs best.
In the first part of this tutorial we will get an overview about the resilience pattern landscape, which patterns exist, how to organize and select them and how to design resilient applications.
In the second part of this tutorial you will have the opportunity to apply the just learned contents to a real-life case study and design and discuss your own resilient solution.
After this session, you will have a much deeper understanding how to design a solution that satisfies your specific robustness needs.
Dieser Workshop ist leider schon ausgebucht.
In diesem Workshop werden wir eine kleine, aber vollständige Webapplikation entwickeln. Der Client basiert auf Angular 2, TypeScript und ein wenig Bootstrap. Der Server basiert auf Spring Boot, verwenden werden wir außerdem Spring Data/REST/HATEOAS. Wir werden also RESTful Web Services entwickeln, die um Hypermedia angereichert sind. Dabei wird Kai Tödter die Grundlagen von Spring Boot und den verwendeten Frameworks erklären und auch die generellen Prinzipien von REST und HATEOAS (Hypermedia as the Engine of Application State, ein wichtiges REST-Architekturprinzip). Für die Cliententwicklung gibt Kai eine Einführung in Angular 2, TypeScript und die gängigen JavaScript-Entwicklungstools wie npm, Jasmine, webpack etc.
Freitag, 12.05.2017:
Vertikale Architektur ist ein Architektur- und Organisationsmuster für große Teams. Es überträgt das Prinzip der losen Kopplung auf Entwicklungsteams, indem Organisation und Softwarearchitektur Hand in Hand „vertikalisiert“ werden. Organisatorische Vertikalisierung bedeutet das Schneiden unabhängiger Teams, die für einen klar abgrenzbaren Aspekt der fachlichen Domäne verantwortlich sind. Architektonische Vertikalisierung schafft die technische Basis für unabhängige Teams und sorgt z.B. dafür, dass Teams eigenständig deployen können.
In diesem Workshop erarbeiten wir die Grundlagen agiler Architekturen auf Basis vertikaler Teams. Der Workshop besteht aus zwei Teilen, einem theoretischen und einem praktischen.
Hintergrundinformationen
Im Block Hintergrundinformationen führen wir den Begriff der vertikalen Architektur in einem Impulsvortrag ein. Wir berichten von unseren Praxiserfahrungen bei XING, Otto und der Post und stellen Lösungen vor, die wir in der Praxis erprobt haben.
Praxisblock Planspiel
Der folgende Praxisblock besteht aus einem Planspiel, in dem wir ein gemeinsames Bild der bestehenden Hindernisse und Abhängigkeiten in Bezug auf die Einführung einer agilen Architektur in Ihrem Unternehmen erarbeiten. Hindernisse sind z.B. unzureichende Hardware oder vorgeschriebene Programmiersprachen. Beispiele für Abhängigkeiten sind eine zentrale QA-Abteilung, von anderen Abteilungen entwickelte Softwarekomponenten oder extrem langsame Bereitstellung von Infrastrukturkomponenten für Entwicklungsteams.
In diesem Hands-on-Workshop greifen wir gemeinsam eine Trainingswebanwendung an, um Schritt für Schritt die Rolle eines Pentesters einzunehmen. Sie lernen anhand zahlreicher Praxisübungen den Umgang mit professionellen Securitywerkzeugen 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, die Sie im Rahmen Ihrer eigenen Softwareentwicklung umsetzen können, um die Sicherheit Ihrer Projekte nachhaltig zu erhöhen.