SlideShare ist ein Scribd-Unternehmen logo
1 von 266
Downloaden Sie, um offline zu lesen
#WISSENTEILEN
#WISSENTEILEN
Microservices
Architecture
Lars Röwekamp
CIO New Technologies
@mobileLarson
@_openknowledge
#WISSENTEILEN
ÜBER OPEN KNOWLEDGE
Branchenneutrale Softwareentwicklung & IT-Beratung
#WISSENTEILEN
ÜBER MICH
Wer bin ich - und wenn ja, wie viele?
• CIO New Technologies
• Enterprise & Mobile
• Autor, Speaker, Coach & Mentor
• Snowboard & MTB Enthusiast (a.k.a. “stets bemüht“)
Lars Röwekamp (a.k.a. @mobileLarson)
LR
#WISSENTEILEN#WISSENTEILEN
Workshop Agenda:
Microservices DNA
Architektur & Pattern
#WISSENTEILEN
Microservices DNA
#WISSENTEILEN
DISCLAIMEREs folgt sehr viel Text. Und der ist auch noch „geklaut“!
#WISSENTEILEN
Wie groß ist klein
„A microservices ecosystem (ME) is a platform of
services each encapsulating a business capability.
Developers can build, test and release each
microservice independently.
ME enforces an organizational structure of
autonomous long standing teams, each
responsible for one or multiple services.“
(Zhamak Dehghani, ThoughtWorks)
#WISSENTEILEN
Functional
Decompensation
#WISSENTEILEN
Single
Responsibility
Principle
#WISSENTEILEN
Share nothing*
*a.k.a. share as little as possible
#WISSENTEILEN
Explicitly
published
Interfaces
#WISSENTEILEN
Lightweight
Communication
#WISSENTEILEN
Independently
deploy, upgrade
scale, replace
#WISSENTEILEN
Heterogeneous
a.k.a. Polyglot
#WISSENTEILEN
Bussiness
Focused
#WISSENTEILEN
#WISSENTEILEN
Easier
to develop, understand & maintain.
#WISSENTEILEN
Faster
start than a monolith
#WISSENTEILEN
Local changes
can be easily deployed
#WISSENTEILEN
Scaling
indepentent from all other services
#WISSENTEILEN
Fault isolation
improvement via own process
#WISSENTEILEN
Stack isolation
no long term commitment to any stack
#WISSENTEILEN
Agility
optimized „time to market“
#WISSENTEILEN
vs.
#WISSENTEILEN
In der Theorie
ist alles ganz einfach
#WISSENTEILEN
#WISSENTEILEN
In der Praxis
sieht es leider etwas anders aus.
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN#WISSENTEILEN
Hilfe, wir brauchen dringend
Architetkur
& Pattern
#WISSENTEILEN
#WISSENTEILEN
„Wie kommunizieren
Services untereinander?“
„Wer oder was ist
für die UI zuständig?“
„Wie gehen wir mit Cross-Cutting
Themen wie Logging, Tracing,
Profiling oder Security um?“
„Database per Service Pattern,
wie soll das bitte gehen?“
„Und welche Bedeutung spielt
die Versionierung der Services
und ihrer Schnittstellen?“
#WISSENTEILEN
Communication Pattern
#WISSENTEILEN
Wie kommunizieren Services untereinander?
#WISSENTEILEN
Communication Pattern
• RESTful (z.B. via JAX-RS 2.0)
• Messaging (z.B. via JMS 2.0)
#WISSENTEILEN
Communication via REST
• Ressourcen basiert
• eindeutige Identifikation via URI
• State Transfer via HTTP Methoden
• Caching via ETag, Last-Modified, …
• Request/Response Modell
• synchrone Kommunikation
#WISSENTEILEN
RESTful Step 1: Create order
A: POST /orders/ {order}
B: CREATED 201
Location /orders/123
Step 2: Update order
A: PUT /orders/123 {order}
B: OK 200 {order}
#WISSENTEILEN
Communication via REST
HTTP Methoden korrekt verwendet:
POST „creates a child resource at a server
defined URL“
PUT „creates/replaces the resource as a
whole at the client defined URL“
PATCH „updates part of the resource at that
client defined URL“
#WISSENTEILEN
RESTful
• Verbindungsprobleme?
• Fehler?
• Call wiederholen?
• Seiteneffekte?
• Status Codes nutzen!
• Payload nutzen!
#WISSENTEILEN
Communication via REST
HTTP Methoden korrekt verwendet:
SAFE
„No changes to resources at all*“
IDEMPOTENT
„No changes to resources when called repeatedly**“
*GET, HEAD, OPTIONS
** GET, HEAD, OPTIONS, PUT, DELETE
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
RESTful
Aber was ist mit …
• Fire & Forget?
• Broadcast?
• Async?
Passt nicht so richtig ins
(REST) Konzept, oder?
#WISSENTEILEN
Communication via Messaging
• Messages zur Kommunikation
• lose Kopplung durch Queues & Topics
• ein Sender, 0 bis N Receiver
• asynchrone Kommunikation
• garantierte Auslieferung möglich
#WISSENTEILEN
Communication via Messaging
• plattformspezifische Formate (z.B. JMS, MSMQ)
• plattformneutrale Formate (z.B. AMQP)
#WISSENTEILEN
Msg Step: Send message
A: Send to topic X { msg }
B: Register to topic X
Step: Receive message
T: ACK
T: New Message in X
B: Read X
#WISSENTEILEN
Msg
Und was bei Problemen?
• Retry durch Sender
• Reliable Msg (Ack)
• evtl. Duplikate
• evtl. Seiteneffekte
#WISSENTEILEN
Msg
... und Broadcast
• bei Topics sind
mehrere parallele
Empfänger möglich
#WISSENTEILEN
Msg
... und Transaktionen
• via Transactional
Request*
*ACHTUNG: gilt nur bis zum Message Broker
#WISSENTEILEN
Msg
... und synchron
• 2x Async == Sync ;-)
• Correlation ID
• Latenz beachten
#WISSENTEILEN
Msg
... und synchron
• 2x Async == Sync ;-)
• Correlation ID
• Latenz beachten
#WISSENTEILEN
Msg
... und synchron
• 2x Async == Sync ;-)
• Correlation ID
• Latenz beachten
#WISSENTEILEN
Msg
... und synchron
• 2x Async == Sync ;-)
• Correlation ID
• Latenz beachten
#WISSENTEILEN
Msg
... und synchron
• 2x Async == Sync ;-)
• Correlation ID
• Latenz beachten
#WISSENTEILEN
Msg
... und synchron
• 2x Async == Sync ;-)
• Correlation ID
• Latenz beachten
#WISSENTEILEN
<coding-time />
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
Database per Service Pattern
#WISSENTEILEN
Database per Service Pattern, wie soll das gehen?
#WISSENTEILEN
Data Integration via ...
• gemeinsame Datenquelle
• getrennte Datenquellen
• Datenreplikation
#WISSENTEILEN
Data Integration via ...
gemeinsame Datenquelle
Unabhängig entwickeln,
pflegen, deployen, skalieren?
#WISSENTEILEN
Data Integration via ...
• gemeinsame Datenquelle
• getrennte Datenquelle
• Datenreplikation
#WISSENTEILEN
Data Integration via ...
getrennte Datenquellen
#WISSENTEILEN
Data Integration via ...
getrennte Datenquellen
(lesend via Owner, schreibend via Owner)
#WISSENTEILEN
Data Integration via ...
Replikation von Daten
#WISSENTEILEN
Data Integration via ...
Replikation von Daten
(lesend via Replikation, schreibend via Owner)
#WISSENTEILEN
Data Integration via ...
Domain A
Domain A‘
Domain B
#WISSENTEILEN
Data Integration via ...
Domain A
Domain A‘
Domain B
POST
new „A“
#WISSENTEILEN
Data Integration via ...
Domain A
Domain A‘
Domain B
#WISSENTEILEN
Data Integration via ...
Domain A
Domain A‘
Domain B
#WISSENTEILEN
Data Integration via ...
Domain A
Domain A‘
Domain B
#WISSENTEILEN
Data Integration via ...
Domain A
Domain A‘
Domain B
#WISSENTEILEN
<coding-time />
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
Distributed Transactions
#WISSENTEILEN
Wo liegt das
Problem?
#WISSENTEILEN
Database per Service Pattern
#WISSENTEILEN
Use-Case
#WISSENTEILEN
Use-Case
#WISSENTEILEN
Use-Case
#WISSENTEILEN
Das klappt nie im Leben!
(Anonymous, DB Admin)
#WISSENTEILEN
Wir brauchen Transaktionen!
(Anonymous, DB Admin)
#WISSENTEILEN#WISSENTEILEN
Die Alternative
a.k.a. „Plan B“
#WISSENTEILEN#WISSENTEILEN
„Benötigen wir wirklich eine
Transaktion oder gibt es einen
fachlich sinnvollen Plan B?“
#WISSENTEILEN
„Starbucks does not know
Two-Phase-Commit“
http://www.enterpriseintegrationpatterns.com/ramblings/18_starbucks.html
#WISSENTEILEN
The Real World is
not transactional!
#WISSENTEILEN
The Online World is
not transactional!
#WISSENTEILEN
#WISSENTEILEN
Der “Plan B“
Produkt im
Warenkorb
8
#WISSENTEILEN
Plan B: Lazy Evaluation
a.k.a. die „es wird schon gutgehen“ Strategie
• TX fachlich aufsplitten, sequentiell
durchführen und schauen, ob es klappt
• im Problemfall alternative Logik ausführen
#WISSENTEILEN
Plan B: Lazy Evaluation
Produkt im
Warenkorb
8
#WISSENTEILEN
Plan B: Lazy Evaluation
Produkt im
Warenkorb
8
#WISSENTEILEN
Plan B: Lazy Evaluation
Produkt im
Warenkorb
decrement
8
#WISSENTEILEN
Plan B: Lazy Evaluation
Produkt im
Warenkorb
decrement
8 – 1 = 7
#WISSENTEILEN
Plan B: Lazy Evaluation eXtended
Produkt im
Warenkorb
letzter bekannter
Bestand = 10 decrement
8 – 1 = 7
if stock > 0
else …
#WISSENTEILEN
Plan B: Lazy Evaluation eXtended+
Produkt im
Warenkorb
letzter bekannter
Bestand = 10 1. stock?
8 – 1 = 7
2. decrement!
#WISSENTEILEN#WISSENTEILEN
Plan B? Schön & gut, aber ich
brauche meine Transaktionen!
Was aber, wenn …?
#WISSENTEILEN
Plan B - Strategy #3: Beeing Optimistic
Produkt im
Warenkorb,
letzter bekannter
Bestand = 1
0
#WISSENTEILEN#WISSENTEILEN
Plan B? Schön & gut, aber ich
brauche meine Transaktionen!
#WISSENTEILEN#WISSENTEILEN
TX via
SAGA Pattern
#WISSENTEILEN
Microservices mit „eigenen“ Daten
#WISSENTEILEN
Fachliche TX über Servicegrenzen hinweg
#WISSENTEILEN
(Quelle: Microservices Pattern, Chris Richardson)
#WISSENTEILEN
(Quelle: Microservices Pattern, Chris Richardson)
#WISSENTEILEN
(Quelle: Microservices Pattern, Chris Richardson)
„Sichtbarkeit"
Order Service
„Sichtbarkeit“
Customer Service
#WISSENTEILEN
it‘s all about
consistency
- eventual -
#WISSENTEILEN
Wie garantiere ich die Konsistent der
Daten über Servicegrenzen hinweg?
#WISSENTEILEN
Strategie #1
überdenke die
Servicegrenzen
#WISSENTEILEN
Die
„Service“
Strategie
#WISSENTEILEN
Die
„Service“
Strategie
#WISSENTEILEN
Geänderte Servicegrenzen
• technologisch eine super Lösung, aber …
• Problem der Verantwortlichkeiten
• Problem Bounded Context / Domänen Modell
• Vorteile der Microservices gehen verloren
• „Big Ball of Mud“ lässt grüßen
#WISSENTEILEN
Strategie #2
XA mit 2PC
#WISSENTEILEN
Die
„XA“
Strategie
#WISSENTEILEN
Die
„XA“
Strategie
Btw: DB locks
Btw: Chatty O(4n)
mit Retries = (n^2)
Btw: CAP Theorem
#WISSENTEILEN
Verteilte Transaktionen via XA
• aus Developer-Sicht wie lokale TX, aber …
• Verlust der losen Kopplung, da synchrone IPC
• kein Support durch „moderne Plattformen“*
* Cloud-Komponenten, noSQL, MQs
#WISSENTEILEN
Strategie #3
DIY 2PC
#WISSENTEILEN
Die
„DIY 2PC“
Strategie*
*Nein, das willst du nicht. Glaube mir!
#WISSENTEILEN
Strategie #4
Business TX via
SAGA Pattern
#WISSENTEILEN
Quelle:
SAGAS, Hector Garcia-Molina
& Kenneth Salem, January 1987
Die
„Saga“
Strategie
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
SAGA Idee:
Abbilden einer verteilten fachlichen
Transaktion durch eine Abfolge lokaler
Transitionen / Transaktionen
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
• Konsistenz von Daten zwischen Services
wird durch eine wohldefinierte Abfolge lokaler
Transitionen/Transaktionen erreicht.
• Service kommuniziert „erfolgreiche“ lokale
Transition/Transaktion an den nächsten
beteiligten Service*.
*mehr dazu später
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Wow, that
is simple!
What can
go wrong?
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Die
„Saga“
Strategie
#WISSENTEILEN
Die
„Saga“
Strategie
CA = Compensation Algorith a.k.a.
Compensation Transaction
#WISSENTEILEN
Die
„Saga“
Strategie
CA = Compensation Algorith a.k.a.
Compensation Transaction
„Every Ti has its Ci“
#WISSENTEILEN
Verteilte Transaktionen via SAGAs
• wohldefinierte Abfolge von Compensation
Algorithms realisieren verteiltes Rollback
• Compensation Algorithms sind fachlicher
Code und somit Applikationslogik
• Abfolge von lokalen TX & CAs kann beliebig
komplex werden!
#WISSENTEILEN
Frage:
Wie koordiniert
man das Ganze?
#WISSENTEILEN
Steuerung von SAGAs
TX 1
TX 2
TX 3
TX 4
TX 5
TX 6
order = PENDING
item = PENDINGAPPORVED
APPORVED
#WISSENTEILEN
Steuerung von SAGAs
• Choreographie
• Orchestrierung
#WISSENTEILEN
Steuerung von SAGAs
• Choreographie
• Orchestrierung
#WISSENTEILEN
Choreographie von SAGAs
• implizite Sequenzsteuerung
• verteilte Koordination durch Eventfluss
• „Wissen“ liegt bei den beteiligten Services
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Saga via
Choreography
#WISSENTEILEN
Choreographie von SAGAs
• pro
lose gekoppelt (Teilnehmer kennen sich nicht)
relativ einfach zu implementieren
• contra
i.d.R. zyklische Abhängigkeiten
erhöhte Komplexität im Domänen-Modell
kein zentraler Business-Code (wann valide?)
#WISSENTEILEN
Choreographie von SAGAs
• btw lose Kopplung
Teilnehmer kennen sich zwar nicht, wissen aber
genau, was bei einem Event zu tun und wie im
Anschluss – durch ein eigenes Event – zu
antworten ist (a.k.a. pseudo lose Kopplung)
#WISSENTEILEN
Steuerung von SAGAs
• Choreographie
• Orchestrierung
#WISSENTEILEN
Orchestrierung von SAGAs
• explizite Sequenzsteuerung
• zentraler SAGA-Koordinator im Service
• Command / Handler Pattern
• beteiligte Services haben kein „Wissen“
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Saga via Orchestration
#WISSENTEILEN
Orchestration von SAGAs
• pro
Logik ist einfach(er) zu verstehen
fachliche Kopplung nur unidirektional
keine zyklischen Abhängigkeiten
Separation of Concerns (Domain Logic vs. TX)
#WISSENTEILEN
Orchestration von SAGAs
• contra
„Smart Orchestrator & Dump Services“ Pattern,
d.h. Risiko, zu viel Business Logic im
Orchestrator zu zentralisieren
#WISSENTEILEN
Orchestration von SAGAs
• btw Orchestrator
Will man den wirklich selber bauen? Nein!
Alternative 1: Saga Framework
Alternative 2: Lightweight Workflow Engine
#WISSENTEILEN
Frage:
Und das kann
funktionieren?
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
• Services veröffentlichen „Erfolgs“-Nachricht
direkt nach lokaler TX
• lokale TX und „Erfolgs“-Nachricht sind
atomare Einheit aus Sicht des Services
• garantierte Beendigung der Business TX*
*Message Broker buffered bei Bedarf die Message
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
#WISSENTEILEN
Konsistenz von Daten und Nachrichten
#WISSENTEILEN
Fehlende Isolation
• SAGA = ACD (ACID ohne Isolation)
• fehlende Isolation kann zu Anomalien führen
(lost updates, dirty reads, event race condition)
• Anomalien müssen soweit minimiert bzw.
verhindert werden, dass sie fachlich vertretbar
sind!
#WISSENTEILEN
UI Integration Pattern
#WISSENTEILEN
Wer oder was ist eigentlich für die UI zuständig?
#WISSENTEILEN
UI Integration
Meins, deins, unser?
• Wer liefert die UI?
• Wo baue ich die UI zusammen?
• Wie baue ich die UI zusammen?
#WISSENTEILEN
Client Side via Browser
• Hyperlinks (je eine Seite pro Service)
• Client Side Composition (e.g. Angular, Node)
• iFrame („fake“ Document Component Model)
• AJAX (CORS Problem, „blank“ Page)
• JavaScript Voodoo (via „myLib“)
• HTML Imports (Teil der WebComponts Spec)
#WISSENTEILEN
Client Side
#WISSENTEILEN
Client Side
#WISSENTEILEN
Server Side
• Server Side Include (SSI)
• Edge Side Include (ESI)
• UI Gateway
#WISSENTEILEN
Server Side (SSI)
• Page Composition auf Web Server Level
• Server Side Scripting Language
• einfach Syntax inkl. Kontroll-Direktiven (if, …)
• erlaubt u.a. <!--#include file|virtual=„…“ -->
• Apache httpd, LiteSpeed, nginx, lighttpd, IIS
#WISSENTEILEN
Server Side (ESI)
• Page Composition auf Edge Server Level
• XML basierte Syntax
• erlaubt u.a. <esi:include src=„…“ onerror=„…“ />
• CDN (Akamai)
• Proxy Caching Server (Varnish, Squid, Mongrel)
#WISSENTEILEN
UI Gateway
• Page Composition auf App (Server) Level
• Single Point of Entry ruft Service auf, baut aus
Ergebnissen UI zusammen und liefert sie aus
Achtung: Web UI / API Monolith!
Achtung : Kein Platz für Logik(!?)
#WISSENTEILEN
Gateway
„Backends
for
Frontends“
Version 1
#WISSENTEILEN
Gateway
„Backends
for
Frontends“
Version 2
#WISSENTEILEN
API Gateway Pattern
#WISSENTEILEN
Warum ein API Gateway?
• Clients mit unterschiedlichsten Anforderungen
kommunizieren mit dem Backend.
• Client ruft mehrere Services auf und aggregiert
intern das Ergebnis (Chatty Communication).
• Direkte Kommunikation führt zu starker
Abhängigkeit zwischen Clients und Services.
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
Was genau ist ein API Gateway?
• „Haupteingang“ für Anwendungen, um auf
Daten, Geschäftslogik oder Funktionen der
Backend-Services zuzugreifen.
• Zusätzlicher Layer zur Entkoppelung von
Client(s) und Backend-Services.
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
Aufgaben des API Gateway
• „Entkopplung (Client / Services)
• Transformation (Payload, Header, …)
• Routing (Registry, Discovery)
• Orchestration (Aggregation, Fallback)
• …
#WISSENTEILEN
Aufgaben des API Gateway
• Security (DDoS, Authorization, Tokens, …)
• Caching (Response, CDN, …)
• Resilience (Timeout, Bandwidth, Throtteling, …)
• Staging & Versioning (dev, test, prod, mocks, …)
• Analytics (Performance, Traces, …)
• …
#WISSENTEILEN
Aufgaben des API Gateway
• SLAs (Bandwith, Response Time, …)
• Contracts (API-Keys, …)
• Mocking
#WISSENTEILEN
DIY vs. Out-of-the-Box
• Was genau möchte man erreichen?
• DIY macht nur selten Sinn!
• Netflix Zuul
• AWS Gateway
• Kong, Treafik, …
• viele, viele mehr …
#WISSENTEILEN
(Quelle: http://techblog.netflix.com/2013/01/optimizing-netflix-api.html)
#WISSENTEILEN
(Quelle: http://techblog.netflix.com/2013/01/optimizing-netflix-api.html)
#WISSENTEILEN
<coding-time />
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN
#WISSENTEILEN#WISSENTEILEN
#WISSENTEILEN
Versioning
#WISSENTEILEN
Versionierung
Herausforderung:
Evolution der
Schnittstellen
#WISSENTEILEN
Best Practices: strategisch
• solange wie möglich hinauszögern
• starre Kopplung vermeiden
• Consumer-Driven Contracts
• Semantic Versioning (Major.Minor.Patch)
• Koexistenz mehrerer Endpoints
• Konkurrierende Service Versionen
#WISSENTEILEN
#WISSENTEILEN
Ver 0.6.0
{
"id": 1,
"fullName": "Max Mustermann",
"emailAdress": "max.mustermann@openknowledge.de"
}
Change request: add gender
#WISSENTEILEN
Ver 0.7.0
{
"id": 1,
"fullName": "Max Mustermann",
"gender": true,
"emailAdress": "max.mustermann@openknowledge.de"
}
#WISSENTEILEN
Ver 0.7.0
{
"id": 1,
"fullName": "Max Mustermann",
"gender": true,
"emailAdress": "max.mustermann@openknowledge.de"
}
Change request: split „fullName“
#WISSENTEILEN
Ver 0.8.0
{
"id": 1,
"firstName" : "Max",
"lastName" : "Mustermann",
"gender": true,
"emailAdress": "max.mustermann@openknowledge.de"
}
#WISSENTEILEN
Ver 0.8.0
{
"id": 1,
"firstName" : "Max",
"lastName" : "Mustermann",
"gender": true,
"emailAdress": "max.mustermann@openknowledge.de"
}
Missing fullName!
#WISSENTEILEN
Ver 0.8.0
{
"id": 1,
"fullName": "Max Mustermann",
"firstName" : "Max",
"lastName" : "Mustermann",
"gender": true,
"emailAdress": "max.mustermann@openknowledge.de"
}
Change request: structure for „name/fullName“
#WISSENTEILEN
Ver 0.9.0
{
"id": 1,
"fullName" {
"firstName" : "Max",
"lastName" : "Mustermann",
}
"gender": true,
"emailAdress": "max.mustermann@openknowledge.de"
}
#WISSENTEILEN
Ver 0.9.0
{
"id": 1,
"fullName" {
"firstName" : "Max",
"lastName" : "Mustermann",
}
"gender": true,
"emailAdress": "max.mustermann@openknowledge.de"
}
Semantic of fullName!
#WISSENTEILEN
Ver 0.9.0
{
"id": 1,
"fullName": "Max Mustermann",
"name" {
"firstName" : "Max",
"lastName" : "Mustermann",
}
"gender": true,
"emailAdress": "max.mustermann@openknowledge.de"
}
#WISSENTEILEN
Ver 1.0.0
{
"id": 1,
"fullName": "Max Mustermann",
“name" {
"firstName" : "Max",
"lastName" : "Mustermann",
}
"gender": "male",
"emailAddress": "max.mustermann@openknowledge.de"
}
#WISSENTEILEN
Ver 1.0.0
{
"id": 1,
"fullName": "Max Mustermann",
“name" {
"firstName" : "Max",
"lastName" : "Mustermann",
}
"gender": "male",
"emailAddress": "max.mustermann@openknowledge.de"
}
#WISSENTEILEN
„Be conservative in what you do,
be liberal in what you accept.“
Postel’s Law (a.k.a. robustness principle)
#WISSENTEILEN
Best Practices: technisch
• gar nicht (via „ignore“)
• gar nicht (via zusätzlicher Ressourcen)
• gar nicht (via erweiterbarer Datenformate)
• Versionsnummer in URL
• Versionsnummer in Header (via Custom-Header)
• Content Negotiation (via Accept-Header)
#WISSENTEILEN
via
Endpoints
Endpoint V1
Versioning
#WISSENTEILEN
via
Endpoints
Endpoint V1
Endpoint V2
Versioning
#WISSENTEILEN
via
Endpoints
Endpoint V2
Versioning
#WISSENTEILEN
via
Services
Service V1
Versioning
Endpoint
#WISSENTEILEN
via
Services
Service V1
Service V2
Versioning
Old Endpoint New Endpoint
#WISSENTEILEN
via
Services
Service V2
Versioning
Endpoint
#WISSENTEILEN
„Wo bitte ist das Problem?
Dann habe ich eben X Versionen!“
(naiver Entwickler)
#WISSENTEILEN
Evolution: Monolith
#WISSENTEILEN
Evolution: Microservices
#WISSENTEILEN
Evolution: Microservices
Wie ist die Anzahl der möglicher Konstellationen?
#WISSENTEILEN
Evolution: Microservices
fixe Reihenfolge: N-1 Kombinationen (N=4; 3)
#WISSENTEILEN
Evolution: Microservices
Beliebige Reihenfolge: 2N-2 Kombinationen (N=4; 14)
#WISSENTEILEN
„REST APIs don‘t need a
versioning strategy – they need
a change strategy!“
Ben Morris (Ben Morris Blog)
#WISSENTEILEN
Pitfalls
#WISSENTEILEN
#1
Cohesion
chaos
#WISSENTEILEN
#2
Not taken
automation
seriously
#WISSENTEILEN
#3
Layered
Service
Architecture
#WISSENTEILEN
#4
Relying
on consumer
sign-in
#WISSENTEILEN
#5
Manual
configuration
managment
#WISSENTEILEN
#6
Version
avoidance
#WISSENTEILEN
#7
A gateway
for every Service
#WISSENTEILEN
Are u ready for Microservices?
#WISSENTEILEN
„Ein Microservice
kommt selten allein!“
Lars Röwekamp
#WISSENTEILEN
Service
Design
#WISSENTEILEN
Architectural
Pattern
#WISSENTEILEN
Communication
Pattern
#WISSENTEILEN
API
Gateway
#WISSENTEILEN
UI
Integration
#WISSENTEILEN
API
Versioning
#WISSENTEILEN
? ? ?
#WISSENTEILEN
Kontakt
LARS RÖWEKAMP
CIO NEW TECHNOLOGIES
lars.roewekamp@openknowledge.de
+49 (0)441 4082 – 0
@mobileLarson
@_openknowledge
OFFENKUNDIGGUT
#WISSENTEILEN
Bildnachweise 1/2
#25: © marekukiasz– shutterstock.com
#42: © print10 – istockphoto.com
#90: © vasakna – fotolia.com
#113: © vadymvdrobot – fotolia.com t
#223: © Rawpixel.com – shutterstock.com
#260: © RichVintage - istockphoto.com
#WISSENTEILEN
Bildnachweise 2/2
All other pictures inside this presentation orginate from
pixabay.com or were created by my own.

Weitere ähnliche Inhalte

Was ist angesagt?

Shared Data in verteilten Systemen
Shared Data in verteilten SystemenShared Data in verteilten Systemen
Shared Data in verteilten SystemenOPEN KNOWLEDGE GmbH
 
Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”OPEN KNOWLEDGE GmbH
 
CQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzCQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzOPEN KNOWLEDGE GmbH
 
Zukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit MicroservicesZukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit MicroservicesOPEN KNOWLEDGE GmbH
 
Herausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturHerausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturOPEN KNOWLEDGE GmbH
 
Java EE goes Microservices. Are you serious?
Java EE goes Microservices. Are you serious?Java EE goes Microservices. Are you serious?
Java EE goes Microservices. Are you serious?OPEN KNOWLEDGE GmbH
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaOPEN KNOWLEDGE GmbH
 
Microservices mit dem MicroProfile
Microservices mit dem MicroProfileMicroservices mit dem MicroProfile
Microservices mit dem MicroProfileOPEN KNOWLEDGE GmbH
 
Web APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseWeb APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseOPEN KNOWLEDGE GmbH
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!OPEN KNOWLEDGE GmbH
 
App war gestern: Mobile Engagement als Teil der Enterprise-Strategie
App war gestern: Mobile Engagement als Teil der Enterprise-StrategieApp war gestern: Mobile Engagement als Teil der Enterprise-Strategie
App war gestern: Mobile Engagement als Teil der Enterprise-StrategieOPEN KNOWLEDGE GmbH
 
Cloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessCloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessOPEN KNOWLEDGE GmbH
 
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?OPEN KNOWLEDGE GmbH
 
Mobile Ideation – der sanfte Weg zum mobilen Mehrwert
Mobile Ideation – der sanfte Weg zum mobilen MehrwertMobile Ideation – der sanfte Weg zum mobilen Mehrwert
Mobile Ideation – der sanfte Weg zum mobilen MehrwertOPEN KNOWLEDGE GmbH
 
The Day after – nach dem Release ist vor dem Release
The Day after – nach dem Release ist vor dem ReleaseThe Day after – nach dem Release ist vor dem Release
The Day after – nach dem Release ist vor dem ReleaseOPEN KNOWLEDGE GmbH
 
iOS: einheitliche Oberflächen mit Auto Layout
iOS: einheitliche Oberflächen mit Auto LayoutiOS: einheitliche Oberflächen mit Auto Layout
iOS: einheitliche Oberflächen mit Auto LayoutOPEN KNOWLEDGE GmbH
 

Was ist angesagt? (20)

Shared Data in verteilten Systemen
Shared Data in verteilten SystemenShared Data in verteilten Systemen
Shared Data in verteilten Systemen
 
Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”Herausforderung „Multi-Channel Architecture”
Herausforderung „Multi-Channel Architecture”
 
CQRS, der etwas andere Architekturansatz
CQRS, der etwas andere ArchitekturansatzCQRS, der etwas andere Architekturansatz
CQRS, der etwas andere Architekturansatz
 
Zukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit MicroservicesZukunftssichere Architekturen mit Microservices
Zukunftssichere Architekturen mit Microservices
 
Herausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-ArchitekturHerausforderung „Multi-Channel“-Architektur
Herausforderung „Multi-Channel“-Architektur
 
Java EE goes Microservices. Are you serious?
Java EE goes Microservices. Are you serious?Java EE goes Microservices. Are you serious?
Java EE goes Microservices. Are you serious?
 
Modern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit JavaModern Lightweight Enterprise Architectures mit Java
Modern Lightweight Enterprise Architectures mit Java
 
Microservices mit dem MicroProfile
Microservices mit dem MicroProfileMicroservices mit dem MicroProfile
Microservices mit dem MicroProfile
 
App-Delivery-Pipeline
App-Delivery-PipelineApp-Delivery-Pipeline
App-Delivery-Pipeline
 
Web APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/ResponseWeb APIs jenseits von REST & Request/Response
Web APIs jenseits von REST & Request/Response
 
Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!Hilfe, ich will meinen Monolithen zurück!
Hilfe, ich will meinen Monolithen zurück!
 
App war gestern: Mobile Engagement als Teil der Enterprise-Strategie
App war gestern: Mobile Engagement als Teil der Enterprise-StrategieApp war gestern: Mobile Engagement als Teil der Enterprise-Strategie
App war gestern: Mobile Engagement als Teil der Enterprise-Strategie
 
Cloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu ServerlessCloud Architekturen - von "less Server" zu Serverless
Cloud Architekturen - von "less Server" zu Serverless
 
Enterprise Java on Steroids
Enterprise Java on SteroidsEnterprise Java on Steroids
Enterprise Java on Steroids
 
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
Von „less Server“ bis „Serverless“: Wie viel Cloud soll es sein?
 
Mobile Ideation – der sanfte Weg zum mobilen Mehrwert
Mobile Ideation – der sanfte Weg zum mobilen MehrwertMobile Ideation – der sanfte Weg zum mobilen Mehrwert
Mobile Ideation – der sanfte Weg zum mobilen Mehrwert
 
The Day after – nach dem Release ist vor dem Release
The Day after – nach dem Release ist vor dem ReleaseThe Day after – nach dem Release ist vor dem Release
The Day after – nach dem Release ist vor dem Release
 
iOS: einheitliche Oberflächen mit Auto Layout
iOS: einheitliche Oberflächen mit Auto LayoutiOS: einheitliche Oberflächen mit Auto Layout
iOS: einheitliche Oberflächen mit Auto Layout
 
Enterprise Java auf Diät
Enterprise Java auf DiätEnterprise Java auf Diät
Enterprise Java auf Diät
 
Java EE meets Microservices
Java EE meets MicroservicesJava EE meets Microservices
Java EE meets Microservices
 

Ähnlich wie Microservices Architecture: Architektur und Patterns

Shared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenShared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenOPEN KNOWLEDGE GmbH
 
Mobile- & Offline-First: Mehr als nur Buzzword-Bingo
Mobile- & Offline-First: Mehr als nur Buzzword-BingoMobile- & Offline-First: Mehr als nur Buzzword-Bingo
Mobile- & Offline-First: Mehr als nur Buzzword-BingoOPEN KNOWLEDGE GmbH
 
Mittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und TransaktionenMittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und TransaktionenOPEN KNOWLEDGE GmbH
 
Offline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon InternetOffline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon InternetOPEN KNOWLEDGE GmbH
 
Java EE meets Microservices: MicroProfile 2.x to the Rescue
Java EE meets Microservices: MicroProfile 2.x to the RescueJava EE meets Microservices: MicroProfile 2.x to the Rescue
Java EE meets Microservices: MicroProfile 2.x to the RescueOPEN KNOWLEDGE GmbH
 
INTEGRATION VON SECURITY-CHECKS IN DIE CI-PIPELINE
INTEGRATION VON SECURITY-CHECKS IN DIE CI-PIPELINEINTEGRATION VON SECURITY-CHECKS IN DIE CI-PIPELINE
INTEGRATION VON SECURITY-CHECKS IN DIE CI-PIPELINEOPEN KNOWLEDGE GmbH
 
MicroProfile 2.x: Der alternative Standard
MicroProfile 2.x: Der alternative StandardMicroProfile 2.x: Der alternative Standard
MicroProfile 2.x: Der alternative StandardOPEN KNOWLEDGE GmbH
 
Mobile Ideation aka "Der mobile Mehrwert"
Mobile Ideation aka "Der mobile Mehrwert"Mobile Ideation aka "Der mobile Mehrwert"
Mobile Ideation aka "Der mobile Mehrwert"OPEN KNOWLEDGE GmbH
 
Do it yourself - Analyse Powertask ohne Entwickler
Do it yourself - Analyse Powertask ohne EntwicklerDo it yourself - Analyse Powertask ohne Entwickler
Do it yourself - Analyse Powertask ohne EntwicklerStephan F. Walcher
 
WE LOVE AGILE – Durch Kundenfeedback schneller zum richtigen Produkt
WE LOVE AGILE – Durch Kundenfeedback schneller zum richtigen ProduktWE LOVE AGILE – Durch Kundenfeedback schneller zum richtigen Produkt
WE LOVE AGILE – Durch Kundenfeedback schneller zum richtigen ProduktThorben Egberts
 
API-First Design mit Swagger/OAS
API-First Design mit Swagger/OASAPI-First Design mit Swagger/OAS
API-First Design mit Swagger/OASOPEN KNOWLEDGE GmbH
 

Ähnlich wie Microservices Architecture: Architektur und Patterns (14)

Shared Data in verteilten Architekturen
Shared Data in verteilten ArchitekturenShared Data in verteilten Architekturen
Shared Data in verteilten Architekturen
 
Mobile- & Offline-First: Mehr als nur Buzzword-Bingo
Mobile- & Offline-First: Mehr als nur Buzzword-BingoMobile- & Offline-First: Mehr als nur Buzzword-Bingo
Mobile- & Offline-First: Mehr als nur Buzzword-Bingo
 
Mittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und TransaktionenMittendrin statt nur dabei: Microservices und Transaktionen
Mittendrin statt nur dabei: Microservices und Transaktionen
 
Offline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon InternetOffline-first Architekturen: Wer bitte braucht schon Internet
Offline-first Architekturen: Wer bitte braucht schon Internet
 
Java EE meets Microservices: MicroProfile 2.x to the Rescue
Java EE meets Microservices: MicroProfile 2.x to the RescueJava EE meets Microservices: MicroProfile 2.x to the Rescue
Java EE meets Microservices: MicroProfile 2.x to the Rescue
 
INTEGRATION VON SECURITY-CHECKS IN DIE CI-PIPELINE
INTEGRATION VON SECURITY-CHECKS IN DIE CI-PIPELINEINTEGRATION VON SECURITY-CHECKS IN DIE CI-PIPELINE
INTEGRATION VON SECURITY-CHECKS IN DIE CI-PIPELINE
 
MicroProfile 2.x: Der alternative Standard
MicroProfile 2.x: Der alternative StandardMicroProfile 2.x: Der alternative Standard
MicroProfile 2.x: Der alternative Standard
 
Mobile Ideation aka "Der mobile Mehrwert"
Mobile Ideation aka "Der mobile Mehrwert"Mobile Ideation aka "Der mobile Mehrwert"
Mobile Ideation aka "Der mobile Mehrwert"
 
Web-API Design in Java
Web-API Design in JavaWeb-API Design in Java
Web-API Design in Java
 
Serverless: The Missing Manual
Serverless: The Missing ManualServerless: The Missing Manual
Serverless: The Missing Manual
 
Do it yourself - Analyse Powertask ohne Entwickler
Do it yourself - Analyse Powertask ohne EntwicklerDo it yourself - Analyse Powertask ohne Entwickler
Do it yourself - Analyse Powertask ohne Entwickler
 
Webinar big data für unternehmen
Webinar big data für unternehmenWebinar big data für unternehmen
Webinar big data für unternehmen
 
WE LOVE AGILE – Durch Kundenfeedback schneller zum richtigen Produkt
WE LOVE AGILE – Durch Kundenfeedback schneller zum richtigen ProduktWE LOVE AGILE – Durch Kundenfeedback schneller zum richtigen Produkt
WE LOVE AGILE – Durch Kundenfeedback schneller zum richtigen Produkt
 
API-First Design mit Swagger/OAS
API-First Design mit Swagger/OASAPI-First Design mit Swagger/OAS
API-First Design mit Swagger/OAS
 

Mehr von OPEN KNOWLEDGE GmbH

Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIWarum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIOPEN KNOWLEDGE GmbH
 
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...OPEN KNOWLEDGE GmbH
 
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudFrom Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudOPEN KNOWLEDGE GmbH
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)OPEN KNOWLEDGE GmbH
 
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationFEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationOPEN KNOWLEDGE GmbH
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!OPEN KNOWLEDGE GmbH
 
From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. OPEN KNOWLEDGE GmbH
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoOPEN KNOWLEDGE GmbH
 
Machine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsMachine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsOPEN KNOWLEDGE GmbH
 
It's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeIt's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeOPEN KNOWLEDGE GmbH
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungOPEN KNOWLEDGE GmbH
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingOPEN KNOWLEDGE GmbH
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusOPEN KNOWLEDGE GmbH
 
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?OPEN KNOWLEDGE GmbH
 
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“OPEN KNOWLEDGE GmbH
 
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...OPEN KNOWLEDGE GmbH
 

Mehr von OPEN KNOWLEDGE GmbH (20)

Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AIWarum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
Warum der Computer "Nein" sagt - Mehr Nachvollziehbarkeit dank Explainable AI
 
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
Machine Learning? Ja gerne! Aber was und wie? Eine Kurzanleitung für den erfo...
 
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die CloudFrom Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
From Zero to still Zero: Die schönsten Fehler auf dem Weg in die Cloud
 
Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)Der Spagat zwischen BIAS und FAIRNESS (2024)
Der Spagat zwischen BIAS und FAIRNESS (2024)
 
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data ImputationFEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
FEHLENDE DATEN? (K)EIN PROBLEM!: Die Kunst der Data Imputation
 
Nie wieder Log-Files!
Nie wieder Log-Files!Nie wieder Log-Files!
Nie wieder Log-Files!
 
Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!Cloud-native and Enterprise Java? Hold my beer!
Cloud-native and Enterprise Java? Hold my beer!
 
From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud. From Zero to still Zero: The most beautiful mistakes going into the cloud.
From Zero to still Zero: The most beautiful mistakes going into the cloud.
 
API Expand Contract
API Expand ContractAPI Expand Contract
API Expand Contract
 
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & CoReady for the Future: Jakarta EE in Zeiten von Cloud Native & Co
Ready for the Future: Jakarta EE in Zeiten von Cloud Native & Co
 
Machine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.jsMachine Learning mit TensorFlow.js
Machine Learning mit TensorFlow.js
 
KI und Architektur
KI und ArchitekturKI und Architektur
KI und Architektur
 
It's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale NetzeIt's not Rocket Science: Neuronale Netze
It's not Rocket Science: Neuronale Netze
 
Business-Mehrwert durch KI
Business-Mehrwert durch KIBusiness-Mehrwert durch KI
Business-Mehrwert durch KI
 
Mehr Sicherheit durch Automatisierung
Mehr Sicherheit durch AutomatisierungMehr Sicherheit durch Automatisierung
Mehr Sicherheit durch Automatisierung
 
API-Design, Microarchitecture und Testing
API-Design, Microarchitecture und TestingAPI-Design, Microarchitecture und Testing
API-Design, Microarchitecture und Testing
 
Supersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: QuarkusSupersonic Java für die Cloud: Quarkus
Supersonic Java für die Cloud: Quarkus
 
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
Das ist doch alles nur Frontend - Wer braucht da schon Architektur?
 
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
Auf geht‘s in die Cloud: „Das kann doch nicht so schwer sein!“
 
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
Das Product Goal oder "Ohne Ziele laufen eben alle in die Richtung, die ihnen...
 

Microservices Architecture: Architektur und Patterns