Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Der goldene Schnitt – Wie schneide ich Microservices richtig?

245 views

Published on

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.

Published in: Software
  • Copas Url to Download PDF eBook === http://ebookdfsrewsa.justdied.com/ ebookdfsrewsa.justdied.com8498744687-punto-y-ganchillo-en-el-jardin-de-arne-and-carlos-el-libro-de.html
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (Unlimited) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download Full EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ACCESS WEBSITE for All Ebooks ......................................................................................................................... Download Full PDF EBOOK here { http://bit.ly/2m77EgH } ......................................................................................................................... Download EPUB Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... Download doc Ebook here { http://bit.ly/2m77EgH } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... 1.DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/y6a5rkg5 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Be the first to like this

Der goldene Schnitt – Wie schneide ich Microservices richtig?

  1. 1. @ArneLimburg @_openknowledge #WISSENTEILEN Der goldene Schnitt Microservices maßgeschneidert
  2. 2. ÜBER MICH Microservices maßgeschneidert | Arne Limburg • Enterprise Architect bei der open knowledge GmbH • Themen • Microservices • Domain Driven Design • APIs • Architektur • Coaching • Technologie (Java EE / Jakarta EE) Arne Limburg
  3. 3. ÜBER OPEN KNOWLEDGE Titel der Präsentation | Name des Sprechers Branchenneutrale Softwareentwicklung und IT-Beratung
  4. 4. Warum Microservices? Microservices maßgeschneidert | Arne Limburg klein lose gekoppelt einzeln deploybar
  5. 5. Microservices maßgeschneidert | Arne Limburg © Martin Fowler: https://www.martinfowler.com/bliki/MicroservicePremium.html Warum Microservices?
  6. 6. Microservices maßgeschneidert | Arne Limburg Monolit / Layered Architecture vs. Microservices Wartbarkeit Skalierbarkeit Ausfallsicherheit Warum Microservices
  7. 7. Wie groß ist ein Microservice?
  8. 8. „Small enough and not smaller“by Sam Newman (thoughtworks)Microservices maßgeschneidert | Arne Limburg
  9. 9. Microservices maßgeschneidert | Arne Limburg „Eine Einheit, die von einem kleinen Team komplett – also fachlich und technisch – beherrscht werden kann.” Oliver Wegner (OTTO)
  10. 10. Microservices maßgeschneidert | Arne Limburg Wie groß ist ein Microservice Number of microservices / Smallness of microservice Costs Costs of: - setup - eventual consistency - operational complexity - redundant implementation - … Costs for: - agility - adaptivity - communication times business:tech
  11. 11. Microservices maßgeschneidert | Arne Limburg Beispiel Online Shop
  12. 12. Microservices maßgeschneidert | Arne Limburg Wie finde ich Microservices?
  13. 13. Microservices maßgeschneidert | Arne Limburg Kandidaten für Microservices? Kategorien Suche Produktkatalog Historie Empfehlungen Benutzerverwaltung Warenkorb
  14. 14. Microservices maßgeschneidert | Arne Limburg Fachlichkeit über Fachlichkeit
  15. 15. Microservices maßgeschneidert | Arne Limburg Domain Driven Design
  16. 16. Microservices maßgeschneidert | Arne Limburg Domain Driven Design „For most software projects, the primary focus should be on the domain and domain logic“ Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004
  17. 17. Microservices maßgeschneidert | Arne Limburg Ubiquitous Language Fachsprache als Basis Eindeutige Begriffe Durchgängige Nutzung
  18. 18. Microservices maßgeschneidert | Arne Limburg DOMAIN DRIVEN DESIGN „Complex Domain Design should be based on a model “ Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004
  19. 19. Microservices maßgeschneidert | Arne Limburg DOMÄNENMODELL Repräsentation der Domäne Fachlich korrekt und konsistent Weiterentwicklung durch alle Beteiligten
  20. 20. Microservices maßgeschneidert | Arne Limburg DOMÄNENMODELL Repräsentation der Domäne Fachlich korrekt und konsistent Weiterentwicklung durch alle Beteiligten „Das Domänenmodell ist das Bindeglied zwischen Domänenexperten und Entwicklern“ Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004
  21. 21. Microservices maßgeschneidert | Arne Limburg Domänenmodell Online-Shop Customer ShoppingCart Product
  22. 22. Microservices maßgeschneidert | Arne Limburg Wie passt das zu Microservices?
  23. 23. Microservices maßgeschneidert | Arne Limburg Bounded Context
  24. 24. Microservices maßgeschneidert | Arne Limburg Mehrere Modelle – aber wie? Customer ShoppingCart Product Kein Verlust der Vorteile Mögliche Konflikte Verschiedene Modelle Unterschiedliches Verständnis
  25. 25. Microservices maßgeschneidert | Arne Limburg Trennung nach Domänenobjekten? Customer ShoppingCart Product
  26. 26. Microservices maßgeschneidert | Arne Limburg Beispiel Online Shop
  27. 27. „Small autonomous services that work together.” by Sam Newman (thoughtworks) Microservices maßgeschneidert | Arne Limburg
  28. 28. Microservices maßgeschneidert | Arne Limburg „Microservices are a self-contained and easily understandable realization of domain logic, highly independent of each other.”by Adam Bien (Freelancer)
  29. 29. Microservices maßgeschneidert | Arne Limburg „Microservices are a self-contained and easily understandable realization of domain logic, highly independent of each other.”by Adam Bien (Freelancer)
  30. 30. Microservices maßgeschneidert | Arne Limburg Trennung nach Domänenobjekten? Customer ShoppingCart Product
  31. 31. 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)
  32. 32. Microservices maßgeschneidert | Arne Limburg Trennung nach Domänenobjekten? Customer ShoppingCart Product
  33. 33. Microservices maßgeschneidert | Arne Limburg „Eine Einheit, die von einem kleinen Team komplett – also fachlich und technisch – beherrscht werden kann.” Oliver Wegner (OTTO)
  34. 34. Microservices maßgeschneidert | Arne Limburg Bounded Context
  35. 35. Microservices maßgeschneidert | Arne Limburg Wer hat welche Daten?
  36. 36. Microservices maßgeschneidert | Arne Limburg Dezentrale Datenhaltung Daten-Ownership Caching
  37. 37. Compensation
  38. 38. Microservices maßgeschneidert | Arne Limburg Service nicht verfügbar Shipping
  39. 39. Beispiel Lieferadresse Microservices maßgeschneidert | Arne Limburg
  40. 40. • Speichern in • ShipmentService? • CheckoutService? • CustomerManagementService? • Lieferadresse ändern • Auswahl über CustomerManagementService? • Setzen in CheckoutService/ShipmentService? • CustomerManagementService offline à Chain of Failure? Beispiel Lieferadresse Microservices maßgeschneidert | Arne Limburg
  41. 41. Microservices maßgeschneidert | Arne Limburg Dezentrale Datenhaltung Daten-Ownership Caching Transaktionen
  42. 42. „Starbucks does not use Two-Phase Commit“http://www.enterpriseintegrationpatterns.com/ramblings/18_starbucks.html
  43. 43. Verteilte Transaktionen via SAGAs SAGA Idee: Abbilden einer verteilten fachlichen Transaktion durch eine Abfolge lokaler Transitionen / Transaktionen Microservices maßgeschneidert | Arne Limburg
  44. 44. Verteilte Transaktionen via SAGAs Microservices maßgeschneidert | Arne Limburg
  45. 45. 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 Microservices maßgeschneidert | Arne Limburg
  46. 46. Die „Saga“ Strategie Microservices maßgeschneidert | Arne Limburg
  47. 47. Die „Saga“ Strategie Microservices maßgeschneidert | Arne Limburg
  48. 48. Die „Saga“ Strategie Microservices maßgeschneidert | Arne Limburg
  49. 49. Die „Saga“ Strategie Microservices maßgeschneidert | Arne Limburg
  50. 50. Die „Saga“ Strategie Microservices maßgeschneidert | Arne Limburg
  51. 51. Die „Saga“ Strategie Microservices maßgeschneidert | Arne Limburg
  52. 52. Die „Saga“ Strategie Fehler- behandlung Microservices maßgeschneidert | Arne Limburg
  53. 53. Die „Saga“ Strategie Microservices maßgeschneidert | Arne Limburg
  54. 54. Die „Saga“ Strategie CA = Compensation Algorith a.k.a. Compensation Transaction Microservices maßgeschneidert | Arne Limburg
  55. 55. Die „Saga“ Strategie CA = Compensation Algorith a.k.a. Compensation Transaction „Every Ti has its Ci“ Microservices maßgeschneidert | Arne Limburg
  56. 56. 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! Microservices maßgeschneidert | Arne Limburg
  57. 57. Steuerung von SAGAs • Choreographie • Orchestrierung Microservices maßgeschneidert | Arne Limburg
  58. 58. Steuerung von SAGAs • Choreographie • Orchestrierung Microservices maßgeschneidert | Arne Limburg
  59. 59. Choreographie von SAGAs • implizite Sequenzsteuerung • verteilte Koordination durch Eventfluss • „Wissen“ liegt bei den beteiligten Services Microservices maßgeschneidert | Arne Limburg
  60. 60. 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?) Microservices maßgeschneidert | Arne Limburg
  61. 61. Steuerung von SAGAs • Choreographie • Orchestrierung Microservices maßgeschneidert | Arne Limburg
  62. 62. Orchestrierung von SAGAs • explizite Sequenzsteuerung • zentraler SAGA-Koordinator im Service • Command / Handler Pattern • beteiligte Services haben kein „Wissen“ Microservices maßgeschneidert | Arne Limburg
  63. 63. 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) Microservices maßgeschneidert | Arne Limburg
  64. 64. Orchestration von SAGAs • contra „Smart Orchestrator & Dump Services“ Pattern, d.h. Risiko, zu viel Business Logic im Orchestrator zu zentralisieren Microservices maßgeschneidert | Arne Limburg
  65. 65. Orchestration von SAGAs • btw Orchestrator Will man den wirklich selber bauen? Nein! Alternative 1: Saga Framework Alternative 2: Lightweight Workflow Engine Microservices maßgeschneidert | Arne Limburg
  66. 66. Microservices maßgeschneidert | Arne Limburg Dezentrale Datenhaltung Daten-Ownership Caching Transaktionen
  67. 67. Worauf es ankommt Klare Kontextgrenzen Unabhängigkeit Konsistenz Microservices maßgeschneidert | Arne Limburg
  68. 68. Charakteristika Charakteristika Schneiden von Microservices Schnitt entlang der Prozesse Fachlichkeit in einem Team Konsistenz/Transaktionssicherheit Wenig Kommunikation/Unabhängigkeit Microservices maßgeschneidert | Arne Limburg
  69. 69. Wie groß ist klein Size of microservice „guter“ Microservice Modularisierung Teamgröße Austauschbarkeit Infrastruktur Verteilte Kommunikation Transaktionen & Konsistenz
  70. 70. Wie groß ist klein Team Size
  71. 71. Wie groß ist klein Team Size
  72. 72. Size of microservice Number of microservices
  73. 73. Kommunikation
  74. 74. Microservices maßgeschneidert | Arne Limburg Context Map Bounded Context Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004 Ubiquitous Language names enter Continous Integration keep model unified by Context Map assess/overview relationships with
  75. 75. Microservices maßgeschneidert | Arne Limburg Context Map
  76. 76. Microservices maßgeschneidert | Arne Limburg Shared Kernel Bounded Context Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004 Ubiquitous Language names enter Continous Integration keep model unified by Context Map assess/overview relationships with Shared Kernel Overlap allied contexts through
  77. 77. Microservices maßgeschneidert | Arne Limburg Shared Kernel
  78. 78. Microservices maßgeschneidert | Arne Limburg Abstract Core
  79. 79. Microservices maßgeschneidert | Arne Limburg Abstract Core Fachliche Basis Saubere Modellierung div. Repräsentationen Zur Kommunikation Trennen von common
  80. 80. Microservices maßgeschneidert | Arne Limburg Abstract Core Online Shop Customer ShoppingCart Product Fachliche Basis Saubere Modellierung div. Repräsentationen Zur Kommunikation Trennen von common
  81. 81. Microservices maßgeschneidert | Arne Limburg Shared Kernel Bounded Context Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004 Ubiquitous Language names enter Continous Integration keep model unified by Context Map assess/overview relationships with Shared Kernel Overlap allied contexts through
  82. 82. Microservices maßgeschneidert | Arne Limburg Conway‘s Law Bounded Context Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004 Ubiquitous Language names enter Continous Integration keep model unified by Context Map assess/overview relationships with Shared Kernel Overlap allied contexts through Organisationen, die Systeme entwerfen, […] sind auf Entwürfe festgelegt, welche die Kommunikationsstrukturen dieser Organisationen abbilden.
  83. 83. Microservices maßgeschneidert | Arne Limburg Customer/Supplier Teams Bounded Context Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004 Ubiquitous Language names enter Continous Integration keep model unified by Context Map assess/overview relationships with Shared Kernel Overlap allied contexts through Customer Supplier Teamsrelate allied contexts as Organisationen, die Systeme entwerfen, […] sind auf Entwürfe festgelegt, welche die Kommunikationsstrukturen dieser Organisationen abbilden.
  84. 84. Microservices maßgeschneidert | Arne Limburg Conformist Bounded Context Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004 Ubiquitous Language names enter Continous Integration keep model unified by Context Map assess/overview relationships with Shared Kernel Overlap allied contexts through Customer Supplier Teamsrelate allied contexts as Conformist overlap unilaterally as
  85. 85. Microservices maßgeschneidert | Arne Limburg Open Host Services Bounded Context Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004 Ubiquitous Language names enter Continous Integration keep model unified by Context Map assess/overview relationships with Shared Kernel Overlap allied contexts through Customer Supplier Teamsrelate allied contexts as Conformist overlap unilaterally as Open Host Service support multiple clients through
  86. 86. WELCHE CLIENTS NUTZEN MICH?
  87. 87. API (PROVIDER CONTRACT)
  88. 88. CONSUMER CONTRACT
  89. 89. CONSUMER CONTRACT – YAGNI
  90. 90. CONSUMER-DRIVEN CONTRACT TEST Consumer Contract Consumer Provider Consumer Tests Provider Tests
  91. 91. MICROSERVICES ARCHITEKTUR Address Validation Service Delivery Service Customer Service Billing Service
  92. 92. PIPELINE TO DEPLOY TO STAGE Execute Own Provider Tests Generate Consumer Contract Execute Depending Provider Tests Deploy to Stage
  93. 93. BREAKING CHANGE VOM PROVIDER Execute Own Provider Tests Generate Consumer Contract Execute Depending Provider Tests Deploy to Stage
  94. 94. BREAKING CHANGE VOM CONSUMER Execute Own Provider Tests Generate Consumer Contract Execute Depending Provider Tests Deploy to Stage
  95. 95. Microservices maßgeschneidert | Arne Limburg Published Language Bounded Context Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004 Ubiquitous Language names enter Continous Integration keep model unified by Context Map assess/overview relationships with Shared Kernel Overlap allied contexts through Customer Supplier Teamsrelate allied contexts as Conformist overlap unilaterally as Open Host Service support multiple clients through Published Language formalize as
  96. 96. Microservices maßgeschneidert | Arne Limburg Anticorruption Layer Bounded Context Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004 Ubiquitous Language names enter Continous Integration keep model unified by Context Map assess/overview relationships with Shared Kernel Overlap allied contexts through Customer Supplier Teamsrelate allied contexts as Conformist overlap unilaterally as Anticorruption Layer translate and insulate unilaterally with Open Host Service support multiple clients through Published Language formalize as
  97. 97. Microservices maßgeschneidert | Arne Limburg Separate Ways Bounded Context Eric Evans, Domain-Driven Design, Addison-Wesley, © Eric Evans, 2004 Ubiquitous Language names enter Continous Integration keep model unified by Context Map assess/overview relationships with Shared Kernel Overlap allied contexts through Customer Supplier Teamsrelate allied contexts as Conformist overlap unilaterally as Separate Ways free teams to go Anticorruption Layer translate and insulate unilaterally with Open Host Service support multiple clients through Published Language formalize as
  98. 98. Schnittstellenevolution
  99. 99. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT http://www.example.com/addresses/42 àLiefert Addresse { street: { "name": "Poststraße", "number": "1", }, "city": "26122 Oldenburg" }
  100. 100. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT http://www.example.com/addresses/42 Attribut hinzufügen { street: { "name": "Poststraße", "number": "1", "additionalAdressLine": "2. Obergeschoss" }, "city": "26122 Oldenburg" }
  101. 101. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT http://www.example.com/addresses/42 Attribut hinzufügen { street: { "name": "Poststraße", "number": "1", "additionalAdressLine": "2. Obergeschoss" }, "city": "26122 Oldenburg" } Besondere Anforderung an den Client: Unbekannte Attribute ignorieren à Tolerant Reader Pattern
  102. 102. Microservices maßgeschneidert | Arne Limburg TOLERANT READER PATTERN Server schickt { street: { "name": "Poststraße", "number": "1", "additionalAdressLine": "2. Obergeschoss" }... } http://www.example.com/addresses/42 Client erwartet { street: { "name": "Poststraße", "number": "1", }... }
  103. 103. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT http://www.example.com/addresses/42 Attribut-Umbenennung { street: { "name": "Poststraße", "streetName": "Poststraße", "number": "1", "houseNumber": "1", }, "city": "26122 Oldenburg" }
  104. 104. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT http://www.example.com/addresses/42 àAbwärtskompatible Änderungen: Umbenennen durch Kopieren { street: { "name": "Poststraße", "streetName": "Poststraße", "number": "1", "houseNumber": "1", }, "city": "26122 Oldenburg" }
  105. 105. Microservices maßgeschneidert | Arne Limburg MAGNANIMOUS WRITER PATTERN Server schickt { street: { "name": "Poststraße", "streetName": "Poststraße", "number": "1", "houseNumber": "1“ }... } http://www.example.com/addresses/42 Client erwartet { street: { "name": "Poststraße", "number": "1", }... } http://tenderware.blogspot.de/2011/05/magnanimous-writer.html
  106. 106. Microservices maßgeschneidert | Arne Limburg MAGNANIMOUS WRITER PATTERN Server schickt { street: { "name": "Poststraße", "streetName": "Poststraße", "number": "1", "houseNumber": "1“ }... } http://www.example.com/addresses/42 Client erwartet { street: { "streetName": "Poststraße", "houseNumber": "1", }... } http://tenderware.blogspot.de/2011/05/magnanimous-writer.html
  107. 107. Microservices maßgeschneidert | Arne Limburg MAGNANIMOUS WRITER PATTERN Server erwartet PUT http://www.example.com/addresses/42 Client schickt { street: { "name": "Poststraße", "number": "1", }... } http://tenderware.blogspot.de/2011/05/magnanimous-writer.html „Be conservative in what you do, Be liberal in what you expect“ Postels Law (John Postel)
  108. 108. Microservices maßgeschneidert | Arne Limburg MAGNANIMOUS WRITER PATTERN PUT http://www.example.com/addresses/42 Client schickt { street: { "name": "Poststraße", "number": "1", }... } http://tenderware.blogspot.de/2011/05/magnanimous-writer.html Server erwartet { street: { "name": "Poststraße", "streetName": "Poststraße", "number": "1", "houseNumber": "1“ }... } oder oder
  109. 109. Microservices maßgeschneidert | Arne Limburg MAGNANIMOUS WRITER PATTERN PUT http://www.example.com/addresses/42 Client schickt { street: { "streetName": "Poststraße", "houseNumber": "1", }... } http://tenderware.blogspot.de/2011/05/magnanimous-writer.html Server erwartet { street: { "name": "Poststraße", "streetName": "Poststraße", "number": "1", "houseNumber": "1“ }... } oder oder
  110. 110. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT http://www.example.com/addresses/42 àZusammenführen und Teilen von Attributen { street: { ... "streetName": "Poststraße", "houseNumber": "1", "addressLine1": "Poststraße 1", } ... }
  111. 111. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT http://www.example.com/addresses/42 àHerausforderungen: Zusammenführen von Attributen { street: { ... "streetName": "Poststraße", "houseNumber": "1", "addressLine1": "Poststraße 1", } ... }
  112. 112. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT http://www.example.com/addresses/42 àHerausforderungen: Teilen von Attributen { street: { ... "addressLine1": "Poststraße 1", } "city": "26122 Oldenburg", "zipCode": "26122", "cityName": "Oldenburg" }
  113. 113. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT http://www.example.com/addresses/42 àHerausforderungen: Ebene von Attributen ändern { street: { ... "addressLine1": "Poststraße 1" } "addressLine1": "Poststraße 1", ... }
  114. 114. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT http://www.example.com/addresses/42 àHerausforderungen: Ebene von Attributen ändern { ... "zipCode": "26122", "cityName": "Oldenburg", "location": { "zipCode": "26122", "cityName": "Oldenburg" } }
  115. 115. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT http://www.example.com/addresses/42 àHerausforderungen: Ebene von Attributen ändern { ... "zipCode": "26122", "cityName": "Oldenburg", "location": { "zipCode": "26122", "cityName": "Oldenburg" } } Bei jeder Modelländerung muss eine Migrationsstrategie einbezogen werden!
  116. 116. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT { street: { "name": "Poststraße", "streetName": "Poststraße", "number": "1", "houseNumber": "1", "addressLine1": "Post... 1", "addressLine2": "" } "addressLine1": "Poststraße 1", "addressLine2": "", "city": "26122 Oldenburg", "zipCode": "26122", "cityName": "Oldenburg", "location": { "zipCode": "26122", "cityName": "Oldenburg" } } http://www.example.com/v1/addresses/42 àBisher nur abwärtskompatible Änderungen
  117. 117. Microservices maßgeschneidert | Arne Limburg ABWÄRTSKOMPATIBILITÄT { street: { "name": "Poststraße", "streetName": "Poststraße", "number": "1", "houseNumber": "1", "addressLine1": "Post... 1", "addressLine2": "" } "addressLine1": "Poststraße 1", "addressLine2": "", "city": "26122 Oldenburg", "zipCode": "26122", "cityName": "Oldenburg", "location": { "zipCode": "26122", "cityName": "Oldenburg" } } http://www.example.com/v1/addresses/42 àViele Attribute deprecated
  118. 118. Microservices maßgeschneidert | Arne Limburg VERSIONSSPRUNG { street: { "name": "Poststraße", "streetName": "Poststraße", "number": "1", "houseNumber": "1", "addressLine1": "Post... 1", "addressLine2": "" } "addressLine1": "Poststraße 1", "addressLine2": "", "city": "26122 Oldenburg", "zipCode": "26122", "cityName": "Oldenburg", "location": { "zipCode": "26122", "cityName": "Oldenburg" } } http://www.example.com/v1/addresses/42 àBisher nur abwärtskompatible Änderungen
  119. 119. Microservices maßgeschneidert | Arne Limburg INKOMPATIBLE ÄNDERUNG http://www.example.com/v2/addresses/42 àVersionssprung { "addressLine1": "Poststraße 1", "addressLine2": "", "location": { "zipCode": "26122", "cityName": "Oldenburg" } }
  120. 120. Microservices maßgeschneidert | Arne Limburg Parallele Versionen – via Services
  121. 121. Microservices maßgeschneidert | Arne Limburg Parallele Versionen – via Services
  122. 122. Microservices maßgeschneidert | Arne Limburg Parallele Versionen – via Services
  123. 123. Microservices maßgeschneidert | Arne Limburg Parallele Versionen – via Endpoints
  124. 124. Microservices maßgeschneidert | Arne Limburg Parallele Versionen – via Endpoints
  125. 125. Microservices maßgeschneidert | Arne Limburg Parallele Versionen – via Endpoints
  126. 126. Microservices maßgeschneidert | Arne Limburg DOMÄNENMODELL ALS API Schnittstelle Schnittstelle { street: { "name": "Poststraße", "streetName": "Poststraße", "number": "1", "houseNumber": "1", "addressLine1": "Post... 1", "addressLine2": "" } "addressLine1": "Poststraße 1", "addressLine2": "", "city": "26122 Oldenburg", "zipCode": "26122", "cityName": "Oldenburg", "location": { "zipCode": "26122", "cityName": "Oldenburg" } } { "addressLine1": "Poststraße 1", "addressLine2": "“, "location": { "zipCode": "26122", "cityName": "Oldenburg" } } V1 V2-SNAPSHOT
  127. 127. Microservices maßgeschneidert | Arne Limburg DOMÄNENMODELL ALS API Schnittstelle Schnittstelle { street: { "name": "Poststraße", "streetName": "Poststraße", "number": "1", "houseNumber": "1", "addressLine1": "Post... 1", "addressLine2": "" } ... } { "addressLine1": "Poststraße 1", "addressLine2": "“, "city": { "zipCode": "26122", "cityName": "Oldenburg" } } V1 V3-SNAPSHOT Schnittstelle { "addressLine1": "Poststraße 1", "addressLine2": "“, "location": { "zipCode": "26122", "cityName": "Oldenburg" }, "city": { "zipCode": "26122", "cityName": "Oldenburg" }} V2
  128. 128. • Über URL-Pfad /v2/addresses • Über Query-Parameter /addresses?version=v2 • Über Version-Header X-Api-Version: v2 • Über Version-Attribut am Media-Type application/xml;version=v2 • Über Media-Type application/vnd.de.openknowledge+v2+json ERMITTELN DER VERSION Microservices maßgeschneidert | Arne Limburg
  129. 129. • Umbennen von Ressourcen àHttp-Status-Code 301 „Moved Permanently“ • Semantische Änderung von Attributen àAnderen Namen vergeben • Neue Version hat anderes Verhalten àNeue Schnittstelle • PUT zum Setzen leerer Attribute àUnterscheidung zwischen nicht vorhanden und empty WEITERE HERAUSFORDERUNGEN Microservices maßgeschneidert | Arne Limburg
  130. 130. Microservices maßgeschneidert | Arne Limburg Schnittstellenversionierung Klare Versionierungsstrategie Mehrere Versionen parallel Definiertes Versionsschema Über Custom Header Über Media-Type Über die URL
  131. 131. Microservices maßgeschneidert | Arne Limburg Schneiden des User Interfaces
  132. 132. Microservices maßgeschneidert | Arne Limburg Seperate UIs
  133. 133. Microservices maßgeschneidert | Arne Limburg API Composition
  134. 134. Microservices maßgeschneidert | Arne Limburg API Gateway
  135. 135. Microservices maßgeschneidert | Arne Limburg Backends for Frontends
  136. 136. Microservices maßgeschneidert | Arne Limburg UI Fragment Composition
  137. 137. Microservices maßgeschneidert | Arne Limburg Fazit Es kommt nicht auf die Größe an Orientierung an Use Cases Minimierung der Kommunikation Gemeinsames Verständnis für Fachlichkeit Modellierung der Core Domain Context Map Explizites Leben der Schnittstellen Versionierung Compensation
  138. 138. Microservices maßgeschneidert | Arne Limburg FRAGEN ? ? ?
  139. 139. KONTAKT Microservices maßgeschneidert | Arne Limburg Arne Limburg, Enterprise 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

×