2. Übersicht
Was sind µServices?
Nachteile / Vorteile
Definitionen
Voraussetzungen
Integration
Aufteilen des Monolithen + Datenbank
Wie anfangen?
Beispiel
Zusammenfassung
Quellen
4. 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“
8. 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
15. Integration - Zusatz
Service as State Machines
Reactive Extensions
Observables
Semantic Versioning
Koexistierende Endpoint-Versionen
Migration zu neuen Endpunkten
16. 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
17. 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?
22. Service 1 Service 2
Datenbank
Service 1
Datenbank
Service 2
Foreign Keys?
Weglassen - in den Services managen
Transactions?
23. 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
25. 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
27. 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/