Тёмный

Czym jest AGREGAT w DDD? 

DevMentors
Подписаться 7 тыс.
Просмотров 8 тыс.
50% 1

🔗 Kurs "Domain-Driven Design: Pragmatycznie" znajdziecie tutaj: domain-driven-design.net
💻 Link do repo najnowszego kursu: domain-driven-design.net/repo
✍ Link do boarda naszego kursu: domain-driven-design.net/miro
Potrzebowaliśmy trochę kontekstu (patrz poprzedni materiał), by móc w końcu przedstawić Wam chyba najmniej zrozumiany wzorzec taktycznego DDD - agregat.
🛒 W tym materiale kontynuujemy naszą pracę nad domeną znanego, polskiego sklepu z elektroniką użytkową i mierzymy się z najtrudniejszym z trzech wymagań, które sobie postawiliśmy.
💡 Dowiecie się jak radzić sobie z wymaganiami, które rozciągają się na większą liczbę obiektów i zawierają w sobie aspekt czasu. Zobaczycie oczywiście zarówno te lepsze jak i gorsze rozwiązania wraz z naszym komentarzem (z którym możecie się ofc nie zgadzać 😉).
👨‍💻 Tak jak poprzednio, kolejne iteracje rozwiązywanego przez nas problemu znajdziecie na naszym GitHubie: github.com/devmentors/ddd-bui...
⏱ TIMECODES:
00:00:00 Intro
00:00:16 Wstęp i przypomnienie dziedziny problemowej
00:02:33 Dlaczego agregat to błędnie rozumiany wzorzec?
00:07:09 Agregat jako graf obiektów bez kontekstu problemu
00:15:39 Enkapsulacja agregatu, publiczne API i Hyrum's Law
00:20:31 Zawężenie granic agregatu - aspekt czasu
00:26:07 Czym faktycznie jest agregat?
00:35:25 Nadmiarne zawężenie granic agregatu - problem zapisu dwóch agregatów na raz
00:43:04 Reguły spójne natychmiast - ale czy na pewno?
00:58:40 Kurs Domain-Driven Design - czego możecie się spodziewać + presale
01:04:55 Podsumowanie
Zapraszamy również na:
⚡️ Discord: devmentors.io/discord-pl
⚡️ Instagram: / devmentors_pl
⚡️ TikTok: / devmentors
⚡️ Twitter: / dev_mentors_pl
#domaindrivendesign
#programowanie
#programming
#ddd
#refactoring
#architektura
#software
#dotnet #java #javascript #python #php #ruby #rust #golang

Опубликовано:

 

1 авг 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 28   
@oddtakeda1235
@oddtakeda1235 Год назад
Prosiłbym jak najwięcej o DDD strategicznym. Przykładowe sesje event stormingu np albo innych metodyk
@MaciekKorzeniewski
@MaciekKorzeniewski Год назад
Tak miło się ogląda 😎, że aż naszły mnie dwie refleksje: 1. To teraz zróbcie to samo tylko z Event Sourcingiem 🤪 2. Przydałby się odcinek pt. "Jak rozmawiać z biznesem". U mnie w firmie niestety nie ma nawyku zrozumienia domeny, ani przez architekta, ani czasami przez sam biznes. I nawet jak programiści ogarniają DDD, to co z tego, skoro osoby decyzyjne (architekci, BAs, POs) nawet nie wiedzą o czym programiści mówią.😅 zróbcie, byle działało, a kontekstem to kto by się przejmował 🤦‍♂️
@DevMentorsPL
@DevMentorsPL Год назад
Dzięki! 1) Może kiedyś się pojawi z bardziej kompetentnym gościem niż my ;) 2) O samej komunikacji będzie wydzielona sekcja w kursie, choć zagaimy o to też w materiale na YT, który wpadnie najprawdopodobniej w przyszłym tygodniu :P
@michalrw5713
@michalrw5713 Год назад
korpo tak mają :) cza z tym żyć
@wegrzyn-yj2um
@wegrzyn-yj2um 5 месяцев назад
Moim zdaniem to w ogóle pomylenie porządków że to programiści ogarniają DDD a nie BA czy też analitycy systemowi - programiści to powinni mieć podane na tacy przez analityków.
@technics6215
@technics6215 Год назад
ok. 12:00 A w ogóle to dlaczego zostało to zaprojektowane tak, że jest "zahardcodowana" stała w postaci kwartału? Czy gdybym zaprojektował jakiś mechanizm pozwalający na ustawienie limitu ilości X w jakimś czasie T dla produktu to było by to uznane za niepotrzebną pracę / został bym posądzony o robienie rzeczy o które biznes nie prosił? Jak to jest w firmach w których pracujecie?
@technics6215
@technics6215 Год назад
45:00 W przypadku limitu zakupu produktu x na kwartał jest to niby niezmiennik, ale świat się nie zawali jeżeli ktoś w ciągu tych 5ms zrobi jednocześnie dwa zamówienia, i kupi 2 szt produktu. Wg. mnie dyskusja na temat czasu trwania zapisu zamówienia nie ma sensu, bo jej wynik i tak nie jest jednoznaczny (otrzymujemy większe lub mniejsze niezerowe prawdopodobieństwo). Moim zdaniem bardziej zasadna była by dyskusja (najlepiej z biznesem/inwestorem) jak bardzo krytyczna/twarda jest ta reguła. Teoretycznie można tą regułę obejść kupując drugi egzemplarz podając dane babci i poświęcanie kilku godzin z życia programisty żeby zagwarantować działanie reguły, którą i tak można obejść w prosty sposób. Określenie wagi problemu czy danej reguły biznesowej jest ważna. Tak czy inaczej, tego rodzaju wyzwania czasami trzeba na prawdę traktować bardzo poważnie i umieć je ogarniać (np. stosując jakieś locki). Wasz model i ta (mimo tego bardzo dobra) seria filmów o DDD, w ogóle nie obejmuje niektórych innych problemów, np. problemu podwójnego zakupu towaru, którego jest 1 szt towaru na stanie i dwie osoby kupują go jednocześnie, a taka sytuacja chyba zdarza się w dużych e-commerce. Tak czy inaczej na pewno należy rozmawiać z biznesem o tym jak "twarde" mają być reguły biznesowe. Nie jest to system bankowy, który po prostu musi za wszelką cenę gwantować uniemożliwiać przelanie np. ostatniej złótówki dwa razy, ale oczywiście ten materiał nie jest o systemach bankowych czy finansowych w których z resztą stosuje się chyba nieco inne architektury oraz narzędzia w których locki są powszechnie stosowane i wygodne w implementacji.
@technics6215
@technics6215 Год назад
Nie rozumiem dlaczego jest tyle tłumaczenia z grafu obiektów. Wg. mnie agregat jest szczególnym rodzajem grafu obiektów, w którym jakiś obiekt jest nadrzędny (root) i tylko przez niego uzyskujemy dostęp do reszty. Coś źle rozumiem, czy po prostu tłumaczycie to w skomplikowany sposób? ;)
@kondziossj3
@kondziossj3 Год назад
@DevMentors Bedzie pre-sale w bundle?
@DevMentorsPL
@DevMentorsPL Год назад
Dopiero gdy kurs będzie w regularnej sprzedaży
@kondziossj3
@kondziossj3 Год назад
​@@DevMentorsPL Wiesz może jaka będzie cena w pakiecie wszystko bez `SOLIDne WebApi` ? :D
@kaczaczacza
@kaczaczacza Год назад
Co to za skin do Ridera? :)
@DevMentorsPL
@DevMentorsPL Год назад
Jest wrzucony na naszego discorda ;)
@Stormin4051
@Stormin4051 Год назад
Czy trzecia reguła nie powinna być już jakoś sprawdzana na poziomie koszyka/checkout'u? Przedstawiona implementacja pozwala na dodanie 2 sztuk limitowanego produktu do koszyka, gdzie teoretycznie z góry wiadomo, że to nie przejdzie. Z punktu widzenia klienta przy tak oczywistym przypadku lepiej byłoby chyba od razu dostać informację zwrotną niż przechodzić przez cały proces checkout'u lub nawet dalej do płatności w przypadku gdzie 3cia reguła jest sprawdzana asynchronicznie.
@michawilczynski4992
@michawilczynski4992 Год назад
Mówisz tylko o natychmiast dostepnej informacji - tej, która zawiera się w ramach koszyka. 🤔 Przypadku gdy dodasz jeden limitowany produkt do koszyka, który kupiłeś już w tym kwartale (zrealizowane zamowienie) w ramach koszyka nie "zamkniesz". 😅 Oczywiście można argumentować, że dla tak prostego przypadku nie ma co się bawić w takie podejście i jest to poniekąd prawda (trochę spróbujemy tego dotknac w jednym z kolejnych materialow) ale i ból materiałów na YT - zauważ że dochodziliśmy do tego case'u prawie 2h (a jest to naprawdę najkrótsza możliwa ścieżka jaka daliśmy radę nagrać). Pokazanie trudniejszego przypadku wymagałoby jeszcze szerszego zarysowania kontekstu, co by po prostu wszystkich zniechęciło. 😞 Jedyne co pozostaje mi polecić, to spróbować przełożyć te założenia na większy system i bardziej złożony proces, najlepiej taki, nad którym pracujemy na codzień. Wtedy pewnie benefity będą bardziej widoczne, ofc nie w każdym przypadku. 😉 /Michau
@Stormin4051
@Stormin4051 Год назад
@@michawilczynski4992 Właśnie wiem, że przypadku z dodaniem jednego limitowanego produktu, który zakupiłem w danym kwartale w ramach koszyka sensownie nie zamknę. Stąd właśnie moje pytanie bo teoretycznie wariant, że ktoś doda 2 limitowane produkty w ramach jednego koszyka pewnie w praktyce wydarzy się częściej. Jest to dość ciekawy przypadek i zastanawiam się jak można by przemodelować agregaty żeby to sensownie obsłużyć. Z drugiej strony pewnie w przypadku realnej aplikacji sprawdzenie na poziomie dodawania do koszyka zrobiłbym po stronie frontendu czym uzyskałbym ten lepszy user experience
@deenayd8271
@deenayd8271 Месяц назад
"Przedstawiona implementacja pozwala na dodanie 2 sztuk limitowanego produktu do koszyka, gdzie teoretycznie z góry wiadomo, że to nie przejdzie" Akurat przedstawiona implementacja sprawi, że jeśli do jednego zamówienia dodasz 2 (lub więcej) sztuk jednego produktu (choćby limitowanego) to to przejdzie. Nie tylko przez weryfikację na poziomie koszyka, ale również na poziomie agregatu. Jedynym warunkiem jest, by te kolejne sztuki dodać jako kolejne pozycje w koszyku, a nie jako wiele sztuk. Czyli dodajesz 10 razy po 1 sztuce PSP i tyle.
@mm_ichu
@mm_ichu Год назад
W jakim języku jest kurs? Wydaję mi się, ze po polsku, ale wolę dopytać 😀
@DevMentorsPL
@DevMentorsPL Год назад
PL 😉
@jakubsobczuk9744
@jakubsobczuk9744 2 месяца назад
Podbijam do pytania. O ile komuś kto juz kodzi to w miarę łatwo to wszystko zrozumieć i ogólnie widzę w tym dużo b.fajnych treści, to trochę współczuję początkującym :D
@rajkonkret
@rajkonkret 6 месяцев назад
rozumiem, ze w 2024 promocji nie ma?:)
@DevMentorsPL
@DevMentorsPL 6 месяцев назад
W najblizszym czasie powinna byc szansa na kolejna promke wraz z mozliwoscia przetestowania nowej wiedzy w boju. 😉
@carlm8148
@carlm8148 9 месяцев назад
Dla mnie to całe DDD to komplikowanie życia, jechanie po performance i wynikająca z tego mniejsza satysfakcja klienta. Filozofowanie nad problemami z grupy not rocket science. Ale może kiedyś zmienię zdanie 😊
@DevMentorsPL
@DevMentorsPL 9 месяцев назад
To znaczy, że nie rozumiesz istoty tego podejścia 😉
@JW-gm6wr
@JW-gm6wr 3 месяца назад
Hehe 'jak krytykujesz to nie rozumiesz' :) mi generalnie DDD nie przeszkadza, ale osobiscie uwazam ze pare rzeczy w nim jest durnowate, i nie warto go na slepo stosowac. Plus z czegos trzeba te magisterki pisac.
@SzPanlis
@SzPanlis Год назад
Pierwszy? 🙂
@DevMentorsPL
@DevMentorsPL Год назад
Przed 301 #pdk :D
@adrian_franczak
@adrian_franczak Год назад
Halo halo nawet bardziej doświadczone osoby nie maja ochoty czytać kilku tysięczników XD
Далее
DDD to nie tylko Event Storming!
58:40
Просмотров 3,1 тыс.
🌊🌊🌊
01:01
Просмотров 924 тыс.
КАК Я ЭТО СДЕЛАЛА?
00:13
Просмотров 423 тыс.
Dlaczego nie lubimy DZIEDZICZENIA?
1:40:40
Просмотров 6 тыс.
Mój problem z Domain-Driven Design...
33:14
Просмотров 10 тыс.
Jak kompleksowo testować Web API z infrastrukturą?
1:07:44
Idempotentność API
55:11
Просмотров 3,6 тыс.
10 lat mojego DDD w 30 minut + Q&A - Andrzej Krzywda
1:23:58
20 Konceptów DevOps które musisz znać
18:17
Просмотров 26 тыс.
🌊🌊🌊
01:01
Просмотров 924 тыс.