P&A + DDD + CQRS – Łukasz Szydło – Notatka z nauki

przez | 11 kwietnia, 2021
P&A + DDD + CQRS: https://www.pexels.com/photo/person-typing-on-computer-keyboard-2058128/

Co może powstać z połączenia: P&A + DDD + CQRS? Opowiedział o tym Łukasz Szydło w materiale: Boiling Frogs 2017 – Łukasz Szydło – P&A + DDD + CQRS = 00.

W ramach rozwijania się oglądam i czytam różne materiały. Następnie wiedzę z nich umieszczam w Anki oraz w notatkach i uzupełniam własnymi przemyśleniami.

Notatka z materiału Boiling Frogs 2017 – Łukasz Szydło – P&A + DDD + CQRS = 00

Zanotowałem z tego materiału:

  • Systemy:
    • Płytki  – można logikę wyspecyfikować za pomocą interfejsu – logikę działania można zrozumieć, patrząc na interfejs (np. blog).
    • Głęboki – logika stojąca za interfejsem jest bardzo skomplikowana (np. wyszukiwarka Google).
  • Najpierw należy pokryć testami 100% logiki biznesowej.
  • Zależności dwukierunkowe utrudniają testowanie. Rozwiązania:
    • Odwrócenie zależności.
    • Przesunięcie interfejsów do domeny biznesowej.
    • Interfejsy mają korzystać z encji z domeny biznesowej.
    • Kierunek: architektura portów i adapterów.
  • Duża liczba geterów i seterów:
    • Obiekty są zbyt anemiczne.
    • CQRS:
      • Odczyty są bezpieczne, a zapisy nie są bezpieczne.
      • Zapisy są cache’walne.
      • Odczytywane jest wiele wpisów, a edytowany jeden.
      • Zazwyczaj więcej jest odczytów niż zapisów.
      • Zapisy są bardziej skomplikowane niż odczyty.
      • Robić różne obiekty encji na zapisy i odczyty.
  • Cały system nie musi mieć identycznej architektury. Zapisy mogą mieć inną architekturę niż odczyty.
  • Rób bardzo wyspecjalizowane klasy. W różnych kontekstach Użytkownik jest kimś innym. Klasy muszą być jednoznaczne. Stosuj Bounded Contexty.
  • Twoja architektura to może być wiele małych heksagonali.

Wszystkie posty związane z notatkami z nauki.

Źródła

Bestseller dnia w księgarni Złote Myśli

Obraz główny

Materiał Boiling Frogs 2017 – Łukasz Szydło – P&A + DDD + CQRS = 00

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *