Opis

Zadanie rekrutacyjne dla Cobiro. API z jednym endpointem umożlwiającym dodanie produktu.


Todo:

  • Brakuje implementacji interfejsu HTTP w laravelu.
  • Nie są zaimplementowane interfejsy do zapisu/odczytu danych.

Zastosowano

  • Separacje modułów zapisu i odczytu
  • Użycie fasady jako API modułu w modularnym monolicie
  • Laravel jako framework w którym obecnie moduły są zaimplementowane
  • Podejście ATDD

Założenia

  • API na 3. (level 2) poziomie dojrzałości w modelu Richardsona.
  • W ramach uproszczenia storage InMemory
  • Nie rozważamy jak zaimplementować pieniądze. Sprowadzamy do inta.

Krótki komentarz

Podejście znane z CQRSa czyli odspearowanie modułów zapisu/odczytu pozwala na uzycie dowolnej technologii zapisu.

Nie skorzystałem z Event Sourcingu ponieważ w tym wypadku nie widzę zalet z nakladu pracy który wymaga, być może gdyby pojawiła się inna domena chciałbym z takiego rodzaju komunikacji między modułami skorzystać.

CQRS z Event Sourcingiem uważam za duże narzędzie z wysokim stopniem skomplikowania. Dodatkowo moduł na tym etapie wygląda na CRUDa i tak zapewne w taki sposób bym je implementował. Ewentualnie, gdyby pojawiła się jakaś logika biznesowa w tym miejscu, spórobwałbym ją wynieść do innego modułu, a obecnego CRUDa wykorzystał jak taki system do zarządzania deskryptorami produktów.

Chcę też skonforntować już rozwiązanie i zapoznać się z komentarzem i sugestiami.