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.
Als Nutzer wollte man eigentlich nur eins: endlich keine hundert verschiedene Passwörter mehr und trotzdem sichere Authentifizierung. Als Entwickler wollte man keine eigenen proprietären Authentifizierungsverfahren immer wieder aufs Neue entwickeln. Genau aus diese beiden Wünschen heraus sind OpenID Connect und OAuth, heute die wichtigste Industriestandards wenn es um Authentifizierung- und Autorisierungsprozesse geht, entstanden. In diesem Workshop mit Anton Kalcik und Daniel Wagner wird das Wissen um diese beiden Protokolle anhand praktischer Beispiele vermittelt. Anhand von live gezeigten Beispielen analysieren wir die beiden Protokolle, debuggen den Fluss beim Authentifizieren und Autorisierung, sehen uns die erstellten Token an, und vieles mehr. Bei diesem Workshop konzentrieren wir uns auf OpenID Connect als plattform- und technologieunabhängiges Protokoll. Zusätzlich gibt es hilfreiche Tipps, was bei Projekten zu beachten ist und welche kritischen Erfolgsfaktoren es neben der Technik noch gibt.
Microservices und Docker-Container sind gemeinsam ein echtes Dreamteam. Dieser Workshop ist für Personen, die zwar schon von Docker gehört haben, aber noch keine Gelegenheit hatten, sich fundiert mit den Grundlagen zu beschäftigen. Rainer Stropek zeigt Ihnen, wie Docker grundsätzlich funktioniert. Sie lernen, Container und Images mit der Docker CLI zu verwalten. Anhand vieler Beispiele zeigt Ihnen Rainer, wie Sie Dockerfiles verwenden, um Images automatisiert zu erstellen. Natürlich werfen wir im Workshop auch einen genauen Blick auf den Docker Hub und publizieren eigene Images mit automatisiertem Build in Verbindung mit GitHub. Der Schwerpunkt des Workshops sind Linux-Container. Windows-Container werden anhand eines kleinen Beispiels gestreift.
Bei der Entwicklung eines APIs sollte Qualitätsmerkmalen wie Verständlichkeit, Benutzbarkeit und Konsistenz besondere Beachtung geschenkt werden. Dies gilt im Besonderen für APIs, die öffentlich zur Verfügung gestellt werden oder die potenziell von vielen unterschiedlichen Clients angesprochen werden. Ein gutes API-Design stellt sich jedoch nicht von alleine ein. Es sind viele Entscheidungen zu treffen und eine Portion Erfahrung im Schnittstellenentwurf kann gewiss nicht schaden. In diesem Workshop werfen wir einen Blick auf typische Fragestellungen beim Entwurf HTTP-basierter APIs wie URL-Patterns, Filterung, Pagination oder Sortierung. Wir diskutieren Styleguides und JSON-Formate und beleuchten die Frage, wann und wo der Einsatz von Hypermedia sinnvoll ist.
Im Domain-driven Design dreht sich vieles um die direkte Zusammenarbeit zwischen fachlichen Experten und Entwickler(inne)n. Jedoch gestaltet sich diese Kollaboration in der Praxis häufig schwieriger als sie initial auf dem Papier erscheint. Die technischen Mitarbeiter(innen) werfen zu schnell mit UML und Fachbegriffen um sich und/oder die Fachbereiche schieben die Verantwortung an Designentscheidungen für ihre (meist digitalen) Produkte mit dem Satz „das ist IT, darum sollen die sich kümmern“ von sich weg.
Im Laufe der Zeit haben sich jedoch inner- und außerhalb der Domain-driven-Design-Community einige Methoden entwickelt, die genau diese Zusammenarbeit vereinfachen sollen und um genau diese Methoden dreht sich der Workshop. Ziel ist es, Ihnen in den drei zur Verfügung stehenden Stunden einen Überblick über Methoden wie Domain Storytelling, Event Storming, User Story Mapping und Example Mapping (aus dem Behavior-driven Development) zu geben. Selbstredend hat der Workshop nicht den Anspruch, jede der Methoden im Detail vorzustellen. Es geht primär um die Vermittlung eines Überblicks und um die Eignung bzw. die Vor- und Nachteile dieser Ansätze.
Die Nutzung von Cloud Services zum Betrieb der eigenen Anwendungen findet immer mehr Verbreitung. Die Zahl der Anbieter mit einem wettbewerbsfähigen Angebot ist in den vergangenen Jahren deutlich gestiegen. Dieser Workshop widmet sich der Google Cloud Platform, die bisher in der allgemeinen Wahrnehmung oft ein Schattendasein geführt hat.
Er wird mit einem Überblick starten und sich dann auf einige Services konzentrieren, die wir für besonders interessant halten. So ist die Kubernetes-Integration wohl am weitesten von allen großen Cloud-Anbietern fortgeschritten. Ebenso gibt es eine Reihe interessanter Lösungen für die Speicherung und Analyse von Daten. Auch ein Blick auf die Entwicklungsunterstützung wird nicht fehlen. Es werden dabei verschiedene einfache Beispiele genutzt, die Schritt für Schritt weitere Services nutzen und dabei immer mehr Funktionalität zeigen.
Der Workshop ist sowohl für Teilnehmer interessant, die bereits andere Cloud-Anbieter nutzen und sich Alternativen ansehen wollen, als auch für Teilnehmer, die bisher noch keine intensiven Erfahrungen mit Cloud-Anbietern gesammelt haben und einfach nur wissen wollen, wie sich diese Cloud eigentlich anfühlt.
Microservices-basierte Architekturen auf der grünen Wiese zu 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!
Wir arbeiten uns seit gut fünfzig Jahren an gutem (Fach-)Design ab und wir haben das Problem bei Weitem nicht gelöst. Während in der Vergangenheit ein schlechtes Design aber nur eine schlecht wartbare Codebasis zur Folge hatte, sind die Konsequenzen heutzutage wesentlich kritischer. In Zeiten von Microservices, Cloud-native, API first und mehr bedeutet ein schlechtes Design auch fragile, langsame und kaum skalierbare Systeme zur Laufzeit, die Benutzer und Entwickler, die die angebotenen APIs nutzen, verärgern - bis hin zu einem Level, das das gesamte Unternehmen gefährden kann.
Daher benötigen wir gutes fachliches Design dringender denn je. Doch leichter gesagt als getan! Was ist gutes Desig" und können wir es erzeugen?
Derzeit wird Domain-driven Design (DDD) gerne als die neue Patentlösung angepriesen, aber die eigentlichen Herausforderungen sind zumindest basierend auf meinen Erfahrungen deutlich grundlegender. Deshalb werden wir uns im ersten Teil dieses Workshops zuerst ansehen, wie fachliches Design die Eigenschaften eines Systems beeinflusst. Danach werden wir uns einige zeitlose Grundlagen guten Designs aus den letzten fünfzig Jahren Informatik ansehen. Diese werden wir behutsam auf unsere Problemstellung aktualisieren und die daraus gewonnenen Konzepte auf unsere heutigen Herausforderungen anwenden. Letztlich werden wir uns die Trade-offs unseres Ansatzes ansehen und wie wir damit umgehen können.
Im zweiten Teil des Workshops werden wir diesen Ansatz auf das Design von APIs ausweiten - wiederum zeitlose Grundlagen ansehen, diese behutsam aktualisieren, auf unsere Herausforderungen anwenden und letztlich die Trade-offs diskutieren. Das alles werden wir sowohl auf einer konzeptionellen Ebene als auch anhand eines konkreten Beispiels diskutieren.
Nach dem Vortrag habt Ihr - so meine Hoffnung ... - ein besseres Verständnis davon, wie man moderne (nicht nur) Service-basierte Systeme entwirft, die sowohl in Entwicklung als auch in Produktion langfristig erfolgreich sind.
Microservices versprechen vieles - ein zentraler Vorteil ist die langfristige Adaptionsfähigkeit der technologischen und fachlichen Basis. In großen Vorhaben und Produkten mit langer Lebensdauer ist dieses Versprechen besonders attraktiv, allerdings gehört zu einer erfolgreichen Umsetzung mehr als die technische Adaption der richtigen Frameworks. In diesem Workshop wird deshalb der methodische/organisaorische Teil beleuchtet - häufig subsummiert unter dem Begriff der evolutionären Architektur.
Evolutionäre Architektur bemüht sich stetig um notwendige Änderungen und beteiligt möglichst viele Entwickler an der Weiterentwicklung der Architektur. Dabei werden Konzepte und Technologien lokal und unabhängig getestet, bevor sie entweder verworfen werden, lokal als Optimierung bestehen bleiben oder als breiter anwendbares Konzept in die Landschaft wachsen. Dieser Workshop zeigt die vier zentralen Säulen dieser Idee und liefert praktische Details.
APIs sind heutzutage der Kern von modernen Anwendungen. Wenn sie gut designt sind, können mit ihnen ohne großen Mehraufwand neue Geschäftsfelder erschlossen und neue oder geänderte Dienstleistungen angeboten werden.
Zudem werden immer mehr Systeme als Microservices-Architekturen aufgebaut, wodurch der Stellenwert auch von guten internen APIs wächst.
Je mehr Nutzer ein API hat und je weniger der Anbieter eines APIs seine Consumer kennt, um so wichtiger wird es, leicht verständliche und leicht zu verwendende APIs anzubieten, die auch sinnvoll weiterentwickelt werden können. Wie müssen sich Clients verhalten, damit sie die Schnittstelle auch bei Weiterentwicklung reibungslos verwenden können? Ansätze wie API First und Consumer-driven Contracts versuchen, diesen Anforderungen gerecht zu werden. Diese werden in dem Workshop an praktischen Beispielen vorgestellt. Zudem wird gezeigt, wie eine Schnittstelle abwärtskompatibel weiterentwickelt werden kann, ohne sich in der Versionierungshölle zu verlieren.
Die Nutzung von Cloud Services zum Betrieb der eigenen Anwendungen findet immer mehr Verbreitung. Die Zahl der Anbieter mit einem wettbewerbsfähigen Angebot ist in den vergangenen Jahren deutlich gestiegen. Dieser Workshop widmet sich der Google Cloud Platform, die in der allgemeinen Wahrnehmung bisher oft ein Schattendasein geführt hat.
Er wird mit einem Überblick starten und sich dann auf einige Services konzentrieren, die wir für besonders interessant halten. So ist die Kubernetes-Integration wohl am weitesten von allen großen Cloud-Anbietern fortgeschritten. Ebenso gibt es eine Reihe interessanter Lösungen für die Speicherung und Analyse von Daten. Auch ein Blick auf die Entwicklungsunterstützung wird nicht fehlen. Dabei werden verschiedene einfache Beispiele genutzt, die Schritt für Schritt weitere Services nutzen und dabei immer mehr Funktionalität zeigen.
Der Workshop ist sowohl für Teilnehmer interessant, die bereits andere Cloud-Anbieter nutzen und sich Alternativen ansehen wollen, als auch für Teilnehmer, die bisher noch keine intensiven Erfahrungen mit Cloud-Anbietern gesammelt haben und einfach nur wissen wollen, wie sich diese Cloud eigentlich anfühlt.
Im Domain-driven Design ist es sehr wichtig, ein gutes Domänenmodell zu haben. Allerdings wird nirgendwo so wirklich erklärt, wie man ein gutes Domänenmodell unter Mitwirkung aller Beteiligten erstellen kann.
Hier schafft Event Storming Abhilfe. Mit Hilfe dieser Technik kann man ein gutes Domänenmodell Schritt für Schritt erstellen, erweitern und verfeinern - und das innerhalb eines einzigen Tages! Gleichzeitig wird noch jede Menge Domänenwissen zwischen den Domänenexperten und den restlichen Projektbeteiligten ausgetauscht.
Beim Modellieren lassen sich sehr einfach und schnell verschiedene Szenarien ausprobieren, man kann mehrere Varianten gegeneinanderstellen und vergleichen, um so die beste Lösung zu finden - und das ganz ohne eine Zeile Code zu schreiben. Trotzdem sind die Modelle sehr nah am Code und an der Logik. Dabei werden keine langweiligen UML-Diagramme gezeichnet, sondern es wird mit Post-it's an einer großen Modellierungsfläche gearbeitet, sodass alle involviert sind.
In diesem Workshop werden wir uns anhand einer vorgegebenen Domäne damit beschäftigen, ein solch präzises Domänenmodell in mehreren Stufen zu entwickeln und zu verstehen. Freut Euch auf ein actionreiches Abenteuer.
Die Teilnehmer*innen erhalten hier die Möglichkeit alle Fragen zu stellen, die sie zum Thema Domain-driven Design haben. Inhaltliche Schwerpunkte zur Thematik sind:
- Kulturelle Aspekte
- Etablierung von DDD in Unternehmen und Teams
- Strategic Design
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.
GraphQL ist eine Abfragesprache und wird u. a. von Facebook, GitHub und Shopify als Alternative zu RESTful Web Services eingesetzt.
Was ist GraphQL eigentlich? Welche Probleme will es lösen? Welche Vorteile ergeben sich durch dessen Verwendung? Wie implementiert man ein GraphQL-Backend? Fragen über Fragen, die wir in diesem Workshop klären werden.
Wir entwickeln gemeinsam ein GraphQL-Backend auf Basis von Node.js (unter Verwendung entsprechender Libraries) und beschäftigen uns mit dessen zentralen Bestandteilen wie dem Schema und Resolvers. Wir wollen aber auch auf mögliche (Performance-)Probleme und mögliche Lösungsansätze eingehen.
Dieser Workshop setzt keine GraphQL-Kenntnisse voraus und richtet sich an GraphQL-Einsteiger. Basis Node.js und JavaScript / TypeScript-Kenntnisse sollten vorhanden sein.
In diesem Workshop werden wir uns mit Domain-Driven Design auseinandersetzen und uns anschauen, was es genau ist und wobei es uns helfen kann. Begriffe wie Ubiquitous Language, Bounded Context, Context Mapping, Event Storming, Strategical und Tactical Design werden danach keine Fremdworte mehr für uns sein. Dabei streifen wir alle Bereiche vom ersten Umgang mit Anforderungen bis hin zur konkreten Umsetzung in Architektur und Code.
Microservices sind nicht unbedingt kleine REST-Services. Es gibt auch asynchrone Microservices mit Kafka oder Atom-Feeds sowie eine Integration auf UI-Ebene. Und für REST können Kubernetes und Service Meshes wie Istio viele Herausforderungen lösen. Die Vor- und Nachteile aller Ansätze werden anhand praktischer Codebeispiele beleuchtet. So können die Teilnehmer den für sie passenden Ansatz finden. Alle Beispiele sind auf Github verfügbar und die Teilnehmer bekommen zusätzliche Materialien, um sich im Nachgang mit dem passenden Ansatz praktisch in der Tiefe zu beschäftigen.
Damit ein Web-API erfolgreich ist, muss die Welt wissen, welche Funktionalität es bietet. Swagger aka Open API ist ein Standard zur Beschreibung von Web APIs, auf dem eine Vielzahl nützlicher Tools aufbaut. Egal ob hübsch formatierte Dokumentationswebseite, generierter Server- und Clientcode, Einbindung in Workflowlösungen wie Azure Logic App – wenn man sein Web-API mit Open API beschrieben hat, bekommt man diese Dinge mehr oder weniger automatisch. In diesem Workshop stellt Rainer Stropek Open API vor. Gemeinsam mit ihm spezifizieren Sie ein fiktives Web-API mit Open API. Anhand des API-Beispiels lernen Sie wichtige Tools kennen, generieren Code, veröffentlichen die API-Beschreibung zur Verwendung in der Cloud und vieles mehr.
Alle reden von der Cloud, nur man selbst scheint noch meilenweit davon entfernt. Zu viele offene Fragen, zu wenig konkrete Antworten. Und genau das soll sich in diesem Workshop ändern. Gemeinsam nehmen wir uns ein typisches Anwendungsszenario aus dem Enterprise-Umfeld vor und migrieren es Schritt für Schritt in die Cloud am Beispiel von AWS. Beginnend bei der Plattforminfrastruktur (DB, Storage etc.) über Standardservices (User Management) bis hin zur anwendungsspezifischen Businesslogik. Am Ende steht eine rein Cloud-basierte Lösung und natürlich die Diskussion, ob wir es nicht evtl. ein wenig übertrieben haben. Denn nicht alles, was technologisch möglich ist, macht auch für jeden Kontext Sinn. Getreu dem Motto „mittendrin statt nur dabei“ darf jeder auch gerne selbst Hand anlegen.
Datengetriebene RESTful Web-APIs zu designen ist nicht einfach. Es muss eine Menge bedacht werden: Metadaten, flexible Abfragesprache, Paging, URL-Konventionen, Payload-Format u. v. m. OData ist ein Standard, der Antworten auf diese Fragen mitbringt. In dem Workshop startet Rainer Stropek mit einem Überblick über OData. Anhand vieler Beispiele wird praktisch demonstriert, wie das Protokoll funktioniert. Anschließend zeigt Rainer, wie man mit .NET Core OData Services plattformunabhängig entwickelt und konsumiert. Rainer verwendet in seiner Firma OData seit vielen Jahren und wird daher besonderen Wert auf die Vermittlung von Tipps aus der Praxis legen.
Event-driven architectures enable nicely decoupled microservices. However, using peer-to-peer event chains to implement complex end-to-end logic crossing service boundaries can accidentally increase coupling. Extracting such business logic into dedicated services reduces coupling and allows to keep sight of larger-scale flows – without violating bounded contexts, harming service autonomy, or introducing god services. Service boundaries get clearer and service APIs get smarter by focusing on their potentially long-running nature. I will demonstrate how a new generation of lightweight and highly-scalable state machines ease the implementation of long-running services. I will emphasise how this can also help to solve consistency challenges in distributed systems. Based on real-life experience, I will share how to handle complex logic and flows which require proper reactions on failures, timeouts, and compensating actions, and provide guidance backed by code examples.
Bitte beachten: Der Workshop wird auf Deutsch gehalten!
Container sind mittlerweile in vielen Projekten das bevorzugte Format, um die eigene Software auszuliefern. Kubernetes ist dabei die populärste Plattform, um diese Container in Clustern zu betreiben. Ob Entwickler, Architekten, Admins oder Produkt-Owner, jeder an der Softwareentwicklung Beteiligte kann davon profitieren, die Grundlagen zu beherrschen. In diesem Workshop werden die wichtigsten Konzepte für einen Einstieg in Kubernetes vermittelt. Es geht um Container und Pods, Services, das Management von Deployments, die Persistierung von Daten und die grundlegende Architektur von Kubernetes. Schließlich werfen wir noch einen kurzen Blick auf interessante Konzepte, die auf Kubernetes aufsetzen. Service Meshes, Operatoren oder Function as a Service Frameworks zeigen, welche Möglichkeiten in dieser Plattform stecken. Veranschaulicht wird das Ganze mit einfachen Beispielen, die der geneigte Teilnehmer gerne während des Workshops nachvollziehen kann.
Durch den Trend zu Microservices-Architekturen und die Bereitstellung von Public APIs ist die Verbreitung HTTP-basierter APIs noch weiter angestiegen. Doch in der Praxis ist zu beobachten, dass bei der Implementierung solcher APIs und ihrer Clients bekannte Fehler und Anti-Patterns wiederholt zum Einsatz kommen. So entstehen eng gekoppelte, zerbrechliche und wenig widerstandsfähige Lösungen, deren Wartung und Weiterentwicklung deutlich aufwendiger wird als erhofft. Dieser Workshop beleuchtet typische Fallen und zeigt alternative Lösungswege auf. Themen sind u. a. Datenmodelle, Implementierungsstrategien für die HTTP-Kommunikation, OpenAPI (Swagger) und seine Codegeneratoren, Data Binding Frameworks sowie die Sicherung des Datenverkehrs.
Softwareentwicklung ist Modellbildung. Wir bauen einen Teil der Wirklichkeit als Programm nach und verbessern sie so. Ein traditioneller Ansatz ist, die Domäne als Ganzes möglichst detailgenau nachzubilden. Aber ist das eigentlich der Zweck von Modellen? Wenn wir genau hinschauen, bemerken wir, dass ein Modell eigentlich genau das Gegenteil ist – ein Modell ist nämlich eine Abstraktion der Wirklichkeit, in die nur das Wesentliche übertragen und das Unwesentliche weggelassen wird. Was wesentlich und was unwesentlich ist, ergibt sich aus dem Kontext.
Ein einfaches Modell ist leichter zu verstehen als ein kompliziertes. Deshalb ist es eine gute Idee, von einer komplizierten Wirklichkeit mehrere einfache (und einfach verständliche) Modelle zu bilden. Genau diesen Effekt machen sich Microservices und DDD mit seinem strategisches Design zunutze. Hier werden statt dem einen großen, unternehmensweiten Modell mehrere kleine, gut verständliche Modelle gebildet.
In diesem Talk betrachten wir, welche Mittel uns zur Verfügung stehen, um gute Modelle zu bauen und die Domäne so aufzuteilen, dass wir auch mit mehreren sinnvoll und unabhängig arbeiten können.
Alle reden von der Cloud, nur man selbst scheint noch meilenweit davon entfernt. Zu viele offene Fragen, zu wenig konkrete Antworten. Und genau das soll sich in diesem Workshop ändern. Gemeinsam nehmen wir uns ein typisches Anwendungsszenario aus dem Enterprise-Umfeld vor und migrieren es Schritt für Schritt in die Cloud am Beispiel von AWS. Beginnend bei der Plattforminfrastruktur (DB, Storage etc.) über Standard-Services (User Management) bis hin zur anwendungsspezifischen Businesslogik. Am Ende steht eine rein Cloud-basierte Lösung und natürlich die Diskussion, ob wir es nicht evtl. ein wenig übertrieben haben. Denn nicht alles, was technologisch möglich ist, ergibt auch für jeden Kontext Sinn. Getreu dem Motto „mittendrin statt nur dabei“ darf jeder auch gern selber Hand anlegen.
Am Dienstag bietet der Themenabend eine sehr gute Gelegenheit wichtige Themen mit den Trainern in entspannter Atmosphäre zu diskutieren. An speziellen Thementischen können Sie – zu Snacks und Getränken – die Experten befragen und sich mit anderen Teilnehmern austauschen. Hier kann von den Teilnehmern selbst auch unverbindlich und individuell ein eigenes Thema vorgeschlagen werden.
Freuen Sie sich auf spannende Themen wie
- "DDD, Event Storming, Collaborative Modelling“
- "Serverless”
- “Microservices Architektur & Pattern”
- "API Design & Implementierung"
Haben Anti-Corruption-Layer und damit verwandte DDD-Muster wie der Open Host Service eine Rolle in modernen Microservices-Architekturen? Diese Frage stellt sich zu Recht, wenn es darum geht, sich um neue Systeme Gedanken zu machen, oder die Integrationsarchitektur bestehender Systeme zu hinterfragen. Sollte zumindest auf der grünen Wiese nicht alles besser sein? Sollten die Übergänge zwischen Bounded Contexts so klar sein, dass explizite Übersetzungen zwischen Modellen ihren Wert verlieren? Und kosten uns zentrale Übersetzungsebenen ohnehin nicht die gewünschte Skalierbarkeit und Entkopplung? Diese Fragen und mehr werden im Rahmen des Workshops diskutiert und hierbei angeknüpft an Beispiele aus dem Projektalltag des Referenten. Auch wird gezeigt, wie Microservices-Architekturen es erlauben, nicht nur fachliche Modelle technisch zu verteilen, sondern auch die dazugehörigen Integrationsebenen mit den Integrationsanforderungen der Systeme mitwachsen zu lassen.
Moderne APIs können so viel mehr als nur gängige HTTPS-Endpunkte bereitzustellen: Zum einen die Möglichkeit zur (optionalen) Echtzeitkommunikation auf Basis von WebSockets. Mit Hilfe von Microsofts Open-Source-Plattform ASP.NET Core MVC und SignalR lassen sich im Handumdrehen Web-APIs und Push Services entwickeln. Doch damit nicht genug: Weitere Themen wie Security, Rate Limiting, eine sinnvolle Dokumentation und ein vernünftiges, zentralisiertes Logging sind mit von der Partie. Und jeder dieser einzelnen Bereiche bietet uns eine neue Herausforderung.
Sebastian Gingter und Manuel Rauber zeigen Ihnen in diesem Workshop, wie man mit .NET Core moderne APIs auf und für verschiedene Plattformen entwickeln kann. Zusätzlich wird durch den Einsatz von Entity Framework Core die Anbindung an unterschiedliche Datenbanken ermöglicht. Durch den Einsatz weiterer Open-Source-Bibliotheken für Logging oder zur automatischen Generierung einer Swagger/OpenAPI-Dokumentation ergänzen wir das API um weitere Funktionalitäten. Eine Clientanwendung, das Deployment auf unterschiedliche Plattformen und das Deployment in die Cloud runden den Workshop ab - vollständig End-to-end und einmal mit allem eben!
Anton und Daniel geben einen Überblick was API Management ist und warum man es braucht. Anhand Azure API Management und Kong zeigen sie, welche Bandbreite an Werkzeugen vorhanden ist und geben Einblicke aus der Praxis wo und wie man beginnen kann die Technologie zu nutzen.
Eine Anwendung basierend auf Microservices mit Java zu entwickeln kann ja so schwer nicht sein. Schließlich gibt es Frameworks wie Spring Boot oder MicroProfile, die dem Entwickler das technologische Rahmengerüst vorgeben. Nur leider ist es damit nicht getan. Wie zum Beispiel sieht der optimale Service-Schnitt aus? Wie kommunizieren die Services untereinander, ohne dabei ihre Unabhängigkeit zu verlieren? Wie soll die Anwendung reagieren, wenn mal ein Service nicht so kann, wie er soll? Und wie bindet man seine Microservices an bestehende Infrastruktur wie Distributed Tracing, Monitoring oder Identity Provider an?
Was sich in der Theorie einfach anhört, bringt in der Praixis so manchen Stolperstein mit sich. Im Rahmen des Workshops werden wir daher gemeinsam eine kleine, auf Microservices basierende Anwendung bauen und zum „Fliegen“ bringen. Angefangen bei der Diskussion über den optimalen Service-Schnitt via Domain-driven Design, über die Integration der Services untereinander via unterschiedlicher Kommunikationspatterns inkl. eingebauter Fehlertoleranz bis hin zur Instrumentalisierung der Services zwecks Laufzeitanalyse und -optimierung, lassen wir dabei kaum ein Thema aus.
Am Ende steht eine Anwendung, die live gehen könnte – naja, fast.
IDE öffnen, „File - New Project - Cloud“, OK klicken und fertig. Oder? Nun, nicht ganz. Denn egal ob AWS, GCP oder eben Azure: Am Ende des Tages werden Sie sich fragen, warum, wann und wie Sie in die Cloud gehen. Genau diese Fragestellungen wollen Thorsten Hans und Christian Weyer für Java-, Node.js- und .NET-Entwickler in diesem Workshop beantworten. Anhand diverser Use Cases werden mögliche Wege mit, über und in Azure diskutiert. Was bedeuten Architekturansätze wie Cloud-native Microservices und Serverless Microservices? Wie gehe ich bei Brownfield-Projekten vor und wie kann ich Greenfield-Lösungen effizient in Azure realisieren? Wo liegen Unterschiede und Benefits von daten- und ereignisgetriebenen Ansätzen? Wie kann ich mit dem Sammelsurium an Patterns, Technologien und Tools in Azure kosteneffektiv hantieren und dennoch flexibel sein? All dies werden wir anhand praktischer Beispiele und pragmatischer Lösungen in interaktiver Art und Weise adressieren. Sehen Sie PaaS, Web-Apps, Container, Orchestrators, Serverless, Functions und Co. mit der Azure Cloud anhand von .NET-Demos in Action.
Moderne APIs können so viel mehr als nur gängige HTTPS-Endpunkte bereitzustellen: Zum einen die Möglichkeit zur (optionalen) Echtzeitkommunikation auf Basis von WebSockets. Mit Hilfe von Microsofts Open-Source-Plattform ASP.NET Core MVC und SignalR lassen sich im Handumdrehen Web-APIs und Push Services entwickeln. Doch damit nicht genug: Weitere Themen wie Security, Rate Limiting, eine sinnvolle Dokumentation und ein vernünftiges, zentralisiertes Logging sind mit von der Partie. Und jeder dieser einzelnen Bereiche bietet uns eine neue Herausforderung.
Sebastian Gingter und Manuel Rauber zeigen Ihnen in diesem Workshop, wie man mit .NET Core moderne APIs auf und für verschiedene Plattformen entwickeln kann. Zusätzlich wird durch den Einsatz von Entity Framework Core die Anbindung an unterschiedliche Datenbanken ermöglicht. Durch den Einsatz weiterer Open-Source-Bibliotheken für das Logging oder zur automatischen Generierung einer Swagger/OpenAPI-Dokumentation ergänzen wir das API um weitere Funktionalitäten. Eine Clientanwendung, das Deployment auf unterschiedliche Plattformen und das Deployment in die Cloud runden den Workshop ab - vollständig End-to-End und einmal mit allem eben!
Eine Anwendung basierend auf Microservices mit Java zu entwickeln kann ja so schwer nicht sein. Schließlich gibt es Frameworks wie Spring Boot oder MicroProfile, die dem Entwickler das technologische Rahmengerüst vorgeben. Nur leider ist es damit nicht getan. Wie zum Beispiel sieht der optimale Service-Schnitt aus? Wie kommunizieren die Services untereinander, ohne dabei ihre Unabhängigkeit zu verlieren? Wie soll die Anwendung reagieren, wenn mal ein Service nicht so kann, wie er soll? Und wie bindet man seine Microservices an bestehende Infrastruktur wie Distributed Tracing, Monitoring oder Identity Provider an?
Was sich in der Theorie einfach anhört, bringt in der Praixis so manchen Stolperstein mit sich. Im Rahmen des Workshops werden wir daher gemeinsam eine kleine, auf Microservices basierende Anwendung bauen und zum „Fliegen“ bringen. Angefangen bei der Diskussion über den optimalen Service-Schnitt via Domain-driven Design, über die Integration der Services untereinander via unterschiedlicher Kommunikationspatterns inkl. eingebauter Fehlertoleranz bis hin zur Instrumentalisierung der Services zwecks Laufzeitanalyse und -optimierung, lassen wir dabei kaum ein Thema aus.
Am Ende steht eine Anwendung, die live gehen könnte – naja, fast.
IDE öffnen, „File - New Project - Cloud“, OK klicken und fertig. Oder? Nun, nicht ganz. Denn egal ob AWS, GCP oder eben Azure: Am Ende des Tages werden Sie sich fragen, warum, wann und wie Sie in die Cloud gehen. Genau diese Fragestellungen wollen Thorsten Hans und Christian Weyer für Java-, Node.js- und .NET-Entwickler in diesem Workshop beantworten. Anhand diverser Use Cases werden mögliche Wege mit, über und in Azure diskutiert. Was bedeuten Architekturansätze wie Cloud-native Microservices und Serverless Microservices? Wie gehe ich bei Brownfield-Projekten vor und wie kann ich Greenfield-Lösungen effizient in Azure realisieren? Wo liegen Unterschiede und Benefits von daten- und ereignisgetriebenen Ansätzen? Wie kann ich mit dem Sammelsurium an Patterns, Technologien und Tools in Azure kosteneffektiv hantieren und dennoch flexibel sein? All dies werden wir anhand praktischer Beispiele und pragmatischer Lösungen in interaktiver Art und Weise adressieren. Sehen Sie PaaS, Web-Apps, Container, Orchestrators, Serverless, Functions und Co. mit der Azure Cloud anhand von .NET-Demos in Action.
Funktionale Programmierung ist verbreitet wie nie und wird immer populärer. Ihre zunehmend wichtige Rolle zeigt sich dabei in konkreten Beispielen aus der Praxis. Die letzten Versionen von Java führen sowohl ausdrucksvolle funktionale Sprachmittel als auch immutable APIs ein. React erleichtert die Entwicklung von komplexen SPAs durch reine Funktionen und Kontrolle über Seiteneffekte. Die gut durchdachte Architektur von Erlang und dessen virtueller Maschine ermöglicht die Entwicklung von riesigen und komplexen nebenläufigen Systemen wie beispielsweise WhatsApp.
Teilnehmende dieses Hands-on-Workshops werden entdecken, welche Vorteile das Zusammenspiel von Domain-driven Design und funktionaler Programmierung bietet. Konstrukte wie immutable Aggregates, seiteneffektenfreier Kern der Domäne und fachliche Transitionen als reine Funktionen werden auf der Basis konkreter Use Cases angesprochen. Die in diesem Workshop präsentierten Ansätze werden sich unabhängig von der verwendeten Programmiersprache als nützlich erweisen. Erfahrung mit funktionaler Programmierung wird hilfreich, aber nicht notwendig sein.