#WISSENTEILEN
Zukunftssichere
Architekturen
mit Microservices
Arne Limburg
@ArneLimburg | @_openknowledge
#WISSENTEILEN
SOA
#WISSENTEILEN
Monolith
#WISSENTEILEN
Verteilte
Systeme
#WISSENTEILEN
Microservices
klein
#WISSENTEILEN
„Eine Einheit, die von einem kleinen Team
komplett – also fachlich und technisch –
beherrscht werden kann.”
Oliver Wegner (ehemals OTTO)
#WISSENTEILEN
Microservices
klein
lose gekoppelt
SERVICESCHNITT NACH DOMAINOBJECTS?
Customer
ShoppingCart
Product
Customer
ShoppingCart
Product
SERVICESCHNITT NACH DOMAINOBJECTS?
Microservices maßgeschneidert | Arne Limburg
„If every service has to be updated
at the same time, it‘s
not loosely coupled”
by Adrian Cockcroft (ehemals Netflix)
Customer
ShoppingCart
Product
SERVICESCHNITT NACH DOMAINOBJECTS?
#WISSENTEILEN
Bounded Context?
• Klare Grenzen
• Business-Prozesse
• Inkonsistenzen vermeiden
• e.g. „check out“
• e.g. „search products“
• e.g. „my recommendations“
SERVICESCHNITT NACH BOUNDED CONTEXTS
GEMEINSAME OBJEKTE?
GEMEINSAME DATEN?
#WISSENTEILEN
Microservices
klein
lose gekoppelt
robust
Resilience &
Compensation
Shipping
SERVICE NICHT VERFÜGBAR
SERVICE NICHT VERFÜGBAR
Observability
#WISSENTEILEN
Microservices
klein
lose gekoppelt
robust
Tolerant Reader Pattern
Tolerant gegenüber unbekannten Feldern
Umgang mit x-extensible-enum
http://zalando.github.io/restful-api-guidelines
Beispiel
address_type:
type: string
x-extensible-enum:
- private
- business
EXKURS: X-EXTENSIBLE-ENUM
Tolerant Reader Pattern
Tolerant gegenüber unbekannten Feldern
Umgang mit x-extensible-enum
http://zalando.github.io/restful-api-guidelines
Tolerant gegenüber unbekannten Statuscodes
HTTP Status 301 folgen
Photo by Irene Fertik, USC News Service. Copyright 1994, USC.
„Be conservative in what you do,
Be liberal in what you accept
from others“
RFC 793, Robustness Principal (John Postel)
Es darf nichts entfernt werden
Keine Veränderung von Verarbeitungsregel
Optionales darf nie Required werden
http://zalando.github.io/restful-api-guidelines
Alles was hinzugefügt wird, muss optional sein
#WISSENTEILEN
Service
Backend
API
Service
Frontend
Mobile
Frontend
Another
Service
Backend
B2B
Client Sam
e
Deploym
ent
Same Company
Any Client
WELCHE CLIENTS NUTZEN MICH?
API (PROVIDER CONTRACT)
CONSUMER CONTRACT
CONSUMER CONTRACT – YAGNI
Consumer
Contract
Consumer Provider
Consumer
Tests
Provider
Tests
CONSUMER-DRIVEN CONTRACT TESTING
Execute
Own
Provider
Tests
Generate
Consumer
Contract
Execute
Depending
Provider
Tests
Deploy
to
Stage
PIPELINE TO DEPLOY TO STAGE
Execute
Own
Provider
Tests
Generate
Consumer
Contract
Execute
Depending
Provider
Tests
Deploy
to
Stage
Achtung:
Abwärtskompatibilität ist
trotzdem notwendig!
PIPELINE TO DEPLOY TO STAGE
Execute
Own
Provider
Tests
Generate
Consumer
Contract
Execute
Depending
Provider
Tests
Deploy
to
Stage
BREAKING CHANGE DES PROVIDERS
Execute
Own
Provider
Tests
Generate
Consumer
Contract
Execute
Depending
Provider
Tests
Deploy
to
Stage
BREAKING CHANGE DES CONSUMERS
#WISSENTEILEN
Microservices
klein
lose gekoppelt
robust
Fazit
#WISSENTEILEN
? ? ?
FRAGEN
KONTAKT
Arne Limburg,
Software Architect
OFFENKUNDIGGUT
arne.limburg@openknowledge.de
+49 (0)441 4082 – 0 / 154
Icons in this presentation designed by “Freepik”, “Nice and Serious” and “Elegant
Themes” from www.flaticon.com

Zukunftssichere Architekturen mit Microservices