microservices und domain-driven design - Digicomp 2017-10-24¢  Microservices im Zusammenspiel mit Domain-driven

  • View
    3

  • Download
    0

Embed Size (px)

Text of microservices und domain-driven design - Digicomp 2017-10-24¢  Microservices im...

  • Microservices im Zusammenspiel mit

    Domain-driven Design -

    Digicomp DevDay 2017

    Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch

    Arif Chughtai

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 2

    Referent

     Arif Chughtai

     IT-Consultant (Beratung, Schulung, Entwicklung)

     mail@arifchughtai.org

     http://www.arifchughtai.org

     Nicole Rauch

     Softwareentwicklung & Entwicklungscoaching

     info@nicole-rauch.de

     @NicoleRauch

     http://www.nicole-rauch.de

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 3

    Inhalt

     Microservices Einordnung

     Domain-driven Desing (DDD) Einordnung

     Microservices mit DDD

     Ressourcen

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 4

    Microservices Einordnung

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 5

    Microservices Einordnung

     Ansatz für Software-Entwicklung und -produktion

     Zweck: Modularisierung von Software

     Vieles nicht neu!

     Evolution der IT zur Serviceorientierung

    Bits&Bytes Bits&Bytes Bits&Bytes Bits&Bytes Bits&Bytes

    SA/D SA/D SA/D SA/D

    OOA/D OOA/D OOA/D

    CBD CBD

    Bits&Bytes

    SA/D

    OOA/D

    CBD

    DDD DDD

    SO

    Evolution der

    Paradigmen

    Evolution von Anwendungen und Technologie

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 6

    Microservices Einordnung

     Neu: Modularisierung auch zur Produktionszeit

     Unabhängiges Deployment statt Deployment- Monolithen

    Modul 2

    Modul 1 Modul 3

    Modul 2

    Modul 1 Modul 3

    Modul 2

    Modul 1 Modul 3

    Entwicklungszeit Produktions-/Laufzeit

    Deployment

    Deployment

    verantwortlich verantwortlich

    verantwortlich

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 7

    Microservices Einordnung

     Grund: Notwendigkeit für Industrialisierung der Software-Produktion (DevOps)

     Komplexe IT-Landschaften

     Komplexe Anforderungen

     Schnelle Umsetzung von Anforderungen/Innovationen

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 8

    Microservices Einordnung

     Hypephase, Entwicklung ist im Fluss

     Haupteigenschaften

     Lose gekoppelt

     Strikte Trennung über Schnittstellen

     Nach Fachlichkeit getrennte Entwicklung / unabhängige Teams

     "Unabhängiges" Deployment

     "Unabhängig" skalierbar

     Eigener Technologiestack

     Ersetzbar

     Robust

     Verteiltes System

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 9

    Microservices Einordnung

     Fachliche oder technische Verantwortlichkeit

     Granulariät

     Kleinere ("Wegwerf"-Software, Nano-Services)

     Einzelne Funktionen/Operationen (z.B. Online-Marketing)

     Grössere (Reuse von Software)

     Geschäftsfunktionalitäten (Netflix)

     Self-Contained Systems (Integration von Webcontent)

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 10

    Microservices Einordnung Herausforderungen/Tradeoffs

     Unabhängigkeit der Teams

     Deployment und Test

     Modularisierung

     Ersetzbarkeit

     Organisationsstrukturen

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 11

    Microservices Einordnung Kontext

    Business

    Applikationen

    Microservices

    InfrastrukturD ev

    O ps

    ( C

    I/C D

    )

    IT

    Strategie / Abforderungen

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 12

    DDD Einordnung

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 13

    DDD Einordnung

     DDD ist mehr als eine Sammlung von Patterns etc.

     Denkschule

     Bringt Ordnung in Konzepte und Techniken der Software-Entwicklung

     Setzt diese in fachlichen Kontext

     Etabliert Vokabular

    DDD

    Strategisches Design

    Taktisches Design

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 14

    DDD Einordnung Ziele

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 15

    DDD Einordnung Ziele

     Tiefes Verständnis der Domäne

     Reduzierte Komplexität

     Besserer Business-Nutzen von Software (IT-Business-Alignment)

     Technik (IT) folgt Domäne

     Geschmeidige Software

     Lose Kopplung, hohe Kohäsion, wenig Redundanz

     Separation of Concerns

     Bessere Flexibilität und Wartbarkeit

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 16

    DDD Einordnung Voraussetzungen für DDD

     Fachkompetenz

     Zusammenarbeit zwischen Domänenexperten und Entwicklern

     Lernbereitschaft aller Beteiligten

     Domäne ist ausreichend kompliziert

     Iteratives Vorgehen bei Modellierung und Implementierung

     Refactoring / Evolutionäre Entwicklung

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 17

    Microservices mit DDD

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 18

    Microservices mit DDD

     Modularisierung muss organisiert werden

     Modularisierung muss zweckmässig sein

     Modularisierung alleine genügt nicht... was ist mit

     Verständnis für Domäne?

     Modell

     Gemeinsame Sprache von Fachbereich und IT

     Architektur?

     Trennung von Domäne und Technik?

     Wartbarkeit?

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 19

    Microservices mit DDD

     DDD macht Domänen handhabbar

     DDD liefert Mittel für (zweckmässige!) "Zerlegung", Entwicklung und Wartung von Software

     Microservices erfordern fachliches "Zerlegen" einer Software

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 20

    Microservices mit DDD

    DDD

    Strategisches Design - Ubiquitous Language - Domainmodel - Bounded Context - Context Map - Makro-Design - ...

    Taktisches Design - Value Object - Entity - Aggregate - Repository - Factory - ...

    Microservice

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 21

    Microservices mit DDD DDD-Mittel für Microservices

     Granularität von Microservices

     Knowledge Crunching

     Ubiquitous Language (gemeinsame Sprache)

     Domain Model (Domänenmodell)

     Destillation

     Subdomain

     Core Domain

     Supporting Domain

     Generic Domain

     ...

     Bounded Context

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 22

    Microservices mit DDD DDD-Mittel für Microservices

     Abhängigkeiten zwischen Microservices

     Context Map

     Innerer Aufbau von Microservices

     Internal Building Blocks (Taktisches Design)

     ...

     Evolution von Microservices

     Evolving Order

     Responsibility Layer

     ...

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 23

    Microservices mit DDD Problemraum/Lösungsraum

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 24

    Microservices mit DDD Knowledge Crunching

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 25

    Microservices mit DDD Domain , Bounded Context, Context Map,...

    Problemraum

    Lösungsraum

    Domain

    Subdomain

    Bounded Context

    Microservice

    Context MapUbiquitous

    Language

    Domainmodel

    umfasst 1..n

    hergeleitet von

    umfasst

    beschreibt Interaktionen

    Kontext für 1..n

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 26

    Microservices mit DDD Ubiquitous Language

  • Microservices und Domain-driven Design | © Arif Chu ghtai / Nicole Rauch | 23/10/2017 | 27

    Microservices mit DDD Domänenmodell

     Was: Herausdestillieren der Domäne

     Warum:

     Zum Entwickeln eines Verständnisses für die Fachlichkeit

     Zum Schließen von Wissenslücken