Für lange Zeit entstanden APIs überwiegend als Erweiterung bereits existierender Systeme. Immer mehr Unternehmen setzen zur Implementierung von APIs jedoch inzwischen auf den API-First Ansatz. Bei diesem Ansatz besteht der erste Schritt im Entwurf der API. Dabei wird angenommen, dass keine existierenden Systeme und Einschränkungen bestehen. Stattdessen liegt der Fokus ausschließlich darauf, wie die API geschaffen sein muss, damit sie gut funktioniert, leicht zu integrieren ist und einen echten Mehrwert bietet - und das potentiell für ganz unterschiedliche Clients und Endgeräte. Der API-Entwurf wird anschließend mithilfe geeigneter Werkzeuge in eine erste Implementierung überführt, dokumentiert und getestet. Erst im letzten Schritt werden datenliefernde oder konsumierende Systeme erstellt. Bereits existierende Systeme werden an die API angepasst, nicht umgekehrt. Auf diese Weise entstehen APIs, die in Multi-Channel-Szenarien jeden Kanal optimal unterstützen und nicht zuletzt auch konsistente Schnittstellen. Dieser Workshop diskutiert den API First-Ansatz im Detail und stellt Tools und Technologien vor, die bei der Umsetzung hilfreich sein können.
Die gute Nachricht vorweg: Einen einzelnen Microservice zu implementieren ist dank Bounded Context, loser Kopplung und klar definierter Kommunikationsschnittstellen denkbar einfach. Nur leider macht ein Frühling noch keinen Sommer und ein einzelner Microservice noch lange keine sinnvolle Anwendung aus! Um am Ende nicht im Chaos zu versinken, benötigt auch eine Microservices-basierte Anwendung eine Architektur und die Verwendung von Patterns. Wie zum Beispiel stellt man die Evolution von Schnittstellen sicher? Oder wie soll die UI eingebunden werden? Welche Aufgaben übernimmt ein API Gateway und wird es überhaupt benötigt? Sollten Microservices synchron oder asynchron kommunizieren? Oder gar beides? Fragen über Fragen, deren Klärung über Erfolg oder Misserfolg der eigenen Anwendung entscheiden kann. Der Workshop gibt einen Einblick in die verschiedenen Herausforderungen bei der Umsetzung einer Microservices-basierten Anwendung und diskutiert verschiedene Lösungsansätze, Patterns und Best Practices. Ein optimaler Einstieg in den Microservices Summit.
Microservices lösen viele Probleme in der Software-Entwicklung. Aber die große Anzahl an Services macht das Deployment wesentlich aufwändiger. Dieses Tutorial zeigt die Herausforderungen rund um Deployment und die Continuous-Delivery-Pipeline für Microservices auf und mögliche Lösungen, um Microservices mit wenig Risiko zu deployen und zu testen. Neben konkreten Technologien zeigt das Tutorial auch Lösungen auf der Ebene von Architektur und Organisation.
CQRS (Command Query Responsibility Segregation) als Architekturpattern sieht vor, dass lesende (Queries) und schreibende Zugriffe (Commands) in getrennten Subsystemen auf unterschiedlichen Domänenmodellen realisiert werden. Während Commands meist asynchron und transaktional angestoßen werden, arbeiten Queries mit denormalisierten Views auf „eventual consistent”-Daten. Ziel ist eine hoch skalierbare, hoch performante und sichere Plattform. Was sich zunächst einmal nach zusätzlichem Aufwand anhört, bringt in der Praxis eine Menge Vorteile mit sich. Der Workshop zeigt die wesentlichen Ideen von CQRS auf und demonstriert anhand eines praktischen Beispiels die Vorteile dieses Ansatzes im Kontext von Web-APIs.
Web APIs erfreuen sich seit geraumer Zeit großer Beliebtheit, bieten sie doch eine scheinbar perfekte Lösung zur Systemintegration. Jedoch gibt es auch einige Herausforderungen und Fallstricke, die unbedingt bedacht werden sollten. So führen Web APIs zu einer recht engen Kopplung, weshalb u.a. eine Strategie für den Umgang mit temporär nicht verfügbaren Kommunikationspartnern benötigt wird. Weitere Aspekte sind die Unzuverlässigkeit des Netzwerkes, die Behandlung von Fehlerfällen, die Wiederholbarkeit von Requests oder auch die Tatsache, dass SSL in manchen Produktivumgebungen keine ausreichende Sicherheit bietet. Dieser Workshop diskutiert die wichtigsten Herausforderungen von Web APIs und zeigt Wege auf, wie diese zu meistern sind. Dabei werden sowohl die Seite des API-Betreibers, als auch die des API-Clients betrachtet.
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 das kann uns natürlich nicht stoppen…
Jede Cloud hat ihre Superstars. Bei Azure ist einer davon Azure App Service. Dieser PaaS Dienst hält sich seit Jahren in der Liste der beliebtesten Services, die Microsoft in der Public Cloud anbietet. In den letzten Monaten wurden die App Services immer mehr in Richtung Microservices getrimmt: Docker-Unterstützung kam dazu, Serverless Functions stehen zur Verfügung, ein Application Gateway wurde ergänzt und vieles mehr. In diesem Workshop zeigt Rainer Stropek, langjähriger Azure MVP und MS Regional Director, was Azure App Service für Microservice-Entwicklung bereithält. Nach einem Überblick über die gebotenen Funktionen zeigt Rainer viele Beispiele für Windows und Linux (Docker) sowie .NET und Node.js. Natürlich geht Rainer auch auf aktuelle Entwicklungen wie beispielsweise Durable Functions ein. Diese Session ist genau das richtige für Entwicklungsteams, die überlegen, Microservices in Azure zu betreiben und dabei den Administrationsaufwand durch PaaS und Serverless auf ein Minimum reduzieren wollen.
Verteilte Systeme, Orchestrierung von Microservices und die Verwendung von Web-APIs stellen uns hinsichtlich Authentifizierung und Autorisierung vor neue Herausforderungen. Schließlich können sich die Nutzer nicht an allen Systemen manuell anmelden und eine gemeinsame Session über Systemgrenzen hinweg ist auch mit nicht wenig Aufwand realisierbar. OAuth2, OpenID Connect und JSON-Web-Token (JWT) helfen uns in diesen Architekturen, die Auth*-Themen zu bewältigen. Wir schauen uns diese Prinzipien in Theorie und Praxis an und diskutieren an praktischen Beispielen, wie sich Benutzer und Systeme sicher in diesen Umgebungen bewegen können.
Es vergeht kaum eine Woche, ohne dass ein erfolgreicher Angriff gegen eine bekannte Website oder Applikation bekannt wird. Das liegt nicht nur daran, dass alte Verwundbarkeiten immer noch existieren, sondern dass es auch neue und verbesserte Methoden gibt, einer Webanwendung zu schaden.
In diesem Vortrag werfen wir einen Blick auf zahlreiche Vorfälle, sowohl aktueller Natur als auch Klassiker aus der Vergangenheit. Ganz nebenbei sprechen wir so über die relevantesten Angriffe - und natürlich Gegenmaßnahmen.
Häufig steht im Fokus unserer Services das zur Verfügung stellen von Daten aus bestehenden relationalen Datenbanken. Diese Session befasst sich mit den Vor- und Nachteilen bestehender High Level Technologien wie OData und GraphQL sowie mit Best Practices im Umgang mit individuell entwickelten datenzentrierten Services. Lernen Sie wie sie das EntityFramework einsetzen können um durch flexible Filter, Paging und Streaming der Ergebnisse schnellere Reaktionszeiten zu bekommen. Ist eine API darauf angewiesen große Datenmengen zu übertragen, können schlechte Bandbreite und hohe Latenz schnell einen Strich durch die Rechnung machen. Die im GigaBit Netzwerk so performant laufende Anwendung wirkt via VPN oder schwache WLAN-Verbindung häufig träge und langsam. In diesem Workshop sehen Sie anhand eines Praxisbeispiels wie Sie Ihre Services effizient auf große Datenmengen hin optimieren können. Raphael zeigt in diesem Workshop einige Beispiele mit .NET. Der Großteil des Workshops behandelt jedoch plattformunabhängige Standards und Konzepte, die auf viele Technologien anwendbar sind.
Das Thema Docker ist mehr als nur ein Hype. Viele Firmen setzen die Technik für Applikationscontainer schon ein. Sie ändern sogar große Teile ihrer Infrastruktur, um dem neuen Paradigma gerecht zu werden. Der Workshop gibt einen Überblick und Einstieg in Docker. Die Teilnehmer lernen die Grundlagen und wichtigsten Kommandos für Docker kennen und bauen auch eigene Images. Es werden die Prinzipien und der Paradigmenwechsel, den Docker initiiert, an praktischen Beispielen vermittelt.
Mit Microservices wird versucht, eine Anwendung in möglichst kleine, unabhängige Teile zu schneiden, die dann miteinander kommunizieren. Diese Idee bringt einige Vorteile mit sich. Wie bekommt man es aber hin, dass dabei die Fachlichkeit nicht zerpflückt wird und so der Blick für das große Ganze verloren geht? Wie schneide ich die Services richtig? Und worauf muss bei der Kommunikation der Services untereinander geachtet werden? Der Workshop zeigt, wie Domain-Driven Design dabei helfen kann, diese Fragen sinnvoll zu beantworten und was es sonst noch zu beachten gilt.
In diesem Workshop widmen wir uns der Client-Seite von Web APIs. Rainer Stropek bespricht anhand von Beispielen wichtige Entwicklungen im Bereich von Web-Technologie, die das Konsumieren von Web APIs im Browser und in Node.js deutlich vereinfachen. Rainer zeigt in dem Workshop unter anderem die fetch-API, Promises in Verbindung mit async/await (ECMAScript und TypeScript), typsicheres Arbeiten mit TypeScript sowie den Einsatz von Web APIs in Angular. Bei dem Workshop werden Grundkenntnisse über HTML und JavaScript vorausgesetzt. Er ist ideal für Personen, die sich schon länger nicht damit auseinandergesetzt haben, wie man in modernen JavaScript-Anwendungen Web APIs konsumiert und die ihr Wissen auf den aktuellen Stand bringen möchten.
Sind die Services in (Docker) Container verpackt? Gilt es noch die große Anzahl an Containern zu orchestieren? Docker selbst liefert hierzu passende Tools. Dieser Workshop zeigt wie mit docker-compose ein Service bestehend aus mehreren Containern verwaltet werden kann. Auch wird ein Docker Swarm (Mode) Cluster aufgebaut um dort den Service hochverfügbar und leicht skalierbar zur Verfügung zu stellen. Zum Abschluss werden wir im Cluster noch ein zentrales Monitoring mit Prometheus und ein zentrales Logging mit Elastic ausrollen. Nach diesem Workshop sind die Grundlagen für die Orchestrierung der eigenen Services gelegt.
Mittlerweile hat es sich bei den meisten herumgesprochen, dass man Verfügbarkeit und Robustheit von Anwendungen nicht mehr einfach zum Problem des Betriebs erklären kann, sondern dass man dafür auch etwas auf Entwicklungsseite tun muss - dass man die Anwendungen "resilient" gestalten muss. Aber was ist das genau und warum muss ich mich darum kümmern? Reicht es dafür, einfach eine Bibliothek wie Hystrix oder ein Framework wie Akka einzubauen und alles wird gut? Oder muss ich da als Entwickler oder Architekt noch mehr machen? Und wenn ja, worauf muss ich achten? Wie fange ich an? Gibt es etablierte Muster? All diese Fragen (und noch mehr) greift dieses Tutorial auf. Die behandelten Kernthemen sind:
Neben einem kompakten Überblick über das Themengebiet mit vielen konkreten Tipps für die Praxis gibt es natürlich genug Zeit für Ihre konkreten Fragen und Diskussionen.
Ein Micoservice 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. Soweit 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 die 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 Status Codes? Macht es Sinn für unterschiedliche Channel 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 Schritte neue Anforderungen einführen und dafür passende praxisnahe Lösungen entwickeln.
Klassisches API-Design geht immer davon aus, dass es einen Request gibt, der eine unmittelbare Response zur Folge hat. Was aber, wenn dieses Modell nicht ausreicht? Was ist, wenn die Verarbeitung der Daten zu lange dauert, um auf sie zu warten? Wie kann man mit der Situation umgehen, dass der Server dem Client Daten zur Verfügung stellen muss ohne, dass es einen Request vom Client gibt? Wie müssen APIs gestaltet werden, wenn die Anforderungen asynchroner Natur sind? In dem Workshop werden solche Szenarien diskutiert und passende Technologien wie Long-Polling, Piggyback, Server-Sent-Events, Websockets und serverseitiges Messaging wie JMS vorgestellt. In praktischen Übungen werden Lösungen in einem Java-Backend realisiert. Dabei wird auf klassische Problemstellungen wie API-Design und –Versioning und Authentication eingegangen. Den Teilnehmer erwarten die theoretischen Grundlagen besagter Technologien in Kombination mit praktischen Umsetzungsbeispielen.
Erleben Sie im Speaker Panel spannende Diskussionen zwischen den Trainern, die einen tiefen Blick hinter die Kulissen der API- und Microservices-Welt geben. Nutzen Sie auch die Möglichkeit in lockerer Atmosphäre ihre offenen Fragen des Tages zu stellen und mit den Trainern ihre Erfahrungen auszutauschen. Das sollten Sie nicht verpassen!
Moderation: Rainer Stropek, Christian Weyer und Lars Röwekamp
Microservices sind ein Softwarearchitektur- und Organisationsansatz, um das Deployment von neuen Software-Releases zu beschleunigen, Innovationen voranzutreiben und die Wartbarkeit und Skalierbarkeit von Software zu erhöhen. Eines der wichtigsten Konzepte von Microservice-Architekturen ist es, die einzelnen Bestandteile einer Software in kleine unabhängige Services aufzuteilen, die miteinander über APIs kommunizieren. In diesem Workshop werden unterschiedliche Ansätze - von EC2-Instanzen über Docker Container bis hin zu Serverless Architecture - betrachtet, um Microservices in der AWS-Cloud auszurollen. Über die Einführung in die notwendigen Infrastruktur-Bausteine hinaus werden auch Best Practices bei der Softwarearchitektur der Microservices gezeigt. Weiterhin wird demonstriert, wie Microservice-Architekturen in AWS betrieben werden können und welche Hilfsmittel für den Betrieb sowie die Fehlersuche existieren.
Dieser Workshop vermittelt grundlegende Kenntnisse über Performance Monitoring und Log Management. Praxisnah werden wir in die Lage versetzt Architektur, Vorgehensweise, Metriken und Tools für die eigene Anwendungsumgebung zu bewerten. Der Betrieb geschäftskritischer Anwendung erfordert stetiges überwachen der Anwendungen - Warum? Häufig ist zu dem Zeitpunkt, wenn der Anwender Fehlfunktionen oder Leistungseinbrüche bemerkt der Image-Schaden bereits entstanden. Stets verfügbare Anwendungen populärer Internetdienste haben die Erwartungshaltung der Anwender stark verändert - Hochverfügbarkeit wird als selbstverständlich angesehen. Deshalb sollten Fehler und Leistungseinschränkungen schnellstens erkannt und behoben werden. Neben einer skalierbaren Microservice-Architektur z.B. mit Fail-Safe Strategien spielt das zentrale Log Management und kontinuierliches Application Performance Monitoring eine wesentliche Rolle für den erfolgreichen Betrieb von Microservices. Die Vielfalt der notwendigen Tools zur Datensammlung Indizierung, Aggregation, Visualisierung und Alarmierung ist groß. Entsprechend vielfältig sind auch die benötigten Kenntnisse für die Einführung von Log Management & Monitoring Lösungen. Wir lernen bewährte Verfahrensweisen kennen und eine Einordnung populärer Tools wie z.B: Elastic Stack, Grafana etc. vornehmen. Anschließend werden mit praktischen Beispielen die Unterschiede zwischen „Availability Monitoring“, „Infrastruktur-Monitoring“ und „Application Performance Monitoring“ erläutert. Zur effektiven Analyse von Logs & Metriken müssen diese strukturiert, zuverlässig übertragen und gespeichert werden. Deshalb werden wir auch Architekturen für das zentralisierte Log Management & Monitoring betrachten.
FullStack JavaScript: Die Zeiten, in denen JavaScript nur auf dem Client eingesetzt wurde, ist vorbei! Netflix, PayPal oder sogar die NASA machen es vor: JavaScript auf dem Server mit Node.js. Und dabei nutzen sie die Vorteile von Node.js: Asynchronität und Performance machen Echtzeitanforderungen zum Kinderspiel - bei einem kleinen Server-Footprint und hoher Skalierbarkeit. Das macht Node.js zu einem echten Arbeitstier auf dem Server. Gemeinsam mit Ihnen werfen Sven Kölpin und Manuel Rauber einen Blick auf die neue Welt und zeigen, wie man mit Node.js moderne Web APIs entwickeln kann. Als Grundlage für Ihre "Next Generation" Web API werden Themen wie Absicherung von Web APIs, Datenbankanbindung und die Bereitstellung einer Single-Page Application anhand eines praktischen Hands-On-Beispiels erörtert.
Web-APIs sind das aktuelle Trend-Thema in den IT-Abteilungen. Als primärer Kommunikationspartner für Fat, Mobil und Web-Clients sind Web-APIs das Rückgrat moderner verteilter Anwendungen. Sind synchrone Requests via REST und GraphQL oder Push-Notifications via Server-Sent Events und WebSocket die bessere Wahl? Welches Austauschformat sollte man wählen? Wie sieht gutes „Error Handling“ aus? Und was ist mit Themen wie Security und Versionierung? Der Workshop bietet lebensnahe Beispiele, jede Menge Best Practices und am Ende des Tages die Erkenntnis das REST nur der Anfang ist.
Funktionale Programmiersprachen unterstützen uns bei der Entwicklung von komplexen Systemen durch mehrere Eigenschaften. Unter anderem bieten sie uns eine genaue Kontrolle des Zustandes der Anwendung und eine Beschränkung der Nebenwirkungen an. Bei der Einführung einer funktionalen Sprache zu Beginn der Entwicklungsphase wird eine Frage sehr oft gestellt: Wie sollen wir unsere neue Anwendung strukturieren? Dieser Workshop vermittelt einen Ansatz einer Architektur funktionaler Microservices. Wir werden das Rad nicht neu erfinden. Stattdessen werden wir erprobte architektonische Lösungen an die funktionale Welt anpassen. Mit Hilfe der "Hexagonal Architecture" werden wir die Zuständigkeiten in unserer Clojure Anwendung klar trennen. Unseren funktionalen und Nebenwirkungs-freien Kern, der von anderen Teilen des Systems unabhängig ist, werden wir gründlich mit Property-based Testing prüfen.
Many organization think about applying DevOps principles in their organization without knowing what DevOps is, what it requires from the employees, what value it will bring and how to start a DevOps journey. Others already started their journey but face some misunderstanding in the teams, some challenges how to change behavior or some problems with business awareness. For those organizations and many others, we now have “The Phoenix Project” based on the book by Gene Kim. This session will let you experience DevOps in a real case experience using a serious business simulation. It will also show you how simulations can help you to understand theory better and transfer it to day to day work environment faster. Adding simulations to your training programs will increase the Return on Investment and will solve your day to day problems quicker and better. This simulation is also part of the DevOps Master program of EXIN. It will help students develop the required competences to gain the DevOps Master certification, which conforms to the internationally recognized European e-Competence Framework.
In this workshop, you will learn about the basics of containers and container management with Kubernetes. Google Cloud follows the approach of the "open" cloud and therefore relies on the support of established open source technologies. From the experience with container and resource management of over 10 years, the container management tool Kubernetes has emerged. It has gained great popularity in many companies and has grown to one of the most active open source projects on GitHub. You will learn how to containerize your microservice and all the building blocks Kubernetes provides to manage that container in production.
FullStack JavaScript: Die Zeiten, in denen JavaScript nur auf dem Client eingesetzt wurde, ist vorbei! Netflix, PayPal oder sogar die NASA machen es vor: JavaScript auf dem Server mit Node.js. Und dabei nutzen sie die Vorteile von Node.js: Asynchronität und Performance machen Echtzeitanforderungen zum Kinderspiel - bei einem kleinen Server-Footprint und hoher Skalierbarkeit. Das macht Node.js zu einem echten Arbeitstier auf dem Server. Gemeinsam mit Ihnen werfen Sven Kölpin und Manuel Rauber einen Blick auf die neue Welt und zeigen, wie man mit Node.js moderne Web APIs entwickeln kann. Als Grundlage für Ihre "Next Generation" Web API werden Themen wie Absicherung von Web APIs, Datenbankanbindung und die Bereitstellung einer Single-Page Application anhand eines praktischen Hands-On-Beispiels erörtert.