SlideShare ist ein Scribd-Unternehmen logo
Microservices
Do one thing well
Übersicht
Was sind µServices?
Nachteile / Vorteile
Definitionen
Voraussetzungen
Integration
Aufteilen des Monolithen + Datenbank
Wie anfangen?
Beispiel
Zusammenfassung
Quellen
Was sind µServices?
Kleine, autonome Services (Dienste), die zusammen arbeiten.
Do one thing well
Wie klein ist „klein“?
Single Responsibility Principle nach Robert C. Martin
„Gather together those things, that change together for the same reason.“
„small enough, but not smaller“
Autonom
Selbständig deploybar
Kann der Service deployed werden, ohne etwas anderes ändern zu müssen?
Decoupling
Auch auf Teamebene!
Nachteile
Viele deploybare Einheiten
Hohe Modularisierung erforderlich
Latenzen
Können ausfallen - Murphy’s Law
Größere Infrastruktur
Vorteile
Unabhängige Technologien verwenden (MySQL, ElasticSearch, Java, PHP,…)
Fehler kaskadieren nicht
Hochskalierbar
Leichtes Deployment einzelner Einheiten
Composability - Zusammensetzbar
Austauschbar
Entwicklung einzelner Komponenten
Voraussetzungen für µServices
Struktur des Unternehmens lässt es zu
Team ist verantwortlich für den µService
Entwicklung neuer Features dauert, im Moment, lange
Monitoring/Logging
You build it, you run it, you panic
Conway’s Law
Integration
Avoid breaking changes
Integration
Orchestration Choreography
Service 1
Service 2
Service 3
Service 4 Service 1
Event„Befehl“
„Befehl“
„Befehl“
Service 2
Service 3
Service 4
Veröffentlicht
Subscribes
Subscribes
Subscribes
Integration
Orchestration Choreography
God-Classes
Vorteile
Nachteile Mehraufwand
Monitoring
Tracking
Einfacher zu implementieren Weniger Abhängigkeiten
Flexibler
mehrere CRUD-Classes
Integration
Synchron Asynchron
Einfacher
Wissen: erfolgreich?
Blockiert
Long running jobs
Blockiert nicht
annehmen, es hat funktioniert
Request/Response Event-based
Integration - Request/Response
RPC - gRPC
REST
HATEOAS
gRPC Remote Procedure Calls, of course!
Integration - Event Based
Message Queues
RabbitMQ
HTTP (ATOM)
Integration - Zusatz
Service as State Machines
Reactive Extensions
Observables
Semantic Versioning
Koexistierende Endpoint-Versionen
Migration zu neuen Endpunkten
Zusatz
Immer davon ausgehen, dass der Service nicht funktioniert
„Be conservative in what you do, be liberal in what you accept.“
Postel’s Law
API Gateway
Kein wildes Service->Service
Anfang
Neue Features als µService
SharedDB beibehalten
Bounded contexts finden
Stück-für-Stück in µServices auslagern
Abhängigkeiten aufheben - Decoupling
Business capabilities?
Aufteilen des Monolithen
Abhängigkeiten erkennen
modularisieren
Jedes Modul (jeder bounded Context)
Ein µService
Pattern
http://microservices.io/patterns/microservices.html
Datenbank?
Datenbank
Monolithischer Service
Service
Code 1
Service
Code 2
monolithische
Datenbank
Monolithischer Service
Service
Code 1
Service
Code 2
Datenbank
Service 1
Datenbank
Service 2
Service 1 Service 2
Datenbank
Service 1
Datenbank
Service 2
Foreign Keys?
Weglassen - in den Services managen
Transactions?
Transactions
Transactional boundaries - pro Service
Distributed transactions —> Transaction Manager
Compensating transactions wenn eine fehlschlägt (Queue)
Eventual consistency
Transactions nicht aufteilen, wenn wirklich nötig
Beispiel - Uber
https://eng.uber.com/soa/
Schwer, den richtigen Service zu finden (viele!)
Beispiel - Uber
Wenn gefunden: wie ansprechen? REST? RPC?
standardisierter Weg Services zu definieren
IDL - Apache Thrift
Strikte Regeln -> „Vertrag“
Interfaces ändern sich nicht plötzlich - Fehler auf Thrift-Ebene
Interface definition language
Zusammenfassung
No silver bullet
Anfangs mehr Aufwand nötig
Größere Infrastruktur
Schnelleres Deployment
Mehr Fehlerquellen
Keine Abhängigkeiten
Quellen
Building Microservices - Sam Newman
http://microservices.io/
Zalando - https://www.youtube.com/watch?v=I9zpROdDf48
https://dzone.com/articles/microservices-in-practice-1
https://eng.uber.com/building-tincup/
Das Beispiel - https://eng.uber.com/soa/

Weitere ähnliche Inhalte

Ähnlich wie Microservices - Do one thing well

BATbern41 Microservices@Enterprise
BATbern41 Microservices@EnterpriseBATbern41 Microservices@Enterprise
BATbern41 Microservices@Enterprise
BATbern
 
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...
Ramon Anger
 
00 Einleitung und Übersicht zur COMLINE Cloud Service Plattform - CSP
00 Einleitung und Übersicht zur COMLINE Cloud Service Plattform - CSP00 Einleitung und Übersicht zur COMLINE Cloud Service Plattform - CSP
00 Einleitung und Übersicht zur COMLINE Cloud Service Plattform - CSP
Christian Guenther
 
Anatomie von Microservice Landschaften
Anatomie von Microservice LandschaftenAnatomie von Microservice Landschaften
Anatomie von Microservice Landschaften
Michael Plöd
 
Pragmatic SOA - Beschränken auf das Wesentliche
Pragmatic SOA - Beschränken auf das WesentlichePragmatic SOA - Beschränken auf das Wesentliche
Pragmatic SOA - Beschränken auf das Wesentliche
1&1
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
QAware GmbH
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerSandro Sonntag
 
C5 Mashup
C5 MashupC5 Mashup
C5 Mashup
Andreas Schulte
 
Serverless Application Framework
Serverless Application FrameworkServerless Application Framework
Serverless Application Framework
BATbern
 
Steinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionSteinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen Evolution
QAware GmbH
 
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPSoftware Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Christian Guenther
 
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
OPITZ CONSULTING Deutschland
 
Microservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary PatternMicroservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary Pattern
Brockhaus Consulting GmbH
 
Java EE meets Microservices
Java EE meets MicroservicesJava EE meets Microservices
Java EE meets Microservices
OPEN KNOWLEDGE GmbH
 
Cloud-Native ohne Vendor Lock-in mit Kubernetes
Cloud-Native ohne Vendor Lock-in mit KubernetesCloud-Native ohne Vendor Lock-in mit Kubernetes
Cloud-Native ohne Vendor Lock-in mit Kubernetes
ConSol Consulting & Solutions Software GmbH
 
Architektur und Automation als Enabler für DevOps
Architektur und Automation als Enabler für DevOpsArchitektur und Automation als Enabler für DevOps
Architektur und Automation als Enabler für DevOps
matfsw
 
Cloud-native Apps 2.0
Cloud-native Apps 2.0Cloud-native Apps 2.0
Cloud-native Apps 2.0
QAware GmbH
 
Splunk Webinar: Splunk for Microsoft Exchange
Splunk Webinar: Splunk for Microsoft ExchangeSplunk Webinar: Splunk for Microsoft Exchange
Splunk Webinar: Splunk for Microsoft Exchange
Georg Knon
 
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
LeanIX GmbH
 

Ähnlich wie Microservices - Do one thing well (20)

BATbern41 Microservices@Enterprise
BATbern41 Microservices@EnterpriseBATbern41 Microservices@Enterprise
BATbern41 Microservices@Enterprise
 
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...
Microservice architecture applied. 14 Praxis-Tipps für die Nutzung von Micros...
 
00 Einleitung und Übersicht zur COMLINE Cloud Service Plattform - CSP
00 Einleitung und Übersicht zur COMLINE Cloud Service Plattform - CSP00 Einleitung und Übersicht zur COMLINE Cloud Service Plattform - CSP
00 Einleitung und Übersicht zur COMLINE Cloud Service Plattform - CSP
 
Anatomie von Microservice Landschaften
Anatomie von Microservice LandschaftenAnatomie von Microservice Landschaften
Anatomie von Microservice Landschaften
 
Pragmatic SOA - Beschränken auf das Wesentliche
Pragmatic SOA - Beschränken auf das WesentlichePragmatic SOA - Beschränken auf das Wesentliche
Pragmatic SOA - Beschränken auf das Wesentliche
 
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.Steinzeit war gestern! Wege der Cloud-nativen Evolution.
Steinzeit war gestern! Wege der Cloud-nativen Evolution.
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
 
C5 Mashup
C5 MashupC5 Mashup
C5 Mashup
 
OSLC in Aktion
OSLC in AktionOSLC in Aktion
OSLC in Aktion
 
Serverless Application Framework
Serverless Application FrameworkServerless Application Framework
Serverless Application Framework
 
Steinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen EvolutionSteinzeit war gestern! Wege der cloud-nativen Evolution
Steinzeit war gestern! Wege der cloud-nativen Evolution
 
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSPSoftware Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
Software Architecture Design Patterns der COMLINE Cloud Service Platform - CSP
 
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
Integrationsszenarien in modernen Anwendungslandschaften - OPITZ CONSULTING -...
 
Microservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary PatternMicroservices und das Entity Control Boundary Pattern
Microservices und das Entity Control Boundary Pattern
 
Java EE meets Microservices
Java EE meets MicroservicesJava EE meets Microservices
Java EE meets Microservices
 
Cloud-Native ohne Vendor Lock-in mit Kubernetes
Cloud-Native ohne Vendor Lock-in mit KubernetesCloud-Native ohne Vendor Lock-in mit Kubernetes
Cloud-Native ohne Vendor Lock-in mit Kubernetes
 
Architektur und Automation als Enabler für DevOps
Architektur und Automation als Enabler für DevOpsArchitektur und Automation als Enabler für DevOps
Architektur und Automation als Enabler für DevOps
 
Cloud-native Apps 2.0
Cloud-native Apps 2.0Cloud-native Apps 2.0
Cloud-native Apps 2.0
 
Splunk Webinar: Splunk for Microsoft Exchange
Splunk Webinar: Splunk for Microsoft ExchangeSplunk Webinar: Splunk for Microsoft Exchange
Splunk Webinar: Splunk for Microsoft Exchange
 
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
Alle reden über Microservices - Wie haben wir es bei LeanIX gemacht @ EA Conn...
 

Mehr von myposter GmbH

Concepts of Clean Code adapted for JavaScript - Tech'n'Drinks @myposter
Concepts of Clean Code adapted for JavaScript - Tech'n'Drinks @myposterConcepts of Clean Code adapted for JavaScript - Tech'n'Drinks @myposter
Concepts of Clean Code adapted for JavaScript - Tech'n'Drinks @myposter
myposter GmbH
 
Clean(er) Code - Tech'n'Drinks @myposter
Clean(er) Code - Tech'n'Drinks @myposterClean(er) Code - Tech'n'Drinks @myposter
Clean(er) Code - Tech'n'Drinks @myposter
myposter GmbH
 
ReRxSwift
ReRxSwiftReRxSwift
ReRxSwift
myposter GmbH
 
Vue - State Transitions
Vue - State TransitionsVue - State Transitions
Vue - State Transitions
myposter GmbH
 
Vue - Composing Components
Vue - Composing ComponentsVue - Composing Components
Vue - Composing Components
myposter GmbH
 
Vue - the Progressive Framework
Vue  - the Progressive FrameworkVue  - the Progressive Framework
Vue - the Progressive Framework
myposter GmbH
 
Optimising Image Loading
Optimising Image LoadingOptimising Image Loading
Optimising Image Loading
myposter GmbH
 
Warum Affen die besseren Softwaretester sind
Warum Affen die besseren Softwaretester sindWarum Affen die besseren Softwaretester sind
Warum Affen die besseren Softwaretester sind
myposter GmbH
 
Reactive x
Reactive xReactive x
Reactive x
myposter GmbH
 
How Browsers Work
How Browsers Work How Browsers Work
How Browsers Work
myposter GmbH
 

Mehr von myposter GmbH (10)

Concepts of Clean Code adapted for JavaScript - Tech'n'Drinks @myposter
Concepts of Clean Code adapted for JavaScript - Tech'n'Drinks @myposterConcepts of Clean Code adapted for JavaScript - Tech'n'Drinks @myposter
Concepts of Clean Code adapted for JavaScript - Tech'n'Drinks @myposter
 
Clean(er) Code - Tech'n'Drinks @myposter
Clean(er) Code - Tech'n'Drinks @myposterClean(er) Code - Tech'n'Drinks @myposter
Clean(er) Code - Tech'n'Drinks @myposter
 
ReRxSwift
ReRxSwiftReRxSwift
ReRxSwift
 
Vue - State Transitions
Vue - State TransitionsVue - State Transitions
Vue - State Transitions
 
Vue - Composing Components
Vue - Composing ComponentsVue - Composing Components
Vue - Composing Components
 
Vue - the Progressive Framework
Vue  - the Progressive FrameworkVue  - the Progressive Framework
Vue - the Progressive Framework
 
Optimising Image Loading
Optimising Image LoadingOptimising Image Loading
Optimising Image Loading
 
Warum Affen die besseren Softwaretester sind
Warum Affen die besseren Softwaretester sindWarum Affen die besseren Softwaretester sind
Warum Affen die besseren Softwaretester sind
 
Reactive x
Reactive xReactive x
Reactive x
 
How Browsers Work
How Browsers Work How Browsers Work
How Browsers Work
 

Microservices - Do one thing well